Self-hosted server status monitor — public dashboard, alerts, and multi-tenant dashboards.
7.7K
A clean, self-hosted server and service status monitor. Get a beautiful public status page, real-time uptime tracking, and instant alerts — all running on your own infrastructure.
services:
status-server:
image: applegater/status-server:latest
container_name: status-server
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./servers.json:/config/servers.json
environment:
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USER=statusadmin
- DB_PASSWORD=changeme
- DB_NAME=status_monitor
- SESSION_SECRET=changeme_use_a_long_random_string
- EXTERNAL_URL=https://status.yourdomain.com
- TZ=America/Los_Angeles
cap_add:
- NET_RAW
depends_on:
- mariadb
mariadb:
image: mariadb:11
container_name: mariadb
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_DATABASE=status_monitor
- MYSQL_USER=statusadmin
- MYSQL_PASSWORD=changeme
volumes:
- mariadb_data:/var/lib/mysql
volumes:
mariadb_data:
A full example is available at docker-compose.example.yml.
| Variable | Required | Description |
|---|---|---|
DB_HOST | ✅ | MariaDB hostname |
DB_PORT | ✅ | MariaDB port (default 3306) |
DB_USER | ✅ | Database username |
DB_PASSWORD | ✅ | Database password |
DB_NAME | ✅ | Database name |
SESSION_SECRET | ✅ | Long random string for session signing |
EXTERNAL_URL | ✅ | Public base URL for dashboard links |
TZ | — | Container timezone (default UTC) |
CHECK_INTERVAL | — | Check interval in ms (default 30000) |
PORT | — | HTTP port (default 3000) |
SMTP_HOST | — | SMTP server for email alerts |
SMTP_PORT | — | SMTP port |
SMTP_USER | — | SMTP username |
SMTP_PASS | — | SMTP password |
SMTP_FROM | — | From address for email alerts |
| Platform | Architecture |
|---|---|
linux/amd64 | Standard servers and desktops |
linux/arm64 | Raspberry Pi, Apple Silicon |
Content type
Image
Digest
sha256:57011c4c0…
Size
70.1 MB
Last updated
about 1 hour ago
docker pull applegater/status-server