Last active
August 14, 2025 10:49
-
-
Save laGameTV/0132bd4e73e54f53452048c14594bd9b to your computer and use it in GitHub Desktop.
Deploy Pelican Panel in Dokploy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| TIMEZONE=Europe/Berlin | |
| # Panel | |
| # PANEL_DEBUG=false | |
| # PANEL_ENV=production | |
| # PANEL_LOCALE=en | |
| PANEL_EMAIL=pelican@example.org # Needs to be changed. | |
| PANEL_URL_SCHEME=https # Needs to be changed. | |
| PANEL_URL=pelican.example.org # Needs to be changed. | |
| # PostgreSQL | |
| DATABASE_NAME=panel | |
| DATABASE_USER=pelican | |
| DATABASE_PASS=CHANGEME # Needs to be changed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Mount File as Volume via the "Advanced"-Tab -> Volumes -> Add Volume | |
| { | |
| admin off | |
| servers { | |
| trusted_proxies static 172.18.0.0 | |
| } | |
| } | |
| :80 { | |
| root * /var/www/html/public | |
| encode gzip | |
| php_fastcgi 127.0.0.1:9000 { | |
| # Change max upload file size here: | |
| env PHP_VALUE "upload_max_filesize = 256M | |
| post_max_size = 256M" | |
| } | |
| file_server | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| services: | |
| pelican-panel: | |
| image: ghcr.io/pelican-dev/panel:latest | |
| restart: unless-stopped | |
| depends_on: | |
| - pelican-database | |
| - pelican-redis | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost/up"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 20s | |
| networks: | |
| - default | |
| - pelican | |
| extra_hosts: | |
| - "host.docker.internal:host-gateway" | |
| volumes: | |
| - pelican-data:/pelican-data | |
| - pelican-logs:/var/www/html/storage/logs | |
| - ../files/Caddyfile:/etc/caddy/Caddyfile | |
| environment: | |
| XDG_DATA_HOME: /pelican-data | |
| APP_TIMEZONE: $TIMEZONE | |
| APP_URL: ${PANEL_URL_SCHEME:-https}://${PANEL_URL} | |
| APP_DEBUG: ${PANEL_DEBUG:-false} | |
| APP_ENV: ${PANEL_ENV:-production} | |
| APP_LOCALE: ${PANEL_LOCALE:-en} | |
| ADMIN_EMAIL: ${PANEL_EMAIL} | |
| DB_CONNECTION: pgsql | |
| DB_HOST: pelican-database | |
| DB_PORT: 5432 | |
| DB_DATABASE: ${DATABASE_NAME:-panel} # Doesn't seem to Auto-Fill yet. | |
| DB_USERNAME: ${DATABASE_USER:-pelican} # Doesn't seem to Auto-Fill yet. | |
| DB_PASSWORD: ${DATABASE_PASS} # Doesn't seem to Auto-Fill yet. | |
| REDIS_HOST: pelican-redis | |
| REDIS_PORT: 6379 | |
| CACHE_STORE: redis | |
| SESSION_DRIVER: redis | |
| QUEUE_CONNECTION: redis | |
| pelican-database: | |
| image: postgres:latest | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| start_period: 10s | |
| networks: | |
| - pelican | |
| volumes: | |
| - pelican-database:/var/lib/postgresql/data | |
| environment: | |
| POSTGRES_DB: ${DATABASE_NAME:-pelican} | |
| POSTGRES_USER: ${DATABASE_USER:-pelican} | |
| POSTGRES_PASSWORD: ${DATABASE_PASS} | |
| pelican-redis: | |
| image: redis:latest | |
| restart: unless-stopped | |
| networks: | |
| - pelican | |
| volumes: | |
| - pelican-redis:/data | |
| volumes: | |
| pelican-database: | |
| pelican-redis: | |
| pelican-data: | |
| pelican-logs: | |
| networks: | |
| default: | |
| ipam: | |
| config: | |
| - subnet: 172.20.0.0/16 | |
| pelican: |
Author
Thanks for the addition!
Author
I haven't added this yet but I also got wings running aswell using another compose:
services:
wings:
image: ghcr.io/pelican-dev/wings:latest
restart: always
networks:
- wings0
ports:
# - "8080:8080"
- "2022:2022"
tty: true
environment:
TZ: "UTC"
WINGS_UID: 988
WINGS_GID: 988
WINGS_USERNAME: pelican
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/var/lib/docker/containers/:/var/lib/docker/containers/"
- "/etc/pelican/:/etc/pelican/"
- "/var/lib/pelican/:/var/lib/pelican/"
- "/var/log/pelican/:/var/log/pelican/"
- "/tmp/pelican/:/tmp/pelican/"
- "/etc/ssl/certs:/etc/ssl/certs:ro"
# you may need /srv/daemon-data if you are upgrading from an old daemon
#- "/srv/daemon-data/:/srv/daemon-data/"
# Required for ssl if you use let's encrypt. uncomment to use.
#- "/etc/letsencrypt/:/etc/letsencrypt/"
networks:
wings0:
name: wings0
driver: bridge
ipam:
config:
- subnet: "172.25.0.0/16"
driver_opts:
com.docker.network.bridge.name: wings0awesome! I’m struggling to get a working SSL certificate though. I assume I should be pointing the Dokoloy domain to port 80 and activating Letsencrypt right ? given the Caddyfile lacks a way to acquire one (unless your Dokoloy instance utilizes Caddy!) or am I way off 😭
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment


Note for people who also try this:
Unlike Pterodactyl, you need to setup pelican on https://yourdomain.xyz/installer
When you have a error while deploying with docker subnet, change the subnet on line 79 to something different like
172.40.0.0/16.When you always have a error on the installer, remove every environment on the panel except APP_TIMEZONE, APP_URL. You can also remove them, but I let them.