Last active 1745627527

My docker compose configuration for running Pelican Panel & Wings.

snipcola's Avatar snipcola revised this gist 1745627527. Go to revision

2 files changed, 243 insertions

.env(file created)

@@ -0,0 +1,62 @@
1 + BASE_PATH=/var/lib/pelican # Path has to be absolute, else wings won't work.
2 + TIMEZONE=Europe/London
3 +
4 + # network
5 + NETWORK_NAME=wings
6 + NETWORK_SUBNET=192.30.0.0/16
7 + NETWORK_GATEWAY=192.30.0.1
8 +
9 + # traefik
10 + TRAEFIK_IMAGE=traefik:3.2
11 + TRAEFIK_NETWORK_NAME=traefik
12 + TRAEFIK_PORT=80
13 +
14 + # database
15 + DATABASE_TYPE=mariadb
16 + DATABASE_IMAGE=mariadb:11.5.2
17 + DATABASE_PORT=3306
18 + DATABASE_NAME=pelican
19 + DATABASE_USER=pelican
20 + DATABASE_PASS=P6i4hh6L5Q # Needs to be changed.
21 + DATABASE_ROOT_PASS=lhu2bgjY5b # Needs to be changed.
22 +
23 + # redis
24 + REDIS_IMAGE=redis:7.4.1-alpine
25 + REDIS_PORT=6379
26 +
27 + # panel
28 + PANEL_TRAEFIK_NAME=pelican-panel
29 + PANEL_IMAGE=ghcr.io/pelican-dev/panel:v1.0.0-beta11
30 + PANEL_URL_SCHEME=https # Needs to be changed.
31 + PANEL_URL=pelican.example.org # Needs to be changed.
32 + PANEL_PORT=80
33 + PANEL_PATH=/pelican-data
34 + DEBUG=false
35 + NAME=Pelican
36 + EMAIL=pelican@example.org # Needs to be changed.
37 + TRUSTED_PROXIES=*
38 + TOP_NAVIGATION=true
39 + CLIENT_ALLOCATIONS=false
40 + EDITABLE_SERVER_DESCRIPTIONS=false
41 + BINARY_PREFIX=false
42 + BACKUP_THROTTLE_LIMIT=5
43 + BACKUP_THROTTLE_PERIOD=120
44 + REQUEST_TIMEOUT=60
45 + CONNECT_TIMEOUT=60
46 + ACTIVITY_PRUNE_DAYS=30
47 + ACTIVITY_HIDE_ADMIN=false
48 + CLIENT_RATELIMIT=10000
49 + APPLICATION_RATELIMIT=10000
50 +
51 + # wings
52 + WINGS_TRAEFIK_NAME=pelican-wings
53 + WINGS_IMAGE=ghcr.io/pelican-dev/wings:v1.0.0-beta6
54 + WINGS_URL=pelican-node.example.org # Needs to be changed.
55 + WINGS_PORT=80
56 + WINGS_SFTP_PORT=2022
57 + WINGS_UUID=22c62a32-c789-4d59-8438-be1c425450c0 # Needs to be changed.
58 + WINGS_TOKEN_ID=1uVXCsVsMOWfbYVK # Needs to be changed.
59 + WINGS_TOKEN=zACf5zVzT0krxOLTA2cNIklV0HaozhdYuVqTMKITpwuRDodmUoELPpn3ybqgLbdl # Needs to be changed.
60 + WINGS_UPLOAD_LIMIT=100
61 + WINGS_DNS=1.1.1.1
62 + WINGS_DNS_SECONDARY=8.8.8.8

docker-compose.yml(file created)

@@ -0,0 +1,181 @@
1 + networks:
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 +
16 + configs:
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 +
61 + services:
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
Newer Older