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.
148 lines
4.4 KiB
YAML
148 lines
4.4 KiB
YAML
services:
|
|
frontend:
|
|
image: penpotapp/frontend:2.11.1
|
|
depends_on:
|
|
penpot-backend:
|
|
condition: service_healthy
|
|
penpot-exporter:
|
|
condition: service_healthy
|
|
environment:
|
|
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password}
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- curl
|
|
- -f
|
|
- http://127.0.0.1:8080
|
|
interval: 2s
|
|
timeout: 10s
|
|
retries: 15
|
|
penpot-backend:
|
|
image: penpotapp/backend:2.11.1
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
penpot-valkey:
|
|
condition: service_healthy
|
|
minio-init:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password}
|
|
- PENPOT_HTTP_SERVER_PORT=6060
|
|
- PENPOT_SECRET_KEY=${SERVICE_REALBASE64_64_PENPOT}
|
|
- PENPOT_PUBLIC_URI=${SERVICE_URL_FRONTEND_8080}
|
|
- PENPOT_BACKEND_URI=http://penpot-backend
|
|
- PENPOT_EXPORTER_URI=http://penpot-exporter
|
|
- PENPOT_DATABASE_URI=postgresql://postgres/${POSTGRES_DB:-penpot}
|
|
- PENPOT_DATABASE_USERNAME=${SERVICE_USER_POSTGRES}
|
|
- PENPOT_DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
- PENPOT_REDIS_URI=redis://penpot-valkey/0
|
|
- PENPOT_TELEMETRY_ENABLED=${PENPOT_TELEMETRY_ENABLED:-false}
|
|
- PENPOT_OBJECTS_STORAGE_BACKEND=s3
|
|
- PENPOT_OBJECTS_STORAGE_S3_REGION=us-east-1
|
|
- PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
|
|
- PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000
|
|
- AWS_ACCESS_KEY_ID=${SERVICE_USER_MINIO}
|
|
- AWS_SECRET_ACCESS_KEY=${SERVICE_PASSWORD_MINIO}
|
|
- PENPOT_SMTP_DEFAULT_FROM=${PENPOT_SMTP_DEFAULT_FROM:[email protected]}
|
|
- PENPOT_SMTP_DEFAULT_REPLY_TO=${PENPOT_SMTP_DEFAULT_REPLY_TO:[email protected]}
|
|
- PENPOT_SMTP_HOST=${PENPOT_SMTP_HOST:-mailpit}
|
|
- PENPOT_SMTP_PORT=${PENPOT_SMTP_PORT:-1025}
|
|
- PENPOT_SMTP_USERNAME=${PENPOT_SMTP_USERNAME:-penpot}
|
|
- PENPOT_SMTP_PASSWORD=${PENPOT_SMTP_PASSWORD:-penpot}
|
|
- PENPOT_SMTP_TLS=${PENPOT_SMTP_TLS:-false}
|
|
- PENPOT_SMTP_SSL=${PENPOT_SMTP_SSL:-false}
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- node
|
|
- -e
|
|
- "require('http').get({host:'127.0.0.1', port:6060, path:'/readyz'}, res => process.exit(res.statusCode===200 ? 0 : 1)).on('error', () => process.exit(1));"
|
|
interval: 10s
|
|
timeout: 30s
|
|
retries: 15
|
|
penpot-exporter:
|
|
image: penpotapp/exporter:2.11.1
|
|
environment:
|
|
- PENPOT_PUBLIC_URI=${SERVICE_URL_FRONTEND_8080}
|
|
- PENPOT_REDIS_URI=redis://penpot-valkey/0
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- curl
|
|
- -f
|
|
- http://127.0.0.1:6061/readyz
|
|
interval: 2s
|
|
timeout: 10s
|
|
retries: 15
|
|
minio:
|
|
image: ghcr.io/coollabsio/minio:RELEASE.2025-10-15T17-29-55Z
|
|
command: server /data
|
|
environment:
|
|
- MINIO_ROOT_USER=${SERVICE_USER_MINIO}
|
|
- MINIO_ROOT_PASSWORD=${SERVICE_PASSWORD_MINIO}
|
|
volumes:
|
|
- minio-data:/data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- mc
|
|
- ready
|
|
- local
|
|
interval: 5s
|
|
timeout: 20s
|
|
retries: 10
|
|
minio-init:
|
|
image: minio/mc:latest
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
entrypoint: |
|
|
sh -c "
|
|
mc alias set local http://minio:9000 ${SERVICE_USER_MINIO} ${SERVICE_PASSWORD_MINIO} &&
|
|
mc mb -p local/penpot || true &&
|
|
mc anonymous set private local/penpot
|
|
"
|
|
restart: no
|
|
exclude_from_hc: true
|
|
postgres:
|
|
image: postgres:15
|
|
volumes:
|
|
- penpot-postgresql-data:/var/lib/postgresql/data
|
|
environment:
|
|
- POSTGRES_INITDB_ARGS=--data-checksums
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
- POSTGRES_DB=${POSTGRES_DB:-penpot}
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}
|
|
interval: 5s
|
|
timeout: 20s
|
|
retries: 10
|
|
penpot-valkey:
|
|
image: valkey/valkey:8.1
|
|
volumes:
|
|
- penpot-valkey-data:/data
|
|
environment:
|
|
- VALKEY_EXTRA_FLAGS=--maxmemory 128mb --maxmemory-policy volatile-lfu
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- valkey-cli ping | grep PONG
|
|
interval: 1s
|
|
timeout: 3s
|
|
retries: 5
|
|
start_period: 3s
|
|
mailpit:
|
|
image: axllent/mailpit:v1.28
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- /mailpit
|
|
- readyz
|
|
interval: 5s
|
|
timeout: 20s
|
|
retries: 10
|