New install but ends up with timed out loading page

May I have your suggestion as to what to poke around to resolve this issue?
I installed both vaultwarden and caddy container as per wiki documents at vaultwarden on GitHub on my Ubuntu 20.10 host. The install seems to be fine as there isn’t any error in the log that I can see.

This is the my docker-compose.yml:


services:
  bitwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden
    restart: always
    environment:
      - TZ=America/Toronto
      - EXTENDED_LOGGING='true'
      - ROCKET_PORT=8080
      - WEBSOCKET_ENABLED='true'  # Enable WebSocket notifications.
      - SIGNUPS_ALLOWED='true'
    volumes:
      - ./bw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80  # Needed for the ACME HTTP-01 challenge.
      - 443:443
    volumes:
      - ./caddy:/usr/bin/caddy  # Your custom build of Caddy. 
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      - ACME_AGREE='true'
      - DOMAIN=mydomain.duckdns.org  # Your domain.
      - EMAIL=myemail@gmail.com       # The email address to use for ACME registration.
      - DUCKDNS_TOKEN=duckdns-token         # Your Duck DNS token.
      - LOG_FILE=/data/access.log

And here is the Caddyfile:

  log {
    level INFO
    output file {$LOG_FILE} {
      roll_size 10MB
      roll_keep 10
    }
  }
  
  # Use the ACME DNS-01 challenge to get a cert for the configured domain.
  tls {
    dns lego_deprecated duckdns
  }

  # This setting may have compatibility issues with some browsers
  # (e.g., attachment downloading on Firefox). Try disabling this
  # if you encounter issues.
  encode gzip

  # Proxy everything else to Rocket
  reverse_proxy bitwarden:8080
  # Notifications redirected to the WebSocket server
  reverse_proxy /notifications/hub bitwarden:3012
}

And this the log:

|                       Starting Bitwarden_RS                        |
|                      Version 1.20.0-ced7f177                       |
|--------------------------------------------------------------------|
| This is an *unofficial* Bitwarden implementation, DO NOT use the   |
| official channels to report bugs/features, regardless of client.   |
| Send usage/configuration questions or feature requests to:         |
|   https://vaultwarden.discourse.group/                             |
| Report suspected bugs/issues in the software itself at:            |
|   https://github.com/dani-garcia/bitwarden_rs/issues/new           |
\--------------------------------------------------------------------/

FO] No .env file found.

[2021-04-29 15:40:51.068][start][INFO] Rocket has launched from http://0.0.0.0:8080
{"level":"info","ts":1619725250.859333,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins":["localhost:2019","[::1]:2019","127.0.0.1:2019"]}
{"level":"info","ts":1619725250.8598044,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc0000f03f0"}
{"level":"info","ts":1619725250.8599105,"logger":"http","msg":"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS","server_name":"srv0","https_port":443}
{"level":"info","ts":1619725250.8599393,"logger":"http","msg":"enabling automatic HTTP->HTTPS redirects","server_name":"srv0"}
{"level":"info","ts":1619725250.8613198,"logger":"http","msg":"enabling automatic TLS certificate management","domains":["mydomain.duckdns.org"]}
{"level":"info","ts":1619725250.8615675,"logger":"tls","msg":"cleaned up storage units"}
{"level":"info","ts":1619725250.8736222,"msg":"autosaved config","file":"/config/caddy/autosave.json"}
{"level":"info","ts":1619725250.8736565,"msg":"serving initial configuration"}

Besides, I’ve created port forwarding of both 80 and 443 on my router to the host machine.

But when I hit up https://mydomain.duckdns.org the browse spins a long while and finally displays “The connection has timed out”.

Can you shed lights on how to get my setup going?