Last active 1731942902

My docker compose configuration for running Pelican Panel & Wings.

.env Raw
1BASE_PATH=/var/lib/pelican # Path has to be absolute, else wings won't work.
2TIMEZONE=Europe/London
3
4# network
5NETWORK_NAME=wings
6NETWORK_SUBNET=192.30.0.0/16
7NETWORK_GATEWAY=192.30.0.1
8
9# traefik
10TRAEFIK_IMAGE=traefik:3.2
11TRAEFIK_NETWORK_NAME=traefik
12TRAEFIK_PORT=80
13
14# database
15DATABASE_TYPE=mariadb
16DATABASE_IMAGE=mariadb:11.5.2
17DATABASE_PORT=3306
18DATABASE_NAME=pelican
19DATABASE_USER=pelican
20DATABASE_PASS=P6i4hh6L5Q # Needs to be changed.
21DATABASE_ROOT_PASS=lhu2bgjY5b # Needs to be changed.
22
23# redis
24REDIS_IMAGE=redis:7.4.1-alpine
25REDIS_PORT=6379
26
27# panel
28PANEL_TRAEFIK_NAME=pelican-panel
29PANEL_IMAGE=ghcr.io/pelican-dev/panel:v1.0.0-beta11
30PANEL_URL_SCHEME=https # Needs to be changed.
31PANEL_URL=pelican.example.org # Needs to be changed.
32PANEL_PORT=80
33PANEL_PATH=/pelican-data
34DEBUG=false
35NAME=Pelican
36EMAIL=pelican@example.org # Needs to be changed.
37TRUSTED_PROXIES=*
38TOP_NAVIGATION=true
39CLIENT_ALLOCATIONS=false
40EDITABLE_SERVER_DESCRIPTIONS=false
41BINARY_PREFIX=false
42BACKUP_THROTTLE_LIMIT=5
43BACKUP_THROTTLE_PERIOD=120
44REQUEST_TIMEOUT=60
45CONNECT_TIMEOUT=60
46ACTIVITY_PRUNE_DAYS=30
47ACTIVITY_HIDE_ADMIN=false
48CLIENT_RATELIMIT=10000
49APPLICATION_RATELIMIT=10000
50
51# wings
52WINGS_TRAEFIK_NAME=pelican-wings
53WINGS_IMAGE=ghcr.io/pelican-dev/wings:v1.0.0-beta6
54WINGS_URL=pelican-node.example.org # Needs to be changed.
55WINGS_PORT=80
56WINGS_SFTP_PORT=2022
57WINGS_UUID=22c62a32-c789-4d59-8438-be1c425450c0 # Needs to be changed.
58WINGS_TOKEN_ID=1uVXCsVsMOWfbYVK # Needs to be changed.
59WINGS_TOKEN=zACf5zVzT0krxOLTA2cNIklV0HaozhdYuVqTMKITpwuRDodmUoELPpn3ybqgLbdl # Needs to be changed.
60WINGS_UPLOAD_LIMIT=100
61WINGS_DNS=1.1.1.1
62WINGS_DNS_SECONDARY=8.8.8.8
docker-compose.yml Raw
1networks:
2 traefik:
3 name: $TRAEFIK_NETWORK_NAME
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
16configs:
17 pelican-wings-config:
18 content: |
19 app_name: $NAME
20 uuid: $WINGS_UUID
21 token_id: $WINGS_TOKEN_ID
22 token: $WINGS_TOKEN
23 api:
24 host: 0.0.0.0
25 port: $WINGS_PORT
26 ssl:
27 enabled: false
28 upload_limit: $WINGS_UPLOAD_LIMIT
29 system:
30 root_directory: $BASE_PATH/wings/servers
31 data: $BASE_PATH/wings/servers/volumes
32 archive_directory: $BASE_PATH/wings/servers/archives
33 backup_directory: $BASE_PATH/wings/servers/backups
34 tmp_directory: $BASE_PATH/wings/temp
35 log_directory: $BASE_PATH/wings/logs
36 timezone: $TIMEZONE
37 sftp:
38 bind_address: 0.0.0.0
39 bind_port: $WINGS_SFTP_PORT
40 user:
41 mount_passwd: false
42 docker:
43 network:
44 interface: $NETWORK_GATEWAY
45 dns:
46 - $WINGS_DNS
47 - $WINGS_DNS_SECONDARY
48 name: $NETWORK_NAME
49 driver: bridge
50 network_mode: $NETWORK_NAME
51 IPv6: false
52 interfaces:
53 v4:
54 subnet: $NETWORK_SUBNET
55 gateway: $NETWORK_GATEWAY
56 remote: http://pelican-panel:$PANEL_PORT
57 allowed_origins:
58 - http://pelican-panel:$PANEL_PORT
59 - $PANEL_URL_SCHEME://$PANEL_URL
60
61services:
62 traefik:
63 image: $TRAEFIK_IMAGE
64 restart: unless-stopped
65 command:
66 - --global.sendAnonymousUsage=false
67 - --global.checkNewVersion=false
68 - --providers.docker=true
69 - --providers.docker.exposedByDefault=false
70 - --providers.docker.network=$TRAEFIK_NETWORK_NAME
71 - --serversTransport.insecureSkipVerify=true
72 - --entryPoints.web.address=:$TRAEFIK_PORT
73 - --entryPoints.web.asDefault=true
74 networks:
75 - traefik
76 ports:
77 - $TRAEFIK_PORT:$TRAEFIK_PORT
78 volumes:
79 - /var/run/docker.sock:/var/run/docker.sock:ro
80
81 pelican-database:
82 image: $DATABASE_IMAGE
83 restart: unless-stopped
84 networks:
85 - pelican
86 volumes:
87 - $BASE_PATH/database:/var/lib/mysql
88 environment:
89 MYSQL_DATABASE: $DATABASE_NAME
90 MYSQL_USER: $DATABASE_USER
91 MYSQL_PASSWORD: $DATABASE_PASS
92 MYSQL_ROOT_PASSWORD: $DATABASE_ROOT_PASS
93
94 pelican-redis:
95 image: $REDIS_IMAGE
96 restart: unless-stopped
97 networks:
98 - pelican
99
100 pelican-panel:
101 image: $PANEL_IMAGE
102 restart: unless-stopped
103 healthcheck:
104 test: curl -f http://localhost:$PANEL_PORT/up
105 interval: 10s
106 timeout: 10s
107 retries: 10
108 networks:
109 - traefik
110 - pelican
111 volumes:
112 - $BASE_PATH/panel:$PANEL_PATH
113 environment:
114 XDG_DATA_HOME: $PANEL_PATH
115 APP_TIMEZONE: $TIMEZONE
116 APP_URL: $PANEL_URL_SCHEME://$PANEL_URL, http://, https://
117 APP_DEBUG: $DEBUG
118 APP_NAME: $NAME
119 TRUSTED_PROXIES: $TRUSTED_PROXIES
120 ADMIN_EMAIL: $EMAIL
121 DB_CONNECTION: $DATABASE_TYPE
122 DB_HOST: pelican-database
123 DB_PORT: $DATABASE_PORT
124 DB_DATABASE: $DATABASE_NAME
125 DB_USERNAME: $DATABASE_USER
126 DB_PASSWORD: $DATABASE_PASS
127 REDIS_HOST: pelican-redis
128 REDIS_PORT: $REDIS_PORT
129 CACHE_STORE: redis
130 SESSION_DRIVER: redis
131 QUEUE_CONNECTION: redis
132 FILAMENT_TOP_NAVIGATION: $TOP_NAVIGATION
133 RECAPTCHA_ENABLED: false
134 APP_BACKUP_DRIVER: wings
135 MAIL_MAILER: log
136 PANEL_CLIENT_ALLOCATIONS_ENABLED: $CLIENT_ALLOCATIONS
137 PANEL_SEND_INSTALL_NOTIFICATION: false
138 PANEL_SEND_REINSTALL_NOTIFICATION: false
139 PANEL_EDITABLE_SERVER_DESCRIPTIONS: $EDITABLE_SERVER_DESCRIPTIONS
140 PANEL_USE_BINARY_PREFIX: $BINARY_PREFIX
141 BACKUP_THROTTLE_LIMIT: $BACKUP_THROTTLE_LIMIT
142 BACKUP_THROTTLE_PERIOD: $BACKUP_THROTTLE_PERIOD
143 GUZZLE_TIMEOUT: $REQUEST_TIMEOUT
144 GUZZLE_CONNECT_TIMEOUT: $CONNECT_TIMEOUT
145 APP_ACTIVITY_PRUNE_DAYS: $ACTIVITY_PRUNE_DAYS
146 APP_ACTIVITY_HIDE_ADMIN: $ACTIVITY_HIDE_ADMIN
147 APP_API_CLIENT_RATELIMIT: $CLIENT_RATELIMIT
148 APP_API_APPLICATION_RATELIMIT: $APPLICATION_RATELIMIT
149 labels:
150 - traefik.enable=true
151 - traefik.http.routers.$PANEL_TRAEFIK_NAME.rule=Host(`$PANEL_URL`)
152 - traefik.http.services.$PANEL_TRAEFIK_NAME.loadbalancer.server.port=$PANEL_PORT
153 depends_on:
154 - pelican-database
155 - pelican-redis
156
157 pelican-wings:
158 image: $WINGS_IMAGE
159 restart: unless-stopped
160 networks:
161 - traefik
162 - pelican
163 - wings
164 volumes:
165 - $BASE_PATH/wings/servers:$BASE_PATH/wings/servers
166 - $BASE_PATH/wings/temp:$BASE_PATH/wings/temp
167 - $BASE_PATH/wings/logs:$BASE_PATH/wings/logs
168 - /var/run/docker.sock:/var/run/docker.sock
169 - /var/lib/docker/containers:/var/lib/docker/containers
170 environment:
171 TZ: $TIMEZONE
172 configs:
173 - source: pelican-wings-config
174 target: /etc/pelican/config.yml
175 labels:
176 - traefik.enable=true
177 - traefik.http.routers.$WINGS_TRAEFIK_NAME.rule=Host(`$WINGS_URL`)
178 - traefik.http.services.$WINGS_TRAEFIK_NAME.loadbalancer.server.port=$WINGS_PORT
179 depends_on:
180 pelican-panel:
181 condition: service_healthy