Skip to content

Commit c96c928

Browse files
committed
feat: traefik dokploy support
1 parent 13a6584 commit c96c928

File tree

3 files changed

+200
-15
lines changed

3 files changed

+200
-15
lines changed

pelican/docker-compose.yml

+170
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
networks:
2+
dokploy-network:
3+
external: true
4+
5+
pelican:
6+
7+
wings:
8+
name: $NETWORK_NAME
9+
driver: bridge
10+
driver_opts:
11+
com.docker.network.bridge.name: $NETWORK_NAME
12+
ipam:
13+
config:
14+
- subnet: $NETWORK_SUBNET
15+
16+
services:
17+
pelican-database:
18+
image: $DATABASE_IMAGE
19+
restart: unless-stopped
20+
networks:
21+
- pelican
22+
volumes:
23+
- $BASE_PATH/database:/var/lib/mysql
24+
environment:
25+
MYSQL_DATABASE: $DATABASE_NAME
26+
MYSQL_USER: $DATABASE_USER
27+
MYSQL_PASSWORD: $DATABASE_PASS
28+
MYSQL_ROOT_PASSWORD: $DATABASE_ROOT_PASS
29+
30+
pelican-redis:
31+
image: $REDIS_IMAGE
32+
restart: unless-stopped
33+
networks:
34+
- pelican
35+
36+
pelican-panel:
37+
image: $PANEL_IMAGE
38+
restart: unless-stopped
39+
healthcheck:
40+
test: ['CMD', 'curl', '-f', 'http://localhost:$PANEL_PORT/up']
41+
interval: 10s
42+
timeout: 10s
43+
retries: 5
44+
networks:
45+
- dokploy-network
46+
- pelican
47+
expose:
48+
- 80
49+
volumes:
50+
- $BASE_PATH/panel:$PANEL_PATH
51+
environment:
52+
XDG_DATA_HOME: $PANEL_PATH
53+
APP_TIMEZONE: $TIMEZONE
54+
APP_URL: $PANEL_URL_SCHEME://$PANEL_URL, http://, https://
55+
APP_DEBUG: $DEBUG
56+
APP_NAME: $NAME
57+
TRUSTED_PROXIES: $TRUSTED_PROXIES
58+
ADMIN_EMAIL: $EMAIL
59+
DB_CONNECTION: $DATABASE_TYPE
60+
DB_HOST: pelican-database
61+
DB_PORT: $DATABASE_PORT
62+
DB_DATABASE: $DATABASE_NAME
63+
DB_USERNAME: $DATABASE_USER
64+
DB_PASSWORD: $DATABASE_PASS
65+
REDIS_HOST: pelican-redis
66+
REDIS_PORT: $REDIS_PORT
67+
CACHE_STORE: redis
68+
SESSION_DRIVER: redis
69+
QUEUE_CONNECTION: redis
70+
FILAMENT_TOP_NAVIGATION: $TOP_NAVIGATION
71+
RECAPTCHA_ENABLED: false
72+
APP_BACKUP_DRIVER: wings
73+
MAIL_MAILER: log
74+
PANEL_CLIENT_ALLOCATIONS_ENABLED: $CLIENT_ALLOCATIONS
75+
PANEL_SEND_INSTALL_NOTIFICATION: false
76+
PANEL_SEND_REINSTALL_NOTIFICATION: false
77+
PANEL_EDITABLE_SERVER_DESCRIPTIONS: $EDITABLE_SERVER_DESCRIPTIONS
78+
PANEL_USE_BINARY_PREFIX: $BINARY_PREFIX
79+
BACKUP_THROTTLE_LIMIT: $BACKUP_THROTTLE_LIMIT
80+
BACKUP_THROTTLE_PERIOD: $BACKUP_THROTTLE_PERIOD
81+
GUZZLE_TIMEOUT: $REQUEST_TIMEOUT
82+
GUZZLE_CONNECT_TIMEOUT: $CONNECT_TIMEOUT
83+
APP_ACTIVITY_PRUNE_DAYS: $ACTIVITY_PRUNE_DAYS
84+
APP_ACTIVITY_HIDE_ADMIN: $ACTIVITY_HIDE_ADMIN
85+
APP_API_CLIENT_RATELIMIT: $CLIENT_RATELIMIT
86+
APP_API_APPLICATION_RATELIMIT: $APPLICATION_RATELIMIT
87+
labels:
88+
- traefik.enable=true
89+
- traefik.http.routers.$PANEL_TRAEFIK_NAME.rule=Host(`$PANEL_URL`)
90+
- traefik.http.services.$PANEL_TRAEFIK_NAME.loadbalancer.server.port=$PANEL_PORT
91+
depends_on:
92+
- pelican-database
93+
- pelican-redis
94+
95+
alpine:
96+
image: $ALPINE_IMAGE
97+
restart: no
98+
entrypoint: ['/bin/sh', '-c']
99+
command:
100+
- |
101+
cat <<EOF > /wings/config.yml
102+
app_name: $NAME
103+
uuid: $WINGS_UUID
104+
token_id: $WINGS_TOKEN_ID
105+
token: $WINGS_TOKEN
106+
api:
107+
host: 0.0.0.0
108+
port: $WINGS_PORT
109+
ssl:
110+
enabled: false
111+
upload_limit: $WINGS_UPLOAD_LIMIT
112+
system:
113+
root_directory: $BASE_PATH/wings/servers
114+
data: $BASE_PATH/wings/servers/volumes
115+
archive_directory: $BASE_PATH/wings/servers/archives
116+
backup_directory: $BASE_PATH/wings/servers/backups
117+
tmp_directory: $BASE_PATH/wings/temp
118+
log_directory: $BASE_PATH/wings/logs
119+
timezone: $TIMEZONE
120+
sftp:
121+
bind_address: 0.0.0.0
122+
bind_port: $WINGS_SFTP_PORT
123+
user:
124+
mount_passwd: false
125+
docker:
126+
network:
127+
interface: $NETWORK_GATEWAY
128+
dns:
129+
- $WINGS_DNS
130+
- $WINGS_DNS_SECONDARY
131+
name: $NETWORK_NAME
132+
driver: bridge
133+
network_mode: $NETWORK_NAME
134+
IPv6: false
135+
interfaces:
136+
v4:
137+
subnet: $NETWORK_SUBNET
138+
gateway: $NETWORK_GATEWAY
139+
remote: http://pelican-panel:$PANEL_PORT
140+
allowed_origins:
141+
- http://pelican-panel:$PANEL_PORT
142+
- $PANEL_URL_SCHEME://$PANEL_URL
143+
EOF
144+
exit
145+
volumes:
146+
- $BASE_PATH/wings/data:/wings
147+
148+
pelican-wings:
149+
image: $WINGS_IMAGE
150+
restart: unless-stopped
151+
networks:
152+
- dokploy-network
153+
- pelican
154+
- wings
155+
volumes:
156+
- $BASE_PATH/wings/data:/etc/pelican
157+
- $BASE_PATH/wings/servers:$BASE_PATH/wings/servers
158+
- $BASE_PATH/wings/temp:$BASE_PATH/wings/temp
159+
- $BASE_PATH/wings/logs:$BASE_PATH/wings/logs
160+
- /var/run/docker.sock:/var/run/docker.sock
161+
- /var/lib/docker/containers:/var/lib/docker/containers
162+
environment:
163+
TZ: $TIMEZONE
164+
labels:
165+
- traefik.enable=true
166+
- traefik.http.routers.$WINGS_TRAEFIK_NAME.rule=Host(`$WINGS_URL`)
167+
- traefik.http.services.$WINGS_TRAEFIK_NAME.loadbalancer.server.port=$WINGS_PORT
168+
depends_on:
169+
- pelican-panel
170+
- alpine

pterodactyl/panel/.env.template

-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
21
MYSQL_PASSWORD="something"
32
MYSQL_ROOT_PASSWORD="something but stronger"

pterodactyl/panel/docker-compose.yml

+30-14
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ x-common:
44
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
55
panel:
66
&panel-environment # This URL should be the URL that your reverse proxy routes to the panel server
7-
APP_URL: 'https://panel.codinglab.gg'
7+
APP_URL: 'http://panel.codinglab.gg'
88
# A list of valid timezones can be found here: http://php.net/manual/en/timezones.php
99
APP_TIMEZONE: 'Europe/Paris'
1010
APP_SERVICE_AUTHOR: '[email protected]'
1111
TRUSTED_PROXIES: '*' # Set this to your proxy IP
1212
# Uncomment the line below and set to a non-empty value if you want to use Let's Encrypt
1313
# to generate an SSL certificate for the Panel.
14-
LE_EMAIL: '[email protected]'
14+
# LE_EMAIL: '[email protected]'
1515
mail: &mail-environment
1616
MAIL_FROM: '[email protected]'
1717
MAIL_DRIVER: 'smtp'
@@ -25,31 +25,40 @@ x-common:
2525
services:
2626
database:
2727
image: mariadb:10.5
28-
restart: always
28+
restart: unless-stopped
2929
command: --default-authentication-plugin=mysql_native_password
3030
volumes:
31-
- '/srv/pterodactyl/database:/var/lib/mysql'
31+
- 'db-data:/var/lib/mysql'
3232
environment:
3333
<<: *db-environment
3434
MYSQL_DATABASE: 'panel'
3535
MYSQL_USER: 'pterodactyl'
36+
networks:
37+
- dokploy-network
38+
3639
cache:
3740
image: redis:alpine
38-
restart: always
41+
restart: unless-stopped
42+
networks:
43+
- dokploy-network
3944
panel:
4045
image: ghcr.io/pterodactyl/panel:latest
41-
restart: always
42-
ports:
43-
- '8080:80'
44-
- '4430:443'
45-
links:
46+
restart: unless-stopped
47+
depends_on:
4648
- database
4749
- cache
4850
volumes:
49-
- '/srv/pterodactyl/var/:/app/var/'
50-
- '/srv/pterodactyl/nginx/:/etc/nginx/http.d/'
51-
- '/srv/pterodactyl/certs/:/etc/letsencrypt/'
52-
- '/srv/pterodactyl/logs/:/app/storage/logs'
51+
- '../files/pterodactyl/var/:/app/var/'
52+
- '../files/pterodactyl/nginx/:/etc/nginx/http.d/'
53+
- '../files/pterodactyl/certs/:/etc/letsencrypt/'
54+
- '../files/pterodactyl/logs/:/app/storage/logs'
55+
networks:
56+
- dokploy-network
57+
labels:
58+
- traefik.enable=true
59+
- traefik.http.routers.panel-app.rule=Host(`panel.codinglab.gg`)
60+
- traefik.http.routers.panel-app.entrypoints=web
61+
- traefik.http.services.panel-app.loadbalancer.server.port=80
5362
environment:
5463
<<: [*panel-environment, *mail-environment]
5564
DB_PASSWORD: *db-password
@@ -61,3 +70,10 @@ services:
6170
REDIS_HOST: 'cache'
6271
DB_HOST: 'database'
6372
DB_PORT: '3306'
73+
74+
volumes:
75+
db-data:
76+
77+
networks:
78+
dokploy-network:
79+
external: true

0 commit comments

Comments
 (0)