mirror of
https://github.com/hanzoai/templates-blueprints.git
synced 2026-10-30 14:55:00 +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.
159 lines
5.2 KiB
YAML
159 lines
5.2 KiB
YAML
services:
|
|
chaskiq:
|
|
image: chaskiq/chaskiq:latest
|
|
environment:
|
|
- REDIS_URL=redis://redis:6379/
|
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- SERVICE_URL=${SERVICE_URL_CHASKIQ}
|
|
- HOST=${SERVICE_URL_CHASKIQ_3000}
|
|
- ASSET_HOST=${SERVICE_URL_CHASKIQ_3000}
|
|
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
|
|
- SNS_CONFIGURATION_SET=metrics
|
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
|
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
|
|
- AWS_S3_BUCKET=${AWS_S3_BUCKET:-}
|
|
- AWS_S3_REGION=${AWS_S3_REGION:-}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example}
|
|
- ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
|
- DEFAULT_SENDER_EMAIL=${DEFAULT_SENDER_EMAIL:-admin@example}
|
|
- LOCAL_STORAGE_PATH=/data/storage
|
|
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE:-local}
|
|
- SMTP_DELIVERY_METHOD=${SMTP_DELIVERY_METHOD:-}
|
|
- SMTP_ADDRESS=${SMTP_ADDRESS:-}
|
|
- SMTP_USERNAME=${SMTP_USERNAME:-}
|
|
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
|
|
- CHASKIQ_APPSTORE_TOKEN=${CHASKIQ_APPSTORE_TOKEN:-}
|
|
- APP_ENV=production
|
|
- RAILS_ENV=production
|
|
- RACK_ENV=production
|
|
- RAILS_SERVE_STATIC_FILES=true
|
|
- SECRET_KEY_BASE=$SERVICE_PASSWORD_64_SECRET
|
|
- RAILS_LOG_TO_STDOUT=true
|
|
- ENABLED_AUDITS=true
|
|
- TZ=Europe/Madrid
|
|
entrypoint:
|
|
- /entrypoint.sh
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
volumes:
|
|
- chaskiq-storage:/data/storage
|
|
- type: bind
|
|
source: ./entrypoint.sh
|
|
target: /entrypoint.sh
|
|
content: |
|
|
#!/bin/sh
|
|
set -e
|
|
rm -f /usr/src/app/tmp/pids/server.pid
|
|
exec "$@"
|
|
echo "Running database migrations..."
|
|
bundle exec rails db:setup || true
|
|
bundle exec rails db:migrate
|
|
echo "Finished running database migrations."
|
|
echo "Running packages update..."
|
|
bundle exec rails packages:update
|
|
echo "Finished packages update."
|
|
if [ ! -f /usr/src/app/admin_generated ]; then
|
|
echo "/usr/src/app/admin_generated not found, executing admin generation.."
|
|
bundle exec rake admin_generator
|
|
touch /usr/src/app/admin_generated
|
|
echo "Admin generation finished !"
|
|
fi
|
|
bundle exec rails s -b 0.0.0.0 -p 3000
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- curl
|
|
- -f
|
|
- http://127.0.0.1:3000
|
|
interval: 5s
|
|
timeout: 20s
|
|
retries: 15
|
|
sidekiq:
|
|
image: chaskiq/chaskiq:latest
|
|
environment:
|
|
- REDIS_URL=redis://redis:6379/
|
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- HOST=${SERVICE_URL_CHASKIQ_3000}
|
|
- ASSET_HOST=${SERVICE_URL_CHASKIQ_3000}
|
|
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
|
|
- SNS_CONFIGURATION_SET=metrics
|
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
|
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
|
|
- AWS_S3_BUCKET=${AWS_S3_BUCKET:-}
|
|
- AWS_S3_REGION=${AWS_S3_REGION:-}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example}
|
|
- ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
|
- DEFAULT_SENDER_EMAIL=${DEFAULT_SENDER_EMAIL:-admin@example}
|
|
- LOCAL_STORAGE_PATH=/data/storage
|
|
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE:-local}
|
|
- SMTP_DELIVERY_METHOD=${SMTP_DELIVERY_METHOD:-}
|
|
- SMTP_ADDRESS=${SMTP_ADDRESS:-}
|
|
- SMTP_USERNAME=${SMTP_USERNAME:-}
|
|
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
|
|
- CHASKIQ_APPSTORE_TOKEN=${CHASKIQ_APPSTORE_TOKEN:-}
|
|
- APP_ENV=production
|
|
- RAILS_ENV=production
|
|
- RACK_ENV=production
|
|
- RAILS_SERVE_STATIC_FILES=true
|
|
- SECRET_KEY_BASE=$SERVICE_PASSWORD_64_SECRET
|
|
- RAILS_LOG_TO_STDOUT=true
|
|
- ENABLED_AUDITS=true
|
|
- TZ=Europe/Madrid
|
|
volumes:
|
|
- chaskiq-storage:/data/storage
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
chaskiq:
|
|
condition: service_healthy
|
|
command:
|
|
- bundle
|
|
- exec
|
|
- sidekiq
|
|
- -C
|
|
- config/sidekiq.yml
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- bundle exec rails runner 'puts Sidekiq.redis(&:info)' > /dev/null 2>&1
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 15
|
|
postgresql:
|
|
image: postgres:14-alpine
|
|
volumes:
|
|
- postgresql-data:/var/lib/postgresql/data
|
|
environment:
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
|
- POSTGRES_DB=${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_INITDB_ARGS= --data-checksums
|
|
- PSQL_HISTFILE=/root/log/.psql_history
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
redis:
|
|
image: redis:6-alpine
|
|
restart: always
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- redis-cli
|
|
- ping
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|