mirror of
https://github.com/hanzo-apps/templates.git
synced 2026-10-30 14:48:30 +00:00
Aggregates five OSS one-click/self-hosting catalogs into the Dokploy blueprint
shape the Hanzo PaaS consumes (meta.json array + blueprints/<id>/{template.toml,
docker-compose.yml,meta.json,logo}):
Dokploy 500 (MIT, verbatim) · Coolify 174 (Apache-2.0) · CapRover 161
(Apache-2.0) · CasaOS 85 (Apache-2.0) · Runtipi 110 (GPL-3.0)
Deduped by app identity; each source + app keeps its upstream license
(ATTRIBUTION.md). Deterministic aggregators + a hard validator (every
template.toml parses with the platform's toml lib, every compose parses as YAML,
meta.json is the expected array, and an over-HTTP fetch probe exercises all
1030) — 0 hard failures. Served natively by hanzoai/static on DOKS (no CDN/Pages/
Vercel); CI builds on the hanzo-build-linux-amd64 arc pool; operator App CR in
crs/ serves it at templates.hanzo.ai.
120 lines
2.5 KiB
TOML
120 lines
2.5 KiB
TOML
[variables]
|
|
# Generate unique domains for each service
|
|
api_domain = "${domain}"
|
|
dashboard_domain = "${domain}"
|
|
landing_domain = "${domain}"
|
|
wiki_domain = "${domain}"
|
|
minio_domain = "${domain}"
|
|
|
|
# Database credentials
|
|
postgres_password = "${password:32}"
|
|
|
|
# Security
|
|
jwt_secret = "${password:64}"
|
|
|
|
# Minio credentials
|
|
minio_root_user = "plunk"
|
|
minio_root_password = "${password:32}"
|
|
|
|
[config]
|
|
isolated = true
|
|
|
|
# API Domain
|
|
[[config.domains]]
|
|
serviceName = "plunk"
|
|
port = 80
|
|
host = "${api_domain}"
|
|
path = "/"
|
|
|
|
# Dashboard Domain
|
|
[[config.domains]]
|
|
serviceName = "plunk"
|
|
port = 80
|
|
host = "${dashboard_domain}"
|
|
path = "/"
|
|
|
|
# Landing Page Domain
|
|
[[config.domains]]
|
|
serviceName = "plunk"
|
|
port = 80
|
|
host = "${landing_domain}"
|
|
path = "/"
|
|
|
|
# Documentation Domain
|
|
[[config.domains]]
|
|
serviceName = "plunk"
|
|
port = 80
|
|
host = "${wiki_domain}"
|
|
path = "/"
|
|
|
|
# Minio Console Domain (optional)
|
|
[[config.domains]]
|
|
serviceName = "minio"
|
|
port = 9001
|
|
host = "${minio_domain}"
|
|
path = "/"
|
|
|
|
[config.env]
|
|
# Database
|
|
DB_PASSWORD = "${postgres_password}"
|
|
|
|
# Redis
|
|
REDIS_URL = "redis://redis:6379"
|
|
|
|
# Security
|
|
JWT_SECRET = "${jwt_secret}"
|
|
|
|
# Nginx configuration
|
|
NGINX_PORT = "80"
|
|
|
|
# Domain configuration (subdomain-based routing)
|
|
API_DOMAIN = "${api_domain}"
|
|
DASHBOARD_DOMAIN = "${dashboard_domain}"
|
|
LANDING_DOMAIN = "${landing_domain}"
|
|
WIKI_DOMAIN = "${wiki_domain}"
|
|
USE_HTTPS = "true"
|
|
|
|
# AWS SES (Required - users must configure these for email to work)
|
|
AWS_SES_REGION = "us-east-1"
|
|
AWS_SES_ACCESS_KEY_ID = "<your-aws-ses-access-key-id>"
|
|
AWS_SES_SECRET_ACCESS_KEY = "<your-aws-ses-secret-access-key>"
|
|
SES_CONFIGURATION_SET = "<your-ses-configuration-set>"
|
|
|
|
# S3-compatible storage (Minio)
|
|
MINIO_ROOT_USER = "${minio_root_user}"
|
|
MINIO_ROOT_PASSWORD = "${minio_root_password}"
|
|
S3_ENDPOINT = "http://minio:9000"
|
|
S3_ACCESS_KEY_ID = "${minio_root_user}"
|
|
S3_ACCESS_KEY_SECRET = "${minio_root_password}"
|
|
S3_BUCKET = "uploads"
|
|
S3_PUBLIC_URL = "https://${minio_domain}/uploads"
|
|
S3_FORCE_PATH_STYLE = "true"
|
|
|
|
# Minio ports
|
|
MINIO_API_PORT = "9000"
|
|
MINIO_CONSOLE_PORT = "9001"
|
|
|
|
# SMTP Server ports
|
|
PORT_SECURE = "465"
|
|
PORT_SUBMISSION = "587"
|
|
|
|
# Notifications (ntfy.sh)
|
|
NTFY_URL = "http://ntfy/plunk-notifications"
|
|
|
|
# Optional: OAuth (leave empty if not using)
|
|
GITHUB_OAUTH_CLIENT = ""
|
|
GITHUB_OAUTH_SECRET = ""
|
|
GOOGLE_OAUTH_CLIENT = ""
|
|
GOOGLE_OAUTH_SECRET = ""
|
|
|
|
# Optional: Stripe (leave empty if not using)
|
|
STRIPE_SK = ""
|
|
STRIPE_WEBHOOK_SECRET = ""
|
|
STRIPE_PRICE_ONBOARDING = ""
|
|
STRIPE_PRICE_EMAIL_USAGE = ""
|
|
STRIPE_METER_EVENT_NAME = "emails"
|
|
|
|
# Internal
|
|
PLUNK_API_KEY = ""
|
|
PLUNK_FROM_ADDRESS = ""
|
|
SMTP_DOMAIN = "" |