certbot cannot issue for internal hostnames (*.nas.local), which made nginx-enabled services with internal names fail on deploy. Add a <service>_nginx_letsencrypt flag (default false) and computed <service>_nginx_ssl_certificate/_key paths: when off the vhost uses the shared self-signed cert (nginx_default_ssl_cert), when on it uses the Let's Encrypt lineage. Gate the certbot include on the flag and apply the pattern to all service roles (deluge, fdroid, gitea, grafana, immich, metabase, ntfy, prowlarr, radarr, seerr, static_web, uptime_kuma).
uptime-kuma - Self-Hosted Monitoring Tool
Deploys Uptime Kuma - a self-hosted monitoring and status page application.
Features
- Website monitoring (HTTP/HTTPS)
- TCP port monitoring
- Ping monitoring
- DNS monitoring
- Status pages
- Notifications (Email, Discord, Slack, ntfy, etc.)
- Multi-language support
- Dark mode
Configuration
Optional Variables
See defaults/main.yml for all configuration options.
Key settings:
uptime_kuma_version: "2"
uptime_kuma_port: 3001
uptime_kuma_data_dir: "{{ podman_projects_dir }}/uptime-kuma/data"
# Nginx reverse proxy
uptime_kuma_nginx_enabled: false
uptime_kuma_nginx_hostname: uptime.nas.local
Storage Requirements
CRITICAL: Uptime Kuma uses SQLite and requires local storage with POSIX file lock support.
- ✅ Supported: Local filesystem, Docker volumes
- ❌ NOT Supported: NFS, network filesystems (will cause database corruption)
First-Time Setup
- Access the web UI:
https://uptime.nas.local(if nginx enabled) orhttp://localhost:3001 - Create admin account on first visit
- No default credentials - account is created during initial setup
Usage
Adding Monitors
Web UI → Add New Monitor:
- Monitor Type: HTTP(s), TCP Port, Ping, DNS, etc.
- Friendly Name: Display name
- URL/Host: Target to monitor
- Heartbeat Interval: Check frequency (seconds)
- Retries: Before marking as down
- Notifications: Select notification endpoints
Notification Endpoints
Web UI → Settings → Notifications:
- Email (SMTP)
- Discord, Slack, Telegram
- ntfy (recommended for local notifications)
- Webhooks
- 50+ integrations available
Status Pages
Create public or password-protected status pages showing monitor health.
Web UI → Status Pages → New Status Page
Integration with ntfy
If you deployed the ntfy role:
- Settings → Notifications → Add
- Type: ntfy
- ntfy Server URL:
https://ntfy.jokester.fr - Topic:
uptime-alerts - Username:
admin - Password: Your ntfy admin password
- Test notification
File Locations
- Data directory:
{{ uptime_kuma_data_dir }} - SQLite database:
{{ uptime_kuma_data_dir }}/kuma.db
Dependencies
- podman
- nginx (if
uptime_kuma_nginx_enabled: true)