From 12720eb6f096959fbbfcf35b25ab0b3fd1e48c0e Mon Sep 17 00:00:00 2001 From: Naterfute <106989409+naterfute@users.noreply.github.com> Date: Sat, 26 Apr 2025 18:10:34 -0700 Subject: [PATCH] add more templates (#93) * 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 623a850976156a3c9c3541f86c9421321807aae8. * 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 036627ea9823694de5b9da95f5e566817a176bc0. * 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 Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- blueprints/pterodactyl/docker-compose.yml | 52 +++++++++++++++++++++ blueprints/pterodactyl/pterodactyl.png | Bin 0 -> 2582 bytes blueprints/pterodactyl/template.toml | 34 ++++++++++++++ blueprints/pyrodactyl/docker-compose.yml | 53 ++++++++++++++++++++++ blueprints/pyrodactyl/pyrodactyl.png | Bin 0 -> 4283 bytes blueprints/pyrodactyl/template.toml | 35 ++++++++++++++ blueprints/stack-auth/docker-compose.yml | 42 +++++++++++++++++ blueprints/stack-auth/stack-auth.png | Bin 0 -> 3103 bytes blueprints/stack-auth/template.toml | 36 +++++++++++++++ meta.json | 49 ++++++++++++++++++++ 10 files changed, 301 insertions(+) create mode 100644 blueprints/pterodactyl/docker-compose.yml create mode 100644 blueprints/pterodactyl/pterodactyl.png create mode 100644 blueprints/pterodactyl/template.toml create mode 100644 blueprints/pyrodactyl/docker-compose.yml create mode 100644 blueprints/pyrodactyl/pyrodactyl.png create mode 100644 blueprints/pyrodactyl/template.toml create mode 100644 blueprints/stack-auth/docker-compose.yml create mode 100644 blueprints/stack-auth/stack-auth.png create mode 100644 blueprints/stack-auth/template.toml diff --git a/blueprints/pterodactyl/docker-compose.yml b/blueprints/pterodactyl/docker-compose.yml new file mode 100644 index 00000000..63998818 --- /dev/null +++ b/blueprints/pterodactyl/docker-compose.yml @@ -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: diff --git a/blueprints/pterodactyl/pterodactyl.png b/blueprints/pterodactyl/pterodactyl.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e540b427e1752a9bd3233f5067b77d625037b9 GIT binary patch literal 2582 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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 00000000..c76e05f6 --- /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/blueprints/stack-auth/docker-compose.yml b/blueprints/stack-auth/docker-compose.yml new file mode 100644 index 00000000..461b23d3 --- /dev/null +++ b/blueprints/stack-auth/docker-compose.yml @@ -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: diff --git a/blueprints/stack-auth/stack-auth.png b/blueprints/stack-auth/stack-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..b29536365e39792e13174eeda2a890be5111959c GIT binary patch literal 3103 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 NvOI5NMliXK{}(Mj(%Aq2 literal 0 HcmV?d00001 diff --git a/blueprints/stack-auth/template.toml b/blueprints/stack-auth/template.toml new file mode 100644 index 00000000..e1e5ef3d --- /dev/null +++ b/blueprints/stack-auth/template.toml @@ -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 = "/" diff --git a/meta.json b/meta.json index e393877b..34556577 100644 --- a/meta.json +++ b/meta.json @@ -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",