102 lines
3.3 KiB
YAML
102 lines
3.3 KiB
YAML
# documentation: https://pterodactyl.io/
|
|
# slogan: Pterodactyl is a free, open-source game server management panel
|
|
# tags: game, game server, management, panel, minecraft
|
|
# logo: svgs/pterodactyl.png
|
|
# port: 80
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.5
|
|
healthcheck:
|
|
test:
|
|
["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized || exit 1"]
|
|
start_period: 10s
|
|
interval: 10s
|
|
timeout: 1s
|
|
retries: 3
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MYSQLROOT
|
|
- MYSQL_DATABASE=pterodactyl-db
|
|
- MYSQL_USER=$SERVICE_USER_MYSQL
|
|
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
|
|
volumes:
|
|
- pterodactyl-db:/var/lib/mysql
|
|
|
|
redis:
|
|
image: redis:alpine
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
|
|
interval: 10s
|
|
timeout: 1s
|
|
retries: 3
|
|
|
|
pterodactyl:
|
|
image: ghcr.io/pterodactyl/panel:latest
|
|
volumes:
|
|
- "panel-var:/app/var/"
|
|
- "panel-nginx:/etc/nginx/http.d/"
|
|
- "panel-certs:/etc/letsencrypt/"
|
|
- type: bind
|
|
source: ./etc/entrypoint.sh
|
|
target: /entrypoint.sh
|
|
mode: "0755"
|
|
content: |
|
|
#!/bin/sh
|
|
set -e
|
|
|
|
echo "Setting logs permissions..."
|
|
chown -R nginx: /app/storage/logs/
|
|
|
|
USER_EXISTS=$(php artisan tinker --no-ansi --execute='echo \Pterodactyl\Models\User::where("email", "'"$ADMIN_EMAIL"'")->exists() ? "1" : "0";')
|
|
|
|
if [ "$USER_EXISTS" = "0" ]; then
|
|
echo "Admin User does not exist, creating user now."
|
|
php artisan p:user:make --no-interaction \
|
|
--admin=1 \
|
|
--email="$ADMIN_EMAIL" \
|
|
--username="$ADMIN_USERNAME" \
|
|
--name-first="$ADMIN_FIRSTNAME" \
|
|
--name-last="$ADMIN_LASTNAME" \
|
|
--password="$ADMIN_PASSWORD"
|
|
echo "Admin user created successfully!"
|
|
else
|
|
echo "Admin User already exists, skipping creation."
|
|
fi
|
|
|
|
exec supervisord --nodaemon
|
|
command: ["/entrypoint.sh"]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -sf http://localhost:80 || exit 1"]
|
|
interval: 10s
|
|
timeout: 1s
|
|
retries: 3
|
|
environment:
|
|
- SERVICE_FQDN_PTERODACTYL_80
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
|
|
- ADMIN_USERNAME=${SERVICE_USER_ADMIN}
|
|
- ADMIN_FIRSTNAME=${ADMIN_FIRSTNAME:-Admin}
|
|
- ADMIN_LASTNAME=${ADMIN_LASTNAME:-User}
|
|
- ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
|
- PTERODACTYL_HTTPS=${PTERODACTYL_HTTPS:-false}
|
|
- APP_ENV=production
|
|
- APP_ENVIRONMENT_ONLY=false
|
|
- APP_URL=$SERVICE_FQDN_PTERODACTYL
|
|
- APP_TIMEZONE=${TIMEZONE:-UTC}
|
|
- APP_SERVICE_AUTHOR=${APP_SERVICE_AUTHOR:-author@example.com}
|
|
- LOG_LEVEL=${LOG_LEVEL:-debug}
|
|
- CACHE_DRIVER=redis
|
|
- SESSION_DRIVER=redis
|
|
- QUEUE_DRIVER=redis
|
|
- REDIS_HOST=redis
|
|
- DB_DATABASE=pterodactyl-db
|
|
- DB_USERNAME=$SERVICE_USER_MYSQL
|
|
- DB_HOST=mariadb
|
|
- DB_PORT=3306
|
|
- DB_PASSWORD=$SERVICE_PASSWORD_MYSQL
|
|
- MAIL_FROM=$MAIL_FROM
|
|
- MAIL_DRIVER=$MAIL_DRIVER
|
|
- MAIL_HOST=$MAIL_HOST
|
|
- MAIL_PORT=$MAIL_PORT
|
|
- MAIL_USERNAME=$MAIL_USERNAME
|
|
- MAIL_PASSWORD=$MAIL_PASSWORD
|
|
- MAIL_ENCRYPTION=$MAIL_ENCRYPTION |