diff --git a/blueprints/uptimekit/docker-compose.yml b/blueprints/uptimekit/docker-compose.yml new file mode 100644 index 00000000..35d46f90 --- /dev/null +++ b/blueprints/uptimekit/docker-compose.yml @@ -0,0 +1,91 @@ +services: + dash: + image: ghcr.io/uptimekit/dash:latest + env_file: + - .env + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/uptimekit + - CLICKHOUSE_URL=http://clickhouse:8123 + - CLICKHOUSE_USER=default + - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} + - REDIS_URL=redis://redis:6379 + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + healthcheck: + test: + [ + "CMD-SHELL", + "IP=$$(hostname -i | awk '{print $$1}'); wget -qO- \"http://$$IP:3000/api/health\" >/dev/null 2>&1", + ] + interval: 5s + timeout: 5s + retries: 12 + start_period: 20s + restart: always + + status-page: + image: ghcr.io/uptimekit/status-page:latest + env_file: + - .env + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/uptimekit + - CLICKHOUSE_URL=http://clickhouse:8123 + - CLICKHOUSE_USER=default + - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} + - REDIS_URL=redis://redis:6379 + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + clickhouse: + condition: service_started + dash: + condition: service_healthy + restart: always + + db: + image: postgres:18-alpine + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: uptimekit + volumes: + - db_data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d uptimekit"] + interval: 5s + timeout: 5s + retries: 12 + start_period: 10s + restart: always + + redis: + image: redis:8.0-alpine + volumes: + - redis_data:/data + restart: always + + clickhouse: + image: clickhouse/clickhouse-server:latest + volumes: + - clickhouse_data:/var/lib/clickhouse + environment: + CLICKHOUSE_DB: uptimekit + CLICKHOUSE_USER: default + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} + CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 + user: "root" + ulimits: + nofile: + soft: 262144 + hard: 262144 + restart: always + +volumes: + db_data: + clickhouse_data: + redis_data: \ No newline at end of file diff --git a/blueprints/uptimekit/meta.json b/blueprints/uptimekit/meta.json new file mode 100644 index 00000000..5673afad --- /dev/null +++ b/blueprints/uptimekit/meta.json @@ -0,0 +1,18 @@ +{ + "id": "uptimekit", + "name": "Uptimekit", + "version": "3.1.0", + "description": "The modern open-source status page and monitoring solution.", + "logo": "uptimekit.svg", + "links": { + "github": "https://github.com/uptimekit/uptimekit", + "website": "https://uptimekit.dev/", + "docs": "https://docs.uptimekit.dev/" + }, + "tags": [ + "monitoring", + "uptime", + "status-page", + "distributed" + ] +} diff --git a/blueprints/uptimekit/template.toml b/blueprints/uptimekit/template.toml new file mode 100644 index 00000000..45e02bad --- /dev/null +++ b/blueprints/uptimekit/template.toml @@ -0,0 +1,24 @@ +[variables] +main_domain = "${domain}" +second_domain = "${domain}" +secret_base = "${base64:64}" +db_password = "${password:32}" +clickhouse_password = "${password:32}" + +[config] +[[config.domains]] +serviceName = "dash" +port = 3000 +host = "${main_domain}" +[[config.domains]] +serviceName = "status-page" +port = 3001 +host = "${second_domain}" + + +[config.env] +BETTER_AUTH_SECRET = "${secret_base}" +BETTER_AUTH_URL = "http://${main_domain}" +NEXT_PUBLIC_URL = "http://${main_domain}" +POSTGRES_PASSWORD = "${db_password}" +CLICKHOUSE_PASSWORD = "${clickhouse_password}" diff --git a/blueprints/uptimekit/uptimekit.svg b/blueprints/uptimekit/uptimekit.svg new file mode 100644 index 00000000..2d11d31e --- /dev/null +++ b/blueprints/uptimekit/uptimekit.svg @@ -0,0 +1,3 @@ + + +