mirror of
https://github.com/Dokploy/templates.git
synced 2026-07-23 06:45:28 +02:00
Adds OneUptime (open-source observability platform: uptime monitoring, status pages, incident management, on-call, logs/traces/metrics) as a template, following upstream's current single-app architecture (app + nginx ingress + postgres + redis + clickhouse + probe). Closes #514 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
159 lines
5.0 KiB
YAML
159 lines
5.0 KiB
YAML
services:
|
|
oneuptime:
|
|
image: oneuptime/app:11.5.6
|
|
restart: unless-stopped
|
|
environment:
|
|
- PORT=3002
|
|
- NODE_ENV=production
|
|
- BILLING_ENABLED=false
|
|
- IS_ENTERPRISE_EDITION=false
|
|
- LOG_LEVEL=ERROR
|
|
- DISABLE_TELEMETRY=true
|
|
# Public host (domain) and protocol used to build links.
|
|
- HOST=${HOST}
|
|
- HTTP_PROTOCOL=${HTTP_PROTOCOL}
|
|
- ONEUPTIME_SECRET=${ONEUPTIME_SECRET}
|
|
- ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
|
|
# Probes that present this key are allowed to self-register.
|
|
- REGISTER_PROBE_KEY=${REGISTER_PROBE_KEY}
|
|
- DATABASE_HOST=postgres
|
|
- DATABASE_PORT=5432
|
|
- DATABASE_USERNAME=postgres
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_NAME=oneuptimedb
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_USERNAME=default
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
- REDIS_DB=0
|
|
- CLICKHOUSE_HOST=clickhouse
|
|
- CLICKHOUSE_PORT=8123
|
|
- CLICKHOUSE_USER=default
|
|
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
|
|
- CLICKHOUSE_DATABASE=oneuptime
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
clickhouse:
|
|
condition: service_healthy
|
|
|
|
ingress:
|
|
image: oneuptime/nginx:11.5.6
|
|
restart: unless-stopped
|
|
environment:
|
|
- NODE_ENV=production
|
|
- BILLING_ENABLED=false
|
|
- LOG_LEVEL=ERROR
|
|
- DISABLE_TELEMETRY=true
|
|
- HOST=${HOST}
|
|
- NGINX_LISTEN_ADDRESS=
|
|
- NGINX_LISTEN_OPTIONS=
|
|
- PROVISION_SSL=
|
|
# Long domains (e.g. generated *.sslip.io hosts) overflow nginx's
|
|
# default server_names_hash_bucket_size of 64.
|
|
- SERVER_NAMES_HASH_BUCKET_SIZE=128
|
|
# Where nginx proxies the UI/API to.
|
|
- SERVER_APP_HOSTNAME=oneuptime
|
|
- APP_PORT=3002
|
|
# The marketing "home" app is not deployed (only used when billing is
|
|
# enabled), but nginx needs the vars to render its config.
|
|
- SERVER_HOME_HOSTNAME=home
|
|
- HOME_PORT=1444
|
|
# The ingress sidecar (custom-domain certificate writer) connects to
|
|
# Postgres and Redis.
|
|
- ONEUPTIME_SECRET=${ONEUPTIME_SECRET}
|
|
- ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
|
|
- DATABASE_HOST=postgres
|
|
- DATABASE_PORT=5432
|
|
- DATABASE_USERNAME=postgres
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_NAME=oneuptimedb
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_USERNAME=default
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
- REDIS_DB=0
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
oneuptime:
|
|
condition: service_started
|
|
|
|
probe:
|
|
image: oneuptime/probe:11.5.6
|
|
restart: unless-stopped
|
|
environment:
|
|
- PORT=3874
|
|
- NODE_ENV=production
|
|
- LOG_LEVEL=ERROR
|
|
- DISABLE_TELEMETRY=true
|
|
# The probe reaches OneUptime through the ingress ("ingress" is part of
|
|
# nginx's server_name, so all API routes resolve correctly).
|
|
- ONEUPTIME_URL=http://ingress:7849
|
|
- PROBE_NAME=Probe-1
|
|
- PROBE_DESCRIPTION=Default probe for monitors
|
|
- PROBE_MONITORING_WORKERS=3
|
|
- PROBE_MONITOR_FETCH_LIMIT=10
|
|
- PROBE_KEY=${PROBE_KEY}
|
|
- REGISTER_PROBE_KEY=${REGISTER_PROBE_KEY}
|
|
depends_on:
|
|
ingress:
|
|
condition: service_started
|
|
|
|
postgres:
|
|
image: postgres:15
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
|
|
- POSTGRES_DB=oneuptimedb
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d oneuptimedb"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 15s
|
|
|
|
redis:
|
|
image: redis:7.0.12
|
|
restart: unless-stopped
|
|
command: redis-server --requirepass "${REDIS_PASSWORD}" --save "" --appendonly no
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli -a \"$$REDIS_PASSWORD\" ping | grep PONG"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 10s
|
|
environment:
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:25.7
|
|
restart: unless-stopped
|
|
environment:
|
|
- CLICKHOUSE_USER=default
|
|
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
|
|
- CLICKHOUSE_DB=oneuptime
|
|
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
|
|
volumes:
|
|
- clickhouse-data:/var/lib/clickhouse
|
|
# Single-node cluster + embedded Keeper (OneUptime's analytics schema is
|
|
# always ReplicatedMergeTree + Distributed) and Distributed-insert
|
|
# batching, as shipped by upstream.
|
|
- ../files/clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml
|
|
- ../files/clickhouse/distributed-insert-tuning.xml:/etc/clickhouse-server/users.d/distributed-insert-tuning.xml
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "clickhouse-client --password \"$$CLICKHOUSE_PASSWORD\" --query 'SELECT 1'"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 15s
|
|
|
|
volumes:
|
|
postgres-data:
|
|
clickhouse-data:
|