diff --git a/blueprints/pterodactyl/docker-compose.yml b/blueprints/pterodactyl/docker-compose.yml new file mode 100644 index 0000000..6399881 --- /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 0000000..b0e540b Binary files /dev/null and b/blueprints/pterodactyl/pterodactyl.png differ diff --git a/blueprints/pterodactyl/template.toml b/blueprints/pterodactyl/template.toml new file mode 100644 index 0000000..04bfb08 --- /dev/null +++ b/blueprints/pterodactyl/template.toml @@ -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}" diff --git a/blueprints/pyrodactyl/docker-compose.yml b/blueprints/pyrodactyl/docker-compose.yml new file mode 100644 index 0000000..396b3aa --- /dev/null +++ b/blueprints/pyrodactyl/docker-compose.yml @@ -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: diff --git a/blueprints/pyrodactyl/pyrodactyl.png b/blueprints/pyrodactyl/pyrodactyl.png new file mode 100644 index 0000000..50c98fd Binary files /dev/null and b/blueprints/pyrodactyl/pyrodactyl.png differ diff --git a/blueprints/pyrodactyl/template.toml b/blueprints/pyrodactyl/template.toml new file mode 100644 index 0000000..c76e05f --- /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 0000000..461b23d --- /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 0000000..b295363 Binary files /dev/null and b/blueprints/stack-auth/stack-auth.png differ diff --git a/blueprints/stack-auth/template.toml b/blueprints/stack-auth/template.toml new file mode 100644 index 0000000..e1e5ef3 --- /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 e393877..3455657 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",