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.
152 lines
4.1 KiB
TOML
152 lines
4.1 KiB
TOML
[variables]
|
|
libredesk_domain = "${domain}"
|
|
|
|
libredesk_system_user_password = "${base64:32}"
|
|
|
|
pg_username = "${username}"
|
|
pg_password = "${password:16}"
|
|
pg_database = "libredesk"
|
|
|
|
[config]
|
|
env = [
|
|
"LIBREDESK_SYSTEM_USER_PASSWORD=${libredesk_system_user_password}",
|
|
"POSTGRES_USER=${pg_username}",
|
|
"POSTGRES_PASSWORD=${pg_password}",
|
|
"POSTGRES_DB=${pg_database}",
|
|
]
|
|
|
|
[[config.domains]]
|
|
serviceName = "libredesk"
|
|
port = 9000
|
|
host = "${libredesk_domain}"
|
|
|
|
[[config.mounts]]
|
|
filePath = "config.toml"
|
|
content = """
|
|
|
|
[app]
|
|
# Log level: info, debug, warn, error, fatal
|
|
log_level = "debug"
|
|
# Environment: dev, prod.
|
|
# Setting to "dev" will enable color logging in terminal.
|
|
env = "dev"
|
|
# Whether to automatically check for application updates on start up, app updates are shown as a banner in the admin panel.
|
|
check_updates = true
|
|
|
|
# HTTP server.
|
|
[app.server]
|
|
# Address to bind the HTTP server to.
|
|
address = "0.0.0.0:9000"
|
|
# Unix socket path (leave empty to use TCP address instead)
|
|
socket = ""
|
|
# Do NOT disable secure cookies in production environment if you don't know exactly what you're doing!
|
|
disable_secure_cookies = false
|
|
# Request read and write timeouts.
|
|
read_timeout = "5s"
|
|
write_timeout = "5s"
|
|
# Maximum request body size in bytes (100MB)
|
|
# If you are using proxy, you may need to configure them to allow larger request bodies.
|
|
max_body_size = 104857600
|
|
# Size of the read buffer for incoming requests
|
|
read_buffer_size = 4096
|
|
# Keepalive settings.
|
|
keepalive_timeout = "10s"
|
|
|
|
# File upload provider to use, either `fs` or `s3`.
|
|
[upload]
|
|
provider = "fs"
|
|
|
|
# Filesystem provider.
|
|
[upload.fs]
|
|
# Directory where uploaded files are stored, make sure this directory exists and is writable by the application.
|
|
upload_path = 'uploads'
|
|
|
|
# S3 provider.
|
|
[upload.s3]
|
|
# S3 endpoint URL (required only for non-AWS S3-compatible providers like MinIO).
|
|
# Leave empty to use default AWS endpoints.
|
|
url = ""
|
|
|
|
# AWS S3 credentials, keep empty to use attached IAM roles.
|
|
access_key = ""
|
|
secret_key = ""
|
|
|
|
# AWS region, e.g., "us-east-1", "eu-west-1", etc.
|
|
region = "ap-south-1"
|
|
# S3 bucket name where files will be stored.
|
|
bucket = "bucket-name"
|
|
# Optional prefix path within the S3 bucket where files will be stored.
|
|
# Example, if set to "uploads/media", files will be stored under that path.
|
|
# Useful for organizing files inside a shared bucket.
|
|
bucket_path = ""
|
|
# S3 signed URL expiry duration (e.g., "30m", "1h")
|
|
expiry = "30m"
|
|
|
|
# Postgres.
|
|
[db]
|
|
# If running locally, use `localhost`.
|
|
host = "db"
|
|
# Database port, default is 5432.
|
|
port = 5432
|
|
# Update the following values with your database credentials.
|
|
user = "${pg_username}"
|
|
password = "${pg_password}"
|
|
database = "${pg_database}"
|
|
ssl_mode = "disable"
|
|
# Maximum number of open database connections
|
|
max_open = 30
|
|
# Maximum number of idle connections in the pool
|
|
max_idle = 30
|
|
# Maximum time a connection can be reused before being closed
|
|
max_lifetime = "300s"
|
|
|
|
# Redis.
|
|
[redis]
|
|
# If running locally, use `localhost:6379`.
|
|
address = "redis:6379"
|
|
password = ""
|
|
db = 0
|
|
|
|
[message]
|
|
# Number of workers processing outgoing message queue
|
|
outgoing_queue_workers = 10
|
|
# Number of workers processing incoming message queue
|
|
incoming_queue_workers = 10
|
|
# How often to scan for outgoing messages to process, keep it low to process messages quickly.
|
|
message_outgoing_scan_interval = "50ms"
|
|
# Maximum number of messages that can be queued for incoming processing
|
|
incoming_queue_size = 5000
|
|
# Maximum number of messages that can be queued for outgoing processing
|
|
outgoing_queue_size = 5000
|
|
|
|
[notification]
|
|
# Number of concurrent notification workers
|
|
concurrency = 2
|
|
# Maximum number of notifications that can be queued
|
|
queue_size = 2000
|
|
|
|
[automation]
|
|
# Number of workers processing automation rules
|
|
worker_count = 10
|
|
|
|
[autoassigner]
|
|
# How often to run automatic conversation assignment
|
|
autoassign_interval = "5m"
|
|
|
|
[webhook]
|
|
# Number of webhook delivery workers
|
|
workers = 5
|
|
# Maximum number of webhook deliveries that can be queued
|
|
queue_size = 10000
|
|
# HTTP timeout for webhook requests
|
|
timeout = "15s"
|
|
|
|
[conversation]
|
|
# How often to check for conversations to unsnooze
|
|
unsnooze_interval = "5m"
|
|
|
|
[sla]
|
|
# How often to evaluate SLA compliance for conversations
|
|
evaluation_interval = "5m"
|
|
|
|
""" |