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.
87 lines
2.9 KiB
YAML
87 lines
2.9 KiB
YAML
services:
|
|
open-archiver:
|
|
image: logiclabshq/open-archiver:latest
|
|
environment:
|
|
- ENCRYPTION_KEY=${SERVICE_HEX_64_ENCRYPTIONKEY}
|
|
- STORAGE_ENCRYPTION_KEY=${SERVICE_HEX_64_STORAGEENCRYPTIONKEY}
|
|
- PORT_BACKEND=${PORT_BACKEND:-4000}
|
|
- PORT_FRONTEND=${PORT_FRONTEND:-3000}
|
|
- NODE_ENV=${NODE_ENV:-production}
|
|
- SYNC_FREQUENCY=${SYNC_FREQUENCY:-* * * * *}
|
|
- POSTGRES_DB=${POSTGRES_DB:-open_archive}
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-open-archiver-db}
|
|
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILISEARCH}
|
|
- MEILI_HOST=http://meilisearch:7700
|
|
- REDIS_HOST=valkey
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=${SERVICE_PASSWORD_VALKEY}
|
|
- REDIS_TLS_ENABLED=false
|
|
- STORAGE_TYPE=${STORAGE_TYPE:-local}
|
|
- STORAGE_LOCAL_ROOT_PATH=${STORAGE_LOCAL_ROOT_PATH:-/var/data/open-archiver}
|
|
- BODY_SIZE_LIMIT=${BODY_SIZE_LIMIT:-100M}
|
|
- STORAGE_S3_ENDPOINT=${STORAGE_S3_ENDPOINT}
|
|
- STORAGE_S3_BUCKET=${STORAGE_S3_BUCKET}
|
|
- STORAGE_S3_ACCESS_KEY_ID=${STORAGE_S3_ACCESS_KEY_ID}
|
|
- STORAGE_S3_SECRET_ACCESS_KEY=${STORAGE_S3_SECRET_ACCESS_KEY}
|
|
- STORAGE_S3_REGION=${STORAGE_S3_REGION}
|
|
- STORAGE_S3_FORCE_PATH_STYLE=${STORAGE_S3_FORCE_PATH_STYLE:-false}
|
|
- JWT_SECRET=${SERVICE_BASE64_128_JWT}
|
|
- JWT_EXPIRES_IN=${JWT_EXPIRES_IN:-7d}
|
|
- RATE_LIMIT_WINDOW_MS=${RATE_LIMIT_WINDOW_MS:-60000}
|
|
- RATE_LIMIT_MAX_REQUESTS=${RATE_LIMIT_MAX_REQUESTS:-100}
|
|
volumes:
|
|
- archiver-data:/var/data/open-archiver
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
valkey:
|
|
condition: service_healthy
|
|
meilisearch:
|
|
condition: service_healthy
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
environment:
|
|
- POSTGRES_DB=${POSTGRES_DB:-open-archiver-db}
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
- LC_ALL=C
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}
|
|
interval: 10s
|
|
timeout: 20s
|
|
retries: 10
|
|
valkey:
|
|
image: valkey/valkey:8-alpine
|
|
command: valkey-server --requirepass ${SERVICE_PASSWORD_VALKEY}
|
|
volumes:
|
|
- valkey-data:/data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- redis-cli
|
|
- ping
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1.15
|
|
environment:
|
|
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILISEARCH}
|
|
volumes:
|
|
- meilisearch-data:/meili_data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- curl
|
|
- -f
|
|
- http://127.0.0.1:7700/health
|
|
interval: 2s
|
|
timeout: 10s
|
|
retries: 15
|