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?