-
-
Notifications
You must be signed in to change notification settings - Fork 627
Open
Description
I have followed the instructions and tried many different things. Overall basically private location shows up but "not seen". Examining all logs and options I dont see anything that shows the reason.
# networks:
# openstatus:
# driver: bridge
# name: openstatus
volumes:
libsql-data:
name: openstatus-libsql-data
services:
# External services
libsql:
container_name: openstatus-libsql
image: ghcr.io/tursodatabase/libsql-server:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "8082:8080"
- "5001:5001"
volumes:
- libsql-data:/var/lib/sqld
environment:
- SQLD_NODE=primary
healthcheck:
test:
[
"CMD-SHELL",
'perl -e ''use IO::Socket::INET; exit(IO::Socket::INET->new(PeerAddr=>"127.0.0.1:8080",Timeout=>1) ? 0 : 1);''',
]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
restart: unless-stopped
tinybird-local:
container_name: openstatus-tinybird
image: tinybirdco/tinybird-local:latest
platform: linux/amd64
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "7181:7181"
environment:
- COMPATIBILITY_MODE=1
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7181/"]
interval: 15s
timeout: 5s
retries: 5
start_period: 20s
restart: unless-stopped
# Internal Services
workflows:
container_name: openstatus-workflows
build:
context: .
dockerfile: apps/workflows/Dockerfile
image: openstatus/workflows:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "3003:3000"
volumes:
- ./data:/app/data
env_file:
- .env.docker
environment:
- DATABASE_URL=http://libsql:8080
- PORT=3000
depends_on:
libsql:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ping || exit 1"]
interval: 15s
timeout: 10s
retries: 3
start_period: 30s
restart: unless-stopped
server:
container_name: openstatus-server
build:
context: .
dockerfile: apps/server/Dockerfile
image: openstatus/server:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "3002:3000"
env_file:
- .env.docker
environment:
- DATABASE_URL=http://libsql:8080
- PORT=3000
depends_on:
workflows:
condition: service_healthy
libsql:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ping || exit 1"]
interval: 15s
timeout: 10s
retries: 3
start_period: 30s
restart: unless-stopped
private-location:
container_name: openstatus-private-location
build:
context: apps/private-location
dockerfile: Dockerfile
image: openstatus/private-location:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "8081:8080"
env_file:
- .env.docker
environment:
- DB_URL=http://libsql:8080
- GIN_MODE=release
- PORT=8080
depends_on:
server:
condition: service_healthy
healthcheck:
test:
[
"CMD",
"wget",
"--spider",
"-q",
"http://localhost:8080/health",
]
interval: 15s
timeout: 10s
retries: 3
start_period: 30s
restart: unless-stopped
dashboard:
container_name: openstatus-dashboard
build:
context: .
dockerfile: apps/dashboard/Dockerfile
image: openstatus/dashboard:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "3005:3000"
env_file:
- .env.docker
environment:
- DATABASE_URL=http://libsql:8080
- PORT=3000
- HOSTNAME=0.0.0.0
- AUTH_TRUST_HOST=true
depends_on:
workflows:
condition: service_healthy
libsql:
condition: service_healthy
server:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
interval: 15s
timeout: 10s
retries: 3
start_period: 45s
restart: unless-stopped
status-page:
container_name: openstatus-status-page
build:
context: .
dockerfile: apps/status-page/Dockerfile
image: openstatus/status-page:latest
networks:
- pdns-net
dns:
- ${DNS_HOST}
ports:
- "3004:3000"
env_file:
- .env.docker
environment:
- DATABASE_URL=http://libsql:8080
- PORT=3000
- HOSTNAME=0.0.0.0
- AUTH_TRUST_HOST=true
depends_on:
workflows:
condition: service_healthy
libsql:
condition: service_healthy
server:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
interval: 15s
timeout: 10s
retries: 3
start_period: 45s
restart: unless-stopped
networks:
pdns-net:
external: true
and my env is
# ============================================================================
# Docker Environment Configuration (Example)
# ============================================================================
# Copy this file to .env.docker and replace with your actual values
#
# NOTE: Build-time placeholders are set in each service's dofigen.yml file.
# Values in this file override those placeholders at runtime via docker compose.
# Required values are marked with [REQUIRED]
# DATABASE
# ============================================================================
# LibSQL database connection - points to the libsql container
DATABASE_URL=http://libsql:8080
DATABASE_AUTH_TOKEN=
# REDIS & QUEUE
# ============================================================================
# Redis (optional) - for caching
UPSTASH_REDIS_REST_URL=http://localhost:6379
UPSTASH_REDIS_REST_TOKEN=placeholder
# QStash (optional - for background jobs)
QSTASH_CURRENT_SIGNING_KEY=
QSTASH_NEXT_SIGNING_KEY=
QSTASH_TOKEN=
QSTASH_URL=https://qstash.upstash.io/v1/publish/
# ANALYTICS
# ============================================================================
# Tinybird (optional - for monitor analytics and charts)
# Leave empty to disable analytics features
# Get from: https://www.tinybird.co
TINYBIRD_TOKEN=p.eyJ1IjogImI3NWY0M2ZmLTZlMjktNDZhZC1iODQ1LWFiMDc2YWU2MzY4MSIsICJpZCI6ICJiNmQ3MzJjYy1kMzdmLTQ5NTEtODA3Yi03N2NhMjI1OGQ0YzEiLCAiaG9zdCI6IG51bGx9._iOVcMdb6w0eyE9OI-n0VgN2SdUzWdhaZyCIPOGG7Kg
CLOUD_PROVIDER=local
# Tinybird URL (optional - defaults to cloud API)
# For local Tinybird container, set to: http://tinybird-local:7181
TINYBIRD_URL=http://tinybird-local:7181
# EMAIL
# ============================================================================
# [REQUIRED] Resend API key for sending magic link emails
# Get from: https://resend.com
RESEND_API_KEY=re_your_resend_api_key_here
# AUTHENTICATION
# ============================================================================
# [REQUIRED] NextAuth secret - generate with: openssl rand -base64 32
AUTH_SECRET=your-random-secret-here-min-32-chars
# [REQUIRED] Self-hosted mode - enables magic link authentication
# Set to "true" to allow email login without OAuth
SELF_HOST="true"
# GitHub OAuth (optional)
# Get from: https://github.com/settings/developers
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
# Google OAuth (optional)
# Get from: https://console.cloud.google.com
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
# GOOGLE CLOUD
# ============================================================================
# Google Cloud Platform (optional - for scheduled tasks)
GCP_PROJECT_ID=your-value
GCP_LOCATION=your-value
GCP_CLIENT_EMAIL=your-value
GCP_PRIVATE_KEY=your-value
# Cron secret for scheduled jobs
CRON_SECRET=your-random-cron-secret
# API KEYS
# ============================================================================
# Unkey (optional - for API key management)
# Get from: https://unkey.dev
UNKEY_API_ID=
UNKEY_TOKEN=
# Super admin token for privileged operations
SUPER_ADMIN_TOKEN=
# Server region identifier
FLY_REGION=self-hosted
# STRIPE
# ============================================================================
# Stripe (optional - for payments)
# Get from: https://stripe.com/docs/keys
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET_KEY=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
# VERCEL
# ============================================================================
# Vercel (optional - for custom domains)
# Get from: https://vercel.com
PROJECT_ID_VERCEL=
TEAM_ID_VERCEL=
VERCEL_AUTH_BEARER_TOKEN=
# Vercel Blob storage (optional)
BLOB_READ_WRITE_TOKEN=
# OBSERVABILITY
# ============================================================================
# Sentry (optional - error tracking)
# Get from: https://sentry.io
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_AUTH_TOKEN=
# OpenPanel (optional - analytics)
# Get from: https://openpanel.dev
NEXT_PUBLIC_OPENPANEL_CLIENT_ID=
OPENPANEL_CLIENT_SECRET=
# PagerDuty (optional - alerting)
PAGERDUTY_APP_ID=
# Slack webhook (optional)
SLACK_SUPPORT_WEBHOOK_URL=
# Telegram Bot (optional)
TELEGRAM_BOT_TOKEN=
# SERVICE CONFIGURATION
# ============================================================================
NODE_ENV=production
# [REQUIRED] Public URL for the application
NEXT_PUBLIC_URL=https://openstatus.dev.klustr.io
# Screenshot service (optional)
SCREENSHOT_SERVICE_URL=
# External services
OPENSTATUS_INGEST_URL=http://openstatus-server:3000
OPENSTATUS_KEY=c749ac36-4ab2-4e06-b43a-6e12588604f3
# DEVELOPMENT & TESTING
# ============================================================================
# Turbo build mode
TURBO_ENV_MODE=loose
# Playground API keys (optional)
PLAYGROUND_UNKEY_API_KEY=
# Workspace settings (optional)
WORKSPACES_LOOKBACK_30=
WORKSPACES_HIDE_URL=
I had to put openstatus behind HTTPs given the error identified with #1927.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels