Commit graph

45 commits

Author SHA1 Message Date
Brian Pooe
78f42fc7ca Remove Node-RED stack and associated configurations 2026-06-17 18:42:57 +02:00
Brian Pooe
fc2d5b24ca Standardize UNAS share naming to underscores (arr_data) 2026-06-16 18:08:58 +02:00
Brian Pooe
2bedd9f7b2 Update Immich data share naming to immich_data 2026-06-16 17:52:03 +02:00
Brian Pooe
fccb2220ad Update Immich configuration for dedicated UNAS share 2026-06-16 17:51:19 +02:00
Brian Pooe
b972e3fe07 Add Immich template with NVIDIA GPU acceleration support 2026-06-16 17:48:36 +02:00
Brian Pooe
20e4ad095d Use named volumes for application state 2026-06-15 20:07:48 +02:00
Brian Pooe
7628ddac36 Update DNS host deployment details 2026-06-15 11:19:21 +02:00
Brian Pooe
02f061f238 Feature-slice Caddy configuration 2026-06-13 17:47:19 +02:00
Brian Pooe
6b343a593c Add Raspberry Pi Caddy deployment 2026-06-13 17:25:27 +02:00
Brian Pooe
71f4b838fd Document phased UDM Pro SE zone migration 2026-06-13 17:09:02 +02:00
Brian Pooe
ad260360dc feat: adapt arr storage for Proxmox LXC 2026-06-11 21:20:58 +02:00
Brian Pooe
8d4f0afd9d fix: prepopulate HA_URL with default value in .env.sample 2026-04-04 15:20:33 +02:00
Brian Pooe
79696e877a feat: add Node-RED variables to .env.sample 2026-04-04 15:09:45 +02:00
Brian Pooe
f847433c1e feat: added zigbee host in env 2026-03-29 21:43:25 +02:00
Brian Pooe
60bc9f394d fix: env prefix to match vlan 2026-03-28 18:54:19 +02:00
Brian Pooe
57f8b28765 feat: added socket proxy template 2026-03-20 18:19:37 +02:00
Brian Pooe
fede39358e fix: remove dockhand and related services 2026-03-20 18:13:20 +02:00
Brian Pooe
f9c0261383 fix: add qbit base url to point to qbit directly 2026-03-19 22:34:18 +02:00
Brian Pooe
fd333b0b33 fix: auth failure for qbit due to missing credentials 2026-03-19 22:25:10 +02:00
Brian Pooe
e37ca23728 fix: decluttarr config update addressing logs 2026-03-19 22:15:17 +02:00
Brian Pooe
48eb8acc65 feat: added upacker and declutter 2026-03-19 21:45:24 +02:00
Brian Pooe
04051f1302 fix: update dockhand to version that is able to do upgrades on linked services 2026-03-12 20:38:54 +02:00
Brian Pooe
d1aee3c645 refactor: order caddy lan, dns and office 2026-03-08 11:26:16 +02:00
Brian Pooe
d40653db3c refactor: use template for caddy 2026-03-07 22:14:51 +02:00
Brian Pooe
60280dc17b chore: scrub sensitive data for public repo 2026-03-07 22:07:21 +02:00
Brian Pooe
2c3d03406c refactor: removed diun in favour of dockhand 2026-03-07 21:54:50 +02:00
Brian Pooe
b67455e789 feat: added haswer agent for dockhand in arr stack 2026-03-07 11:56:26 +02:00
Brian Pooe
71de685b1b fix: remove memory reservation and update docs for dockhand encryption key 2026-03-01 18:52:38 +02:00
Brian Pooe
e60c52034f fix: swam synology directory to raspberry pi 2026-03-01 18:16:52 +02:00
Brian Pooe
d0b565703e fix: updated ram limits to be under 2GB i have available 2026-03-01 17:39:31 +02:00
Brian Pooe
6720cf8d62 feat(dns): add Technitium+Dockhand stack templates and end-to-end pfSense migration runbooks
- add docker-compose template for Technitium DNS and Dockhand
- add required DNS/Dockhand env vars to .env.sample
- add single-flow migration runbook (Pi Zero -> Pi 4 with same IP
cutover)
- add forced DNS and DoT/DoH hardening quick-entry guides
- document wildcard DNS strategy and Technitium replacement mapping
2026-03-01 12:01:35 +02:00
Brian Pooe
3247b61b5b fix: using codex to polish 2026-02-14 22:09:41 +02:00
Brian Pooe
64d8c3bbdb feat: added new variables to envrionment sample file 2025-12-21 11:56:12 +02:00
Brian Pooe
9a17b6356b fix: seafile 2025-12-19 16:25:06 +02:00
Claude
8d2a1c8029 feat: replace Watchtower with Diun for update monitoring
Replaced Watchtower (auto-updater) with Diun (notification-only) for
safer update management in production environments.

Why the change:
- Watchtower auto-updates can break production systems
- Discord webhook integration was problematic with Watchtower
- Diun provides notifications without auto-updating (safer)
- Diun uses Discord webhook URLs directly (no Shoutrrr conversion)
- Better control over when and how updates are applied

Changes in arr-stack_template.yaml:
- Removed watchtower service completely
- Added diun service using crazymax/diun:latest
- Configured Diun to use socket-proxy for Docker API access
- Added diun.enable=true labels to 11 monitored services:
  * gluetun, qbittorrent, flaresolverr, sabnzbd
  * prowlarr, radarr, sonarr, bazarr
  * emby, jellyseerr, recyclarr
- Diun configured with:
  * Watch by default: false (only labeled containers)
  * Discord notifications with render fields
  * Schedule-based checking
  * Memory limit: 128M (vs Watchtower's 256M)

Changes in .env.sample:
- Removed all Watchtower environment variables:
  * WATCHTOWER_SCHEDULE
  * WATCHTOWER_NOTIFICATION_URL
  * WATCHTOWER_SCOPE
  * WATCHTOWER_LABEL_ENABLE
- Added Diun configuration:
  * DIUN_WATCH_SCHEDULE (cron format)
  * DIUN_DISCORD_WEBHOOK_URL (direct Discord URL!)
- Added clear documentation:
  * Discord webhook URL used directly - NO conversion needed
  * Example: https://discord.com/api/webhooks/ID/TOKEN
  * Default schedule: every 6 hours (0 */6 * * *)

Documentation updates:
- Created comprehensive docs/DIUN.md guide:
  * Why Diun over Watchtower comparison table
  * Step-by-step Discord webhook setup
  * NO Shoutrrr conversion required!
  * Other notification providers
  * Label-based monitoring
  * Troubleshooting guide
  * Migration guide from Watchtower
  * Security benefits with socket-proxy
- Deleted docs/WATCHTOWER.md
- Updated README.md:
  * Replaced all Watchtower references with Diun
  * Updated troubleshooting section
  * Updated best practices
  * Updated documentation links
  * Fixed example commands (docker logs diun)

Key Benefits:
1. Safer: Notifications only, you control when to update
2. Simpler: Discord webhooks work directly (no format conversion)
3. Flexible: Label-based control over what to monitor
4. Lighter: Uses less memory (128M vs 256M)
5. Professional: Better for production environments

Discord Webhook Comparison:
- Watchtower: discord://TOKEN@ID (Shoutrrr format, complex)
- Diun: https://discord.com/api/webhooks/ID/TOKEN (direct, simple)

Migration path:
1. Remove watchtower from compose
2. Update .env with DIUN_ variables
3. Use Discord webhook URL directly
4. Regenerate compose file
5. Deploy with docker-compose up -d

Breaking change: Users must update .env file
- Replace WATCHTOWER_* variables with DIUN_* variables
- Use Discord webhook URL directly (simpler!)

Fixes: Watchtower Discord notification issues
Improves: Update management safety
Tested: YAML validation passed, 11 services monitored
User impact: Must update .env and regenerate compose files
2025-11-23 16:21:12 +00:00
Claude
4b67b1553d fix: add quotes to Watchtower environment variables in template
The WATCHTOWER_NOTIFICATION_URL and WATCHTOWER_SCHEDULE placeholders
were unquoted in the template, causing YAML parsing issues when URLs
contained special characters (colons, slashes, @ symbols).

After substitution, Discord URLs like:
  discord://TOKEN@WEBHOOK_ID

Would appear unquoted in the generated YAML:
  WATCHTOWER_NOTIFICATION_URL: discord://TOKEN@WEBHOOK_ID

This caused "illegal argument in config URL" errors because YAML
interprets special characters differently when unquoted.

Fix:
- Added quotes around {{WATCHTOWER_NOTIFICATION_URL}} placeholder
- Added quotes around {{WATCHTOWER_SCHEDULE}} placeholder
- Updated .env.sample with example showing underscores are OK
- Added note: do NOT add quotes in .env file (template handles it)

After fix, generated YAML properly quotes the URL:
  WATCHTOWER_NOTIFICATION_URL: "discord://TOKEN@WEBHOOK_ID"

This is why docker run -e worked (shell quoting) but docker-compose
failed (YAML parsing without quotes).

Fixes: Watchtower "illegal argument in config URL" error
Tested: YAML validation passed with Discord URL containing underscores
User impact: No need to URL-encode underscores anymore
2025-11-23 16:02:31 +00:00
Claude
785f9d53c4 fix: resolve Emby/Bazarr health checks and Watchtower notification errors
Fixed three critical issues reported by user:

1. Emby health check failing:
   - Changed from non-existent /health endpoint to /web/index.html
   - Increased retries to 5 and start_period to 120s
   - Using wget --spider for lightweight check

2. Bazarr health check failing:
   - Changed from /api/system/status (requires auth) to root path /
   - Increased retries to 5 and start_period to 90s
   - Using wget --spider for lightweight check

3. Watchtower Discord notification error:
   - Error: "unknown service 'https'" when using Discord webhooks
   - Added comprehensive Discord setup guide (docs/WATCHTOWER.md)
   - Updated .env.sample with proper Shoutrrr URL format examples
   - Documented conversion from Discord webhook to Shoutrrr format:
     * Wrong: https://discord.com/api/webhooks/ID/TOKEN
     * Correct: discord://TOKEN@ID

Documentation updates:
- Created docs/WATCHTOWER.md (comprehensive guide)
  * Discord webhook setup with step-by-step instructions
  * Other notification services (Slack, Email, Telegram, etc.)
  * Troubleshooting common notification errors
  * Advanced configuration examples
- Updated README.md with Watchtower troubleshooting section
- Added WATCHTOWER.md to documentation index

Health check improvements:
- Both services now use wget instead of curl for consistency
- Increased start_period to allow proper initialization
- Increased retries for better resilience
- Using lightweight --spider checks

Fixes: Emby/Bazarr containers unhealthy despite running correctly
Fixes: Watchtower crashes with Discord notification URL format error
Tested: YAML validation passed, health check endpoints verified
2025-11-23 15:19:24 +00:00
Claude
a8e0ac0d54 fix: correct Watchtower docker.sock permissions and add security options
## Critical Fix

### Docker Socket Permissions
- Changed from `:ro` (read-only) to writable mount
- **Why:** Watchtower REQUIRES write access to stop/start containers
- With `:ro`, Watchtower can only monitor but cannot actually update

### What Watchtower Needs Write Access For:
1. Stop running containers
2. Create new container instances
3. Remove old containers
4. Clean up old images (if WATCHTOWER_CLEANUP enabled)

## Security Mitigations Added

### New Environment Variables in .env.sample
- `WATCHTOWER_SCOPE` - Limit to specific container groups
- `WATCHTOWER_LABEL_ENABLE` - Only update labeled containers
- Both are optional but recommended for security

### Enhanced Watchtower Configuration
Added security-focused environment variables:
- `WATCHTOWER_SCOPE` - Scope limiting
- `WATCHTOWER_LABEL_ENABLE` - Label-based filtering
- `WATCHTOWER_MONITOR_ONLY` - Notifications without updates
- Comments explaining security implications

### Updated Documentation
Enhanced TROUBLESHOOTING.md with:
- Explanation of why write access is required
- 4 security best practices for Watchtower
- Scoping examples
- Label filtering examples
- Monitor-only mode configuration
- How to exclude critical services (like Vault)

## Security Considerations

**Risk:** Write access to docker.sock gives container full Docker control

**Mitigations:**
1. Use WATCHTOWER_SCOPE to limit target containers
2. Use label filtering for granular control
3. Exclude critical services with disable label
4. Use monitor-only mode if you prefer manual updates
5. Alternative: Use Synology's built-in Container Manager updates

## Breaking Changes
None - new variables are optional with sensible defaults

## Related
- Addresses question about `:ro` docker.sock permissions
- Fixes non-functional Watchtower configuration
- Improves security posture with scoping options
2025-11-23 11:20:08 +00:00
04b1b8e29e feat: templated vault config 2025-04-19 16:04:28 +02:00
e7033db12c fix: airvpn private key for wireguard 2025-01-03 23:20:23 +02:00
dd6360f646 feat: config for homapage and caddy 2025-01-03 12:10:51 +02:00
036a6895b7 feat: replaced plex and overseerr with emby and jellyseerr 2024-12-22 19:34:16 +02:00
bae00c19a8 feat: arr stack hotio c ontainer replacement 2024-12-20 16:05:36 +02:00
956ab6f56d feat: move path to env and add wireguard private key 2024-12-19 22:18:34 +02:00
eab81c2952 feat: updated compose to include raddar and deluge with env sample 2024-12-19 21:49:08 +02:00