From e054da51eaaa146e295e06c33bebc97f348d1960 Mon Sep 17 00:00:00 2001 From: naterfute Date: Wed, 9 Apr 2025 22:50:22 -0700 Subject: [PATCH] feat: add pyrodactyl template --- blueprints/pyrodactyl/docker-compose.yml | 50 +++++++++++++++++++++++ blueprints/pyrodactyl/image.png | Bin 0 -> 4283 bytes blueprints/pyrodactyl/template.toml | 35 ++++++++++++++++ meta.json | 17 ++++++++ 4 files changed, 102 insertions(+) create mode 100644 blueprints/pyrodactyl/docker-compose.yml create mode 100644 blueprints/pyrodactyl/image.png create mode 100644 blueprints/pyrodactyl/template.toml diff --git a/blueprints/pyrodactyl/docker-compose.yml b/blueprints/pyrodactyl/docker-compose.yml new file mode 100644 index 0000000..9b7a481 --- /dev/null +++ b/blueprints/pyrodactyl/docker-compose.yml @@ -0,0 +1,50 @@ +services: + database: + image: mariadb:10.5 + restart: always + command: --default-authentication-plugin=mysql_native_password + volumes: + - "pterodb:/var/lib/mysql" + environment: + MYSQL_DATABASE: "panel" + MYSQL_USER: "pterodactyl" + MYSQL_PASSWORD: + MYSQL_ROOT_PASSWORD: + cache: + image: redis:alpine + restart: always + panel: + image: ghcr.io/pyrohost/pyrodactyl:main + restart: always + links: + - database + - cache + volumes: + - "pterovar:/app/var/" + - "pteronginx:/etc/nginx/http.d/" + - "pterocerts:/etc/letsencrypt/" + - "pterologs:/app/storage/logs" + environment: + APP_ENV: "production" + APP_ENVIRONMENT_ONLY: "false" + CACHE_DRIVER: + SESSION_DRIVER: + QUEUE_DRIVER: + REDIS_HOST: + DB_HOST: + DB_PORT: + MYSQL_PASSWORD: + MYSQL_ROOT_PASSWORD: + RECAPTCHA_ENABLED: +networks: + default: + ipam: + config: + - subnet: 172.20.0.0/16 + +volumes: + pterodb: + pterovar: + pteronginx: + pterocerts: + pterologs: diff --git a/blueprints/pyrodactyl/image.png b/blueprints/pyrodactyl/image.png new file mode 100644 index 0000000000000000000000000000000000000000..50c98fdd6cc5eddc02caab84dd2adb4d257bcbbc GIT binary patch literal 4283 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 literal 0 HcmV?d00001 diff --git a/blueprints/pyrodactyl/template.toml b/blueprints/pyrodactyl/template.toml new file mode 100644 index 0000000..151f1f5 --- /dev/null +++ b/blueprints/pyrodactyl/template.toml @@ -0,0 +1,35 @@ +[variables] +main_domain = "${domain}" +db_password = "${password:32}" +db_root_password = "${password:32}" +secret_key = "${base64:48}" + +[config] +env = [ +"Domain=${main_domain}", +"RECAPTCHA_ENABLED=true", +"APP_URL={$main_domain}", +"APP_TIMEZONE=UTC", +"APP_SERVICE_AUTHOR=noreply@example.com", +"MAIL_FROM=noreply@example.com", +"MAIL_DRIVER=smtp", +"MAIL_HOST=mail", +"MAIL_PORT=1025", +"MAIL_USERNAME=", +"MAIL_PASSWORD=", +"MAIL_ENCRYPTION=true", +"MYSQL_PASSWORD=${db_password}", +"MYSQL_ROOT_PASSWORD=${db_root_password}", +"DB_PORT=3306", +"CACHE_DRIVER=redis", +"SESSION_DRIVER=redis", +"QUEUE_DRIVER=redis", +"REDIS_HOST=cache", +"DB_HOST=database", +] +mounts = [] + +[[config.domains]] +serviceName = "panel" +port = 80 +host = "${main_domain}" diff --git a/meta.json b/meta.json index c0f2a54..26810bc 100644 --- a/meta.json +++ b/meta.json @@ -807,6 +807,23 @@ "management" ] }, + { + "id": "pyrodactyl", + "name": "Pyrodactyl", + "version": "main", + "description": "Pyrodactyl is the Pterodactyl-based game server panel that's faster, smaller, safer, and more accessible than Pelican. ", + "logo": "pyrodactyl.png", + "links": { + "github": "https://github.com/pyrohost/pyrodactyl", + "website": "https://pyrodactyl.dev", + "docs": "https://pyrodactyl.dev/docs" + }, + "tags": [ + "self-hosted", + "open-source", + "management" + ] + }, { "id": "influxdb", "name": "InfluxDB",