Commit graph

45 commits

Author SHA1 Message Date
ffb141f1f0 feat: remove SnapOtter stack 2026-07-11 16:24:34 +02:00
Brian Pooe
3a314b16d6 feat: add Koffan, Rackula, and SnapOtter stacks; expose Hermes dashboard
- new compose templates + READMEs for the three LXC apps (110-112)
- Makefile deploy targets (rackula pre-owns its data dir for uid 1001)
- Caddy vhosts for all four, incl. Hermes /auth/login redirect workaround
- firewall docs: CADDY->TRUSTED rules for LXCs 110-113
2026-07-06 20:50:34 +02:00
Brian Pooe
1815beadf4 refactor: restructure docs, sync stacks with Caddyfile, harden compose templates
- Add compose stacks for apps already proxied by Caddy: bento-pdf,
  it-tools, paperless-ngx, and beszel-hub (with Makefile targets)
- Remove the unused Vault stack and the drawio Caddyfile block
- Fix Caddyfile gramps upstream to port 80 to match the compose file
- Bring immich and gramps-web up to the shared template pattern
  (no-new-privileges, log rotation, memory limits, healthchecks)
- Single-quote vaultwarden SSO_AUDIENCE_TRUSTED so regex values like
  ^\d{18}$ render as valid YAML
- Move root docs into kebab-case topic folders, rebuild the docs index
  to cover every doc, and fix all broken links
2026-07-03 17:45:16 +02:00
Brian Pooe
0fca695aa4 Add Youtarr stack and document PhotoSync storage 2026-06-28 11:47:24 +02:00
Brian Pooe
3554f11f9c docs(network): replace rack layout ASCII with Mermaid, drop zones migration doc
Updated rack order reflects current hardware (UDM Pro SE in place, dual Pi 4B shelf,
USW-Lite moved to shelf 9). Removed udm-pro-zones-migration.md — migration complete.
README links updated to point to firewall-rules.md instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 22:32:39 +02:00
Brian Pooe
b67c32c2e9 Harden strict substitution workflow 2026-06-17 22:15:54 +02:00
Brian Pooe
cda999c497 Refactor environment management into modular, stack-specific files 2026-06-17 21:42:48 +02:00
Brian Pooe
76ee58c694 Add zero-downtime reload-caddy target to Makefile 2026-06-17 21:34:51 +02:00
Brian Pooe
c13af8f98f Add Makefile and unify stack management 2026-06-17 18:57:05 +02:00
Brian Pooe
78f42fc7ca Remove Node-RED stack and associated configurations 2026-06-17 18:42:57 +02:00
Brian Pooe
7dd49a94ab Streamline documentation for privileged LXC and GPU support 2026-06-16 18:01:02 +02:00
Brian Pooe
8e56625726 Document Proxmox NVMe storage layout 2026-06-16 12:40:43 +02:00
Brian Pooe
708f260cfc Standardize stack deployment guides 2026-06-15 10:53:29 +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
5148bbe47f Update Technitium deployment documentation 2026-06-13 16:15:32 +02:00
Brian Pooe
d99d21263a fix: documentation alignment to new hardware 2026-06-12 18:14:16 +02:00
Brian Pooe
ea6afc20ee docs: add Proxmox LXC arr deployment walkthrough 2026-06-11 21:21:08 +02:00
Claude
ce580591f3
docs: update repo references to homelab-blueprint
Repo is being renamed from synology-docker-services to
homelab-blueprint to reflect the actual scope (compose stacks,
network/rack docs, DNS recipes, Caddy config) and the Synology
retirement called out in the migration guide.
2026-05-23 22:01:31 +00:00
Brian Pooe
faa3bcdfae feat: add standalone Node-RED stack with Home Assistant integration
- Custom Dockerfile installs node-red-contrib-home-assistant-websocket
  into the base image (not /data) to avoid volume mount conflicts
- Joins ha-network so Node-RED reaches homeassistant:8123 by container name
- HA_URL and HA_TOKEN passed as env vars so the token stays out of flow files;
  use $(HA_URL) and $(HA_TOKEN) when configuring the server node in the editor
- credentialSecret substituted at setup time via setup-node-red.sh, consistent
  with the rest of the project; auto-generates NODE_RED_CREDENTIAL_SECRET if absent
- appdata/node-red owned by uid 1000 to match the container user
- README updated with stack docs, env vars, and deployment steps
2026-04-04 15:01:53 +02:00
Brian Pooe
e24006dd49 refactor: remove all Synology-specific labels, comments, and references 2026-03-31 19:36:24 +02:00
Brian Pooe
f847433c1e feat: added zigbee host in env 2026-03-29 21:43:25 +02:00
Brian Pooe
05e3cdf0e5 feat: add homeassistant caddy entries and clean up stale references
Caddyfile
- Add Home Automation Stack section with ha. and z2m. subdomains
  proxying to the mini PC on the IoT VLAN (CADDY_IOT_PREFIX.X)
- Comment references Caddy trusted proxy requirement handled by
  ha_configuration.yaml

homeassistant/config/ha_configuration.yaml (new)
- Minimal HA configuration.yaml template with http.trusted_proxies
  set to CADDY_OFFICE_PREFIX.5 (Caddy's static Office VLAN IP per
  network docs) — rendered via substitute_env.sh before first run

Stale reference cleanup
- homeassistant/template.yaml: remove CADDY_HA_HOST from comment,
  add ha_configuration.yaml to pre-run steps
- homeassistant/config/zigbee2mqtt_configuration.yaml: replace
  {{DOCKERCONFDIR}} path comment with ./appdata/ relative path
- README.md: replace $DOCKERCONFDIR in workflow example and stack
  config template paths with ./appdata/; relabel DOCKERCONFDIR env
  var as arr-stack only
2026-03-29 21:36:51 +02:00
Brian Pooe
d102a532ef refactor: organize by stack 2026-03-29 21:09:33 +02:00
Brian Pooe
60bc9f394d fix: env prefix to match vlan 2026-03-28 18:54:19 +02:00
Brian Pooe
362e5a3a07 docs: clean up and consolidate 2026-03-28 10:38:31 +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
c87030fc7f fix: docker version to use tag without prefix v 2026-03-12 19:02:36 +02:00
Brian Pooe
97c5f3bc33 feat: upgraded recyclarr config to v8 2026-03-12 18:56:27 +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
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
92b59bed94 cleanup: remove retired service routes and references 2026-03-06 21:59:29 +02:00
Brian Pooe
3247b61b5b fix: using codex to polish 2026-02-14 22:09:41 +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
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
a155ca54e9 docs: reorganize documentation and add recyclarr config template
## Major Changes

### 1. Complete README.md Rewrite
Replaced minimal, disorganized README with comprehensive documentation:

**New Sections:**
- Quick start guide
- Available stacks overview (Media, Database, Secrets)
- Security features comparison table
- Prerequisites and requirements
- Detailed configuration guide
- Multiple deployment options
- Verification and testing procedures
- Resource allocation overview
- Common tasks (update, logs, restart)
- Troubleshooting quick reference
- Migration guide
- Best practices
- Contributing guidelines

**Removed:**
- Random pgAdmin permission notes
- Paperless-ngx Caddy configuration (not relevant to this repo)
- Scattered external links

### 2. Documentation Reorganization

**Created docs/ directory:**
```
docs/
├── IMPROVEMENTS.md      (was DOCKER_COMPOSE_IMPROVEMENTS.md)
├── SOCKET_PROXY.md      (was SOCKET_PROXY_GUIDE.md)
├── TROUBLESHOOTING.md   (was TROUBLESHOOTING.md)
└── RECYCLARR.md         (NEW - comprehensive guide)
```

**Benefits:**
- Cleaner root directory
- Logical organization
- Consistent naming
- Easy to navigate

### 3. Recyclarr Configuration Template

**Created RECYCLARR_CONFIG_TEMPLATE.yml:**
- Fixed base_url to use service names (http://sonarr:8989)
- Removed localhost references (they don't work in Docker)
- Added clear placeholders for API keys
- Included comprehensive comments
- Added examples for custom formats
- Both 1080p and 4K profiles included

**Key fix - Service names instead of localhost:**
```yaml
#  Correct
base_url: http://sonarr:8989

#  Wrong (doesn't work in Docker)
base_url: http://localhost:8989
```

### 4. New RECYCLARR.md Documentation

Comprehensive guide covering:
- Quick start with clear steps
- How to get API keys
- Configuration examples
- Testing and validation
- Common issues and fixes
- Quality profiles explained
- Custom formats guide
- Maintenance procedures
- Advanced configuration
- Troubleshooting checklist

## Repository Structure Improvements

### Before (Disorganized)
```
.
├── README.md (minimal, random notes)
├── DOCKER_COMPOSE_IMPROVEMENTS.md
├── SOCKET_PROXY_GUIDE.md
├── TROUBLESHOOTING.md
└── docker-compose-files/
```

### After (Organized)
```
.
├── README.md (comprehensive, professional)
├── RECYCLARR_CONFIG_TEMPLATE.yml (ready to use)
├── docs/
│   ├── IMPROVEMENTS.md
│   ├── SOCKET_PROXY.md
│   ├── TROUBLESHOOTING.md
│   └── RECYCLARR.md
└── docker-compose-files/
```

## Documentation Highlights

### README.md Features
- Professional structure with emoji icons
- Clear table of contents
- Quick start in 4 commands
- Service comparison tables
- Security features highlighted
- Multiple deployment patterns
- Comprehensive troubleshooting
- External resources section
- Credits and support info

### RECYCLARR.md Features
- Step-by-step configuration
- Visual examples (/)
- Common errors explained
- Testing procedures
- Quality profile guide
- TRaSH Guides integration

## User Feedback Addressed

User requested:
1.  Fix recyclarr config (localhost → service names)
2.  Improve folder structure
3.  Consolidate documentation into one main README

All addressed:
- Recyclarr template with correct URLs
- Docs organized in docs/ directory
- Comprehensive README.md as single entry point
- Supporting docs in logical subdirectory

## Benefits

### For New Users
- Clear getting started guide
- Examples for everything
- Troubleshooting in README
- Links to detailed docs

### For Existing Users
- Migration guide provided
- Backward compatible
- Clear upgrade path
- Better troubleshooting

### For Maintainers
- Organized structure
- Consistent formatting
- Easy to update
- Professional presentation

## Breaking Changes

None - This is pure documentation reorganization:
- Old file paths still work (git tracks renames)
- No code changes
- Template additions only
- README links updated

## Stats

- README.md: ~500 lines of comprehensive documentation
- RECYCLARR.md: ~300 lines of detailed guide
- RECYCLARR_CONFIG_TEMPLATE.yml: Working configuration template
- docs/ directory: 4 organized documentation files

## Related

- Addresses recyclarr localhost issue
- Improves repository professionalism
- Makes project more accessible
- Follows documentation best practices
2025-11-23 12:25:55 +00:00
73deefd4c1 feat: added paperless ai and ollama 2025-06-01 21:32:32 +02:00
c36373dc11 chore: update readme 2025-04-19 16:33:42 +02:00
04b1b8e29e feat: templated vault config 2025-04-19 16:04:28 +02:00
2998936e46 feat: added homarr dashboard 2024-12-26 18:25:36 +02:00
33d81d2303 first commit 2024-12-19 19:00:10 +02:00