Set up Uptime Kuma for monitoring with Basic Auth protection.
# Using Docker
docker run --rm httpd:alpine htpasswd -nb username 'YourSecurePassword123!' | sed 's/\$/\$\$/g'
# Output example: username:$$apr1$$xxxxx$$yyyyyyyyyyyyyyy
# Save this for the docker-compose fileservices:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
volumes:
- data:/app/data
mem_limit: 256m
mem_reservation: 128m
labels:
- "traefik.enable=true"
# Router
- "traefik.http.routers.uptime-kuma.rule=Host(`devops.yourdomain.com`)"
- "traefik.http.routers.uptime-kuma.entrypoints=websecure"
- "traefik.http.routers.uptime-kuma.tls=true"
- "traefik.http.routers.uptime-kuma.middlewares=uptime-kuma-auth"
# Service
- "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
# Basic Auth Middleware (replace with your generated hash)
- "traefik.http.middlewares.uptime-kuma-auth.basicauth.users=username:$$apr1$$xxxxx$$yyyyyyyyyyyyyyy"
networks:
- web
volumes:
data:
networks:
web:
external: truedocker compose up -dAdd A record in Cloudflare:
- Type: A
- Name: devops
- Content: YOUR_SERVER_IP
- Proxy: ON
- Access
https://devops.yourdomain.com - Enter Basic Auth credentials
- Create admin account in Uptime Kuma
- Add monitors for your services
| Service | URL | Interval |
|---|---|---|
| Main Site | https://yourdomain.com | 60s |
| API | https://api.yourdomain.com/up | 60s |
| Traefik | http://traefik:8080 (internal) | 60s |
Uptime Kuma supports:
- Telegram
- Discord
- Slack
- Email (SMTP)
- Webhook
- And many more...
→ Security