Frontend is unreachable while self hosting

Hi,
I’m trying to self host Penpot on my home server using Docker guide and a Caddy server.

My docker-compose.yml file:

---
version: "3.5"

networks:
  penpot:

volumes:
  penpot_postgres_v15:
  penpot_assets:

services:

  penpot-frontend:
    image: "penpotapp/frontend:latest"
    restart: always
    ports:
      - 9001:80

    volumes:
      - penpot_assets:/opt/data/assets

    depends_on:
      - penpot-backend
      - penpot-exporter

    networks:
      - penpot

    labels:
      - "traefik.enable=true"

    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password

  penpot-backend:
    image: "penpotapp/backend:latest"
    restart: always

    volumes:
      - penpot_assets:/opt/data/assets

    depends_on:
      - penpot-postgres
      - penpot-redis

    networks:
      - penpot

    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification enable-smtp enable-prepl-server

      - PENPOT_PUBLIC_URI=http://localhost:9001

      - PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
      - PENPOT_DATABASE_USERNAME=penpot
      - PENPOT_DATABASE_PASSWORD=penpot

      - PENPOT_REDIS_URI=redis://penpot-redis/0

      - PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
      - PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets

      - PENPOT_TELEMETRY_ENABLED=true

      - PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
      - PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
      - PENPOT_SMTP_HOST=penpot-mailcatch
      - PENPOT_SMTP_PORT=1025
      - PENPOT_SMTP_USERNAME=
      - PENPOT_SMTP_PASSWORD=
      - PENPOT_SMTP_TLS=false
      - PENPOT_SMTP_SSL=false

  penpot-exporter:
    image: "penpotapp/exporter:latest"
    restart: always
    networks:
      - penpot

    environment:
      - PENPOT_PUBLIC_URI=http://penpot-frontend

      ## Redis is used for the websockets notifications.
      - PENPOT_REDIS_URI=redis://penpot-redis/0

  penpot-postgres:
    image: "postgres:15"
    restart: always
    stop_signal: SIGINT

    volumes:
      - penpot_postgres_v15:/var/lib/postgresql/data

    networks:
      - penpot

    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot

  penpot-redis:
    image: redis:7
    restart: always
    networks:
      - penpot

  penpot-mailcatch:
    image: sj26/mailcatcher:latest
    restart: always
    expose:
      - '1025'
    ports:
      - "1080:1080"
    networks:
      - penpot

My Caddyfile looks like this:

{
  admin "unix//run/caddy/admin.socket"
  acme_dns cloudflare {$CF_API_TOKEN}
}

design.v1rtl.site {
  reverse_proxy :9001
}

# Import additional caddy config files in /etc/caddy/conf.d/
import /etc/caddy/conf.d/*

I have a few other entries here with reverse proxies - all work fine.

But the Penpot frontend is neither reachable through curl localhost:9001, nor through design.v1rtl.site.

These are the docker processes I have:

CONTAINER ID   IMAGE                       COMMAND                  CREATED        STATUS          PORTS                                                 NAMES
803a6546780d   penpotapp/frontend:latest   "/bin/bash /entrypoi…"   15 hours ago   Up 15 hours     0.0.0.0:9001->80/tcp, :::9001->80/tcp                 penpot-penpot-frontend-1
e2faf00bef61   penpotapp/backend:latest    "/bin/bash run.sh"       15 hours ago   Up 34 seconds                                                         penpot-penpot-backend-1
f042419da7da   postgres:15                 "docker-entrypoint.s…"   15 hours ago   Up 15 hours     5432/tcp                                              penpot-penpot-postgres-1
c63b82ed37d7   penpotapp/exporter:latest   "node app.js"            15 hours ago   Up 15 hours                                                           penpot-penpot-exporter-1
cee2041eb907   redis:7                     "docker-entrypoint.s…"   15 hours ago   Up 15 hours     6379/tcp                                              penpot-penpot-redis-1
3f9b2807299f   sj26/mailcatcher:latest     "mailcatcher --foreg…"   15 hours ago   Up 15 hours     1025/tcp, 0.0.0.0:1080->1080/tcp, :::1080->1080/tcp   penpot-penpot-mailcatch-1

I’m also using ufw as a firewall with open 80 and 443 ports:

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
9001/tcp                   ALLOW       Anywhere # Penpot frontend
80/tcp                     ALLOW       Anywhere
443 (v6)                   ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)

I haven’t set any custom PENPOT environment variables, only ran docker compose -p penpot -f docker-compose.yaml up -d. s there anything wrong with my setup?