add more templates (#93)
Some checks are pending
Deploy to Cloudflare Pages (Production) / Publish to Cloudflare Pages (push) Waiting to run
Validate Blueprints Structure and Meta / validate (push) Waiting to run

* feat: add first stack-auth test

* fix: stack auth template.toml

* fix: stack auth compose and template

* fix: fixed serviceName on the template.toml of stack auth

* fix: database host Stack Auth

* fix: template.toml for Stack Auth

* fix: actually auto generate values for plane template

* feat: add healthcheck to minio

* Revert "feat: add healthcheck to minio"

This reverts commit 623a850976.

* fix: add STACK_EMAIL_HOST for stability, user can add it later on Environment Variables.

* fix: docker-compose of Stack Auth

* fix: plane template MINIO root for image uploads

* wtf? I merged upstream

* feat: pterodactyl template

* fix: removed xcommon from pterodactyl template

* fix: add pterodactyl to meta.json

* fix: volume names

* feat: add pyrodactyl template

* fix: renamed pyrodactyl image.png to pyrodactyl.png

* fix: Pyrodactyl takes db_password env

* fix(pyrodactyl): fix

* fix(pterodactyl): environment variables

* feat: update pocketbase

* Revert "feat: update pocketbase"

This reverts commit 036627ea98.

* fix: stackauth

- change postgres version from "latest" to "17" to prevent future conflicts
- added a health check to postgres db to ensure it's running before
  stack auth attempts to start

* fix(stackauth): wait for service_healthy rather than service_started

* fix(plane): removed double-up of variables

* Update blueprints/pyrodactyl/template.toml

Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>

* Update blueprints/stack-auth/docker-compose.yml

Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>

* fix: pterodactyl not launching

---------

Co-authored-by: scanash00 <scan@scanash.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
This commit is contained in:
Naterfute 2025-04-26 18:10:34 -07:00 committed by GitHub
parent 9a6c191197
commit 12720eb6f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 301 additions and 0 deletions

View File

@ -0,0 +1,52 @@
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/pterodactyl/panel:latest
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_PASSWORD: ${MYSQL_PASSWORD}
DB_PORT:
MYSQL_PASSWORD:
MYSQL_ROOT_PASSWORD:
DB_CONNECTION: "mysql"
networks:
default:
ipam:
config:
- subnet: 172.20.0.0/16
volumes:
pterodb:
pterovar:
pteronginx:
pterocerts:
pterologs:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,34 @@
[variables]
main_domain = "${domain}"
db_password = "${password:32}"
db_root_password = "${password:32}"
secret_key = "${base64:48}"
[config]
env = [
"Domain=${main_domain}",
"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}"

View File

@ -0,0 +1,53 @@
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:
DB_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_PASSWORD:
MYSQL_ROOT_PASSWORD:
RECAPTCHA_ENABLED:
DB_CONNECTION: "mariadb"
networks:
default:
ipam:
config:
- subnet: 172.20.0.0/16
volumes:
pterodb:
pterovar:
pteronginx:
pterocerts:
pterologs:

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -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}"

View File

@ -0,0 +1,42 @@
version: '3.8'
services:
stack-auth-db:
image: postgres:17
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- stack-auth-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-d", "db_prod"]
interval: 10s
timeout: 60s
retries: 5
start_period: 80s
stack-auth:
image: stackauth/server:latest
container_name: stack-auth
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- NEXT_PUBLIC_STACK_API_URL=${NEXT_PUBLIC_STACK_API_URL}
- NEXT_PUBLIC_STACK_DASHBOARD_URL=${NEXT_PUBLIC_STACK_DASHBOARD_URL}
- STACK_DATABASE_CONNECTION_STRING=${STACK_DATABASE_CONNECTION_STRING}
- STACK_DIRECT_DATABASE_CONNECTION_STRING=${STACK_DIRECT_DATABASE_CONNECTION_STRING}
- STACK_SERVER_SECRET=${STACK_SERVER_SECRET}
- STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST=${STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST}
- STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED=${STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED}
- STACK_RUN_MIGRATIONS=${STACK_RUN_MIGRATIONS}
- STACK_RUN_SEED_SCRIPT=${STACK_RUN_SEED_SCRIPT}
- STACK_EMAIL_HOST=${STACK_EMAIL_HOST}
depends_on:
stack-auth-db:
condition: service_healthy
volumes:
stack-auth-db-data:

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,36 @@
[variables]
dashboard_domain = "${domain}"
api_domain = "${domain}"
postgres_password = "${password:32}"
stack_auth_api_url = "${api_domain}"
stack_auth_dashboard_url = "${dashboard_domain}"
stack_auth_postgres_host = "stack-auth-db"
[config.env]
POSTGRES_USER = "postgres"
POSTGRES_PASSWORD = "${postgres_password}"
POSTGRES_DB = "stackframe"
NEXT_PUBLIC_STACK_API_URL = "http://${stack_auth_api_url}"
NEXT_PUBLIC_STACK_DASHBOARD_URL = "http://${stack_auth_dashboard_url}"
STACK_DATABASE_CONNECTION_STRING = "postgres://postgres:${postgres_password}@${stack_auth_postgres_host}/stackframe"
STACK_DIRECT_DATABASE_CONNECTION_STRING = "postgres://postgres:${postgres_password}@${stack_auth_postgres_host}/stackframe"
STACK_SERVER_SECRET = "${password:64}"
STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST = true
STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED = true
STACK_RUN_MIGRATIONS = true
STACK_RUN_SEED_SCRIPT = true
[[config.domains]]
serviceName = "stack-auth"
port = 8102
host = "${stack_auth_api_url}"
path = "/"
[[config.domains]]
serviceName = "stack-auth"
port = 8101
host = "${stack_auth_dashboard_url}"
path = "/"

View File

@ -207,6 +207,21 @@
},
"tags": ["database", "redis"]
},
{
"id": "stack-auth",
"name": "Stack Auth",
"version": "latest",
"description": "Uptime Kuma is a free and open source monitoring tool that allows you to monitor your websites and applications.",
"logo": "stack-auth.png",
"links": {
"github": "https://github.com/louislam/uptime-kuma",
"website": "https://uptime.kuma.pet/",
"docs": "https://github.com/louislam/uptime-kuma/wiki"
},
"tags": [
"monitoring"
]
},
{
"id": "uptime-kuma",
"name": "Uptime Kuma",
@ -649,6 +664,40 @@
},
"tags": ["kanban"]
},
{
"id": "pterodactyl",
"name": "Pterodactyl",
"version": "latest",
"description": "A free, open-source game server management panel.",
"logo": "pterodactyl.png",
"links": {
"github": "https://github.com/pterodactyl/panel",
"website": "https://pterodactyl.io",
"docs": "https://pterodactyl.io/project/introduction.html"
},
"tags": [
"self-hosted",
"open-source",
"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",