5.7 KiB
5.7 KiB
Watchtower Deployment Fixes - February 2026
Overview
This document details the comprehensive fixes applied to Watchtower auto-update configurations across all homelab hosts to resolve deployment issues and enable proper scheduled container updates.
Problem Summary
The Authentik SSO stack deployment was failing due to Watchtower configuration issues across multiple hosts:
- Homelab VM: Port conflicts and invalid notification URLs
- Calypso: Configuration conflicts between polling and scheduled modes
- Atlantis: Container dependency conflicts causing restart loops
Solutions Implemented
1. Homelab VM Fixes (Commit: a863a9c4)
Issues Resolved:
- Port conflict on 8080 (conflicted with other services)
- Invalid notification URLs causing startup failures
- Missing HTTP API configuration
Changes Made:
# Port mapping changed from 8080 to 8083
ports:
- "8083:8080"
# Fixed notification URLs
WATCHTOWER_NOTIFICATIONS: gotify
WATCHTOWER_NOTIFICATION_GOTIFY_URL: "http://gotify.homelab.local/message"
WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN: REDACTED_TOKEN
# Added HTTP API configuration
WATCHTOWER_HTTP_API_METRICS: true
WATCHTOWER_HTTP_API_TOKEN: "REDACTED_HTTP_TOKEN"
Result: ✅ Scheduled runs enabled at 04:00 PST daily
2. Calypso Fixes
Issues Resolved:
- Configuration conflicts between
WATCHTOWER_POLL_INTERVALand scheduled runs - HTTP API update conflicts with periodic scheduling
Changes Made:
# Removed conflicting settings
# WATCHTOWER_POLL_INTERVAL: 300 (removed)
# WATCHTOWER_HTTP_API_UPDATE: false (removed)
# Maintained schedule configuration
WATCHTOWER_SCHEDULE: "0 4 * * *" # 04:00 PST daily
Result: ✅ Scheduled runs enabled at 04:00 PST daily
3. Atlantis Fixes (Commit: c8f4d87b)
Issues Resolved:
- Container dependency conflicts with deluge container
- Missing port mapping for HTTP API access
- Environment variable token resolution issues
- Network connectivity problems
Changes Made:
# Disabled rolling restart to fix dependency conflicts
WATCHTOWER_ROLLING_RESTART: false
# Added port mapping for HTTP API
ports:
- "8082:8080"
# Hardcoded token instead of environment variable
WATCHTOWER_HTTP_API_TOKEN: "REDACTED_HTTP_TOKEN"
# Created prometheus-net network
networks:
- prometheus-net
Network Setup:
# Created Docker network on Atlantis
sudo docker network create prometheus-net
Result: ✅ Scheduled runs enabled at 02:00 PST daily
Current Deployment Status
| Host | Status | Schedule | Port | Network | Token |
|---|---|---|---|---|---|
| Homelab VM | ✅ Running | 04:00 PST | 8083 | bridge | REDACTED_WATCHTOWER_TOKEN |
| Calypso | ✅ Running | 04:00 PST | 8080 | bridge | REDACTED_WATCHTOWER_TOKEN |
| Atlantis | ✅ Running | 02:00 PST | 8082 | prometheus-net | REDACTED_WATCHTOWER_TOKEN |
Configuration Best Practices Established
1. Scheduling Strategy
- Staggered schedules to prevent simultaneous updates across hosts
- Atlantis: 02:00 PST (lowest priority services)
- Homelab VM & Calypso: 04:00 PST (critical services)
2. Port Management
- Unique ports per host to prevent conflicts
- Consistent API access across all deployments
- Documented port assignments in configuration files
3. Dependency Management
- Disabled rolling restart where container dependencies exist
- Network isolation using dedicated Docker networks
- Graceful shutdown timeouts (30 seconds) for clean restarts
4. Authentication & Security
- Consistent token usage across all deployments
- HTTP API metrics enabled for monitoring integration
- Secure network configurations with proper isolation
Monitoring & Verification
HTTP API Endpoints
# Homelab VM
curl -H "Authorization: Bearer REDACTED_WATCHTOWER_TOKEN" http://homelab-vm.local:8083/v1/update
# Calypso
curl -H "Authorization: Bearer REDACTED_WATCHTOWER_TOKEN" http://calypso.local:8080/v1/update
# Atlantis
curl -H "Authorization: Bearer REDACTED_WATCHTOWER_TOKEN" http://atlantis.local:8082/v1/update
Container Status Verification
# Check running containers
docker ps | grep watchtower
# Check logs for scheduling confirmation
docker logs watchtower --tail 10
Troubleshooting Guide
Common Issues & Solutions
-
Container Restart Loops
- Cause: Rolling restart conflicts with dependent containers
- Solution: Set
WATCHTOWER_ROLLING_RESTART: false
-
Port Conflicts
- Cause: Multiple services using same port
- Solution: Use unique port mappings per host
-
Schedule Not Working
- Cause: Conflicting polling and schedule configurations
- Solution: Remove
WATCHTOWER_POLL_INTERVALwhen using schedules
-
Network Connectivity Issues
- Cause: Containers on different networks
- Solution: Create dedicated networks or use bridge network
Future Maintenance
Regular Tasks
- Monitor logs for successful update runs
- Verify HTTP API accessibility monthly
- Check container health after scheduled updates
- Update documentation when configurations change
Upgrade Considerations
- Test configuration changes in non-production first
- Backup configurations before major updates
- Coordinate schedules to minimize service disruption
- Monitor resource usage during update windows
Related Documentation
Last Updated: February 13, 2026
Author: OpenHands Agent
Status: Production Ready ✅