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.
89 lines
2.4 KiB
TOML
Executable File
89 lines
2.4 KiB
TOML
Executable File
[variables]
|
|
main_domain = "${domain}"
|
|
# Password for the bundled PostgreSQL (used as replication source and bucket storage).
|
|
postgres_password = "${password:32}"
|
|
# Auto-generated token for the PowerSync API (used in Authorization header).
|
|
admin_token = "${password:32}"
|
|
# HS256 secret used to sign development JWTs for clients (base64url encoded).
|
|
jwks_key = "${password:48}"
|
|
|
|
[config]
|
|
[[config.domains]]
|
|
serviceName = "powersync"
|
|
port = 8080
|
|
host = "${main_domain}"
|
|
# PowerSync has no route on "/"; the liveness probe returns 200.
|
|
path = "/probes/liveness"
|
|
|
|
[config.env]
|
|
POSTGRES_PASSWORD = "${postgres_password}"
|
|
|
|
# PowerSync service configuration.
|
|
# Docs: https://docs.powersync.com/self-hosting/installation/powersync-service-setup
|
|
[[config.mounts]]
|
|
filePath = "powersync.yaml"
|
|
content = """
|
|
telemetry:
|
|
disable_telemetry_sharing: true
|
|
|
|
# Replication source: the bundled Postgres (wal_level=logical).
|
|
# Point this at your own database to sync real data.
|
|
replication:
|
|
connections:
|
|
- type: postgresql
|
|
uri: postgresql://powersync:${postgres_password}@postgres:5432/powersync
|
|
sslmode: disable
|
|
|
|
# Bucket storage. Must be a different database than the replication source.
|
|
storage:
|
|
type: postgresql
|
|
uri: postgresql://powersync:${postgres_password}@postgres:5432/powersync_storage
|
|
sslmode: disable
|
|
|
|
port: 8080
|
|
|
|
# Sync rules: syncs the demo "lists" table to all clients.
|
|
# Edit these for your own schema: https://docs.powersync.com/usage/sync-rules
|
|
sync_rules:
|
|
content: |
|
|
bucket_definitions:
|
|
global:
|
|
data:
|
|
- SELECT * FROM lists
|
|
|
|
client_auth:
|
|
# HS256 key for signing development tokens.
|
|
# See https://docs.powersync.com/installation/authentication-setup/custom
|
|
jwks:
|
|
keys:
|
|
- kty: oct
|
|
alg: HS256
|
|
kid: powersync-dev
|
|
k: ${jwks_key}
|
|
audience: ["powersync"]
|
|
|
|
api:
|
|
tokens:
|
|
- ${admin_token}
|
|
"""
|
|
|
|
# Runs once on the first Postgres startup (empty data volume).
|
|
[[config.mounts]]
|
|
filePath = "init-powersync.sql"
|
|
content = """
|
|
-- Separate database for PowerSync bucket storage.
|
|
CREATE DATABASE powersync_storage OWNER powersync;
|
|
|
|
-- Demo table synced by the default sync rules.
|
|
CREATE TABLE lists (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name text NOT NULL,
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
INSERT INTO lists (name) VALUES ('Welcome to PowerSync');
|
|
|
|
-- Publication used by PowerSync logical replication.
|
|
CREATE PUBLICATION powersync FOR ALL TABLES;
|
|
"""
|