Commit Graph
48 Commits
Author SHA1 Message Date
outis1one 8a2f619841 Merge pull request #18 from outis1one/claude/fix-magic-mirror-setup-LWG3r
Fix Magic Mirror npm setup and add ActualBudget, Keycloak, Caddy/fail…
2026-01-11 18:00:25 -05:00
Claude d3f412dc28 Make fail2ban setup fully automated with intelligent error handling
The caddy-setup-helper.sh script now handles everything automatically (after asking
for confirmation), only falling back to manual instructions if errors occur.

AUTOMATED WORKFLOW:
1.  Backup Caddyfile (ALWAYS FIRST - before any changes)
2.  Check if fail2ban is installed
3.  Install fail2ban if missing (with confirmation)
4.  Create /var/log/caddy directory
5.  Check if Caddy container has log volume mounted
6.  Automatically add log volume to docker-compose.yml if needed
7.  Create fail2ban filter at /etc/fail2ban/filter.d/caddy-auth.conf
8.  Create fail2ban jail at /etc/fail2ban/jail.d/caddy.conf (with custom settings)
9.  Test fail2ban configuration
10.  Restart fail2ban and verify jail is active
11.  Add service configurations (ActualBudget, Keycloak) to Caddyfile
12.  Validate and reload Caddy configuration

ERROR HANDLING:
- All operations tracked with error messages array
- If any step fails, script continues but tracks the failure
- At the end, shows all errors encountered
- Provides exact manual commands to fix issues
- Backup is ALWAYS created before any changes

USER EXPERIENCE:
- Interactive prompts with sensible defaults
- Clear colored output (INFO, SUCCESS, WARNING, ERROR)
- Progress feedback at each step
- Final summary with useful commands
- Only shows manual instructions if automation failed

SAFETY FEATURES:
- Caddyfile backup before ANY modifications
- docker-compose.yml backup before modifications
- Validation before reloading Caddy
- Test fail2ban config before restart
- Restore instructions always shown after backup

This matches the integrated experience of other services - fully automated
unless something goes wrong, in which case it provides manual steps.
2026-01-11 22:50:30 +00:00
Claude 5dbb27ee8b Fix Magic Mirror npm setup and add ActualBudget, Keycloak, Caddy/fail2ban support
FIXES:
- Fix Magic Mirror npm install to run inside Docker container instead of on host
- npm (Node Package Manager) commands now execute inside the MagicMirror container
  where Node.js is installed, preventing errors on hosts without Node.js

NEW SERVICES:
- Add ActualBudget: Open-source personal finance management with bank sync (SimpleFIN)
- Add Keycloak: Identity and Access Management (SSO, OAuth2, SAML, MFA)
- Both services integrated into main installation script and available as standalone
  docker-compose files for existing servers

CADDY & FAIL2BAN:
- Add caddy-setup-helper.sh: Interactive script to configure Caddy and fail2ban
  * Detects existing Caddy installation
  * Automatically backs up Caddyfile with timestamp
  * Checks for fail2ban support
  * Provides service integration examples
- Add fail2ban filter and jail configurations for Caddy protection
- Add comprehensive setup guide (CADDY-FAIL2BAN-SETUP.md)

DOCUMENTATION:
- Detailed deployment instructions for each service
- Reverse proxy configuration examples
- Security best practices and headers
- Backup/restore procedures
- Troubleshooting guides

This update enables secure deployment of new services on existing servers with
proper Caddy reverse proxy integration and fail2ban protection against attacks.
2026-01-11 21:43:52 +00:00
outis1one db0b9993a5 Merge pull request #17 from outis1one/claude/docker-selfhosted-apps-QFDqX
Claude/docker selfhosted apps qf dq x
2026-01-08 10:51:45 -05:00
Claude d84a1be5d5 Add container auto-start, UFW ports, Magic Mirror config/modules
- Add interactive "Start now?" prompts to all Docker containers
- Add UFW firewall port opening for Docker services when enabled
- Add Magic Mirror config copy option with custom.css support
- Add automatic detection and download of third-party MMM-* modules
- Add npm install for Magic Mirror module dependencies
2026-01-08 13:08:11 +00:00
Claude 47f3e9c0a6 Major improvements: drive setup, Immich config, container start
Drive Setup (runs at script start):
- New setup_drives() function runs before other installations
- Auto-detects unpartitioned drives, offers to format
- Creates ~/drives/ mount points
- Adds to fstab and runs mount -a
- Partitioning/formatting for new drives without partition tables

Immich Improvements:
- Separate UPLOAD_LOCATION from EXTERNAL_LIBRARY (different paths)
- Upload: ~/drives/primary/photos/immich-uploads (new photos)
- External: ~/drives/primary/photos (existing photos, read-only)
- Warns if both paths are the same
- Added immich-cli instructions for uploading old photos with correct EXIF dates
- Container auto-start option after install

Container Management:
- Added "Start now?" prompt for Immich after install
2026-01-08 12:51:22 +00:00
outis1one 1778dd58f2 Merge pull request #16 from outis1one/claude/docker-selfhosted-apps-QFDqX
Claude/docker selfhosted apps qf dq x
2026-01-06 18:34:32 -05:00
Claude b6dc3e6d18 Add interactive volume path updates during migration
Step 6 now scans docker-compose files for volume mounts:
- Detects absolute paths that don't exist on new system
- Shows old path and suggests ~/drives/primary/{folder}
- User can: accept suggestion, skip, or enter custom path
- Updates compose file with new path
- Creates directory if needed

Example:
  Container: immich
  Old path:  /home/user1/media/driveb
  Suggested: ~/drives/primary/driveb
  [Enter] Accept | [S] Skip | [path] Custom
2026-01-06 23:32:57 +00:00
Claude ef245a6ee4 Add migration options: copy, symlink, or use in-place
When source is on mounted drive (/mnt/*, ~/drives/*, /media/*):
- [C] Copy - Copy to ~/docker (for old OS drive migration)
- [S] Symlink - Create ~/docker → source (for data drive)
- [U] Use in-place - Use source directly, no copy

This handles both scenarios:
- Old OS drive mounted temporarily → Copy
- Data drive you'll keep using → Symlink or use in-place
2026-01-06 23:29:00 +00:00
outis1one b2f606f67e Merge pull request #15 from outis1one/claude/docker-selfhosted-apps-QFDqX
Claude/docker selfhosted apps qf dq x
2026-01-06 18:20:34 -05:00
Claude 7f03addd9c Improve migration to detect Docker on mounted drives
- Auto-detect ~/drives/*/docker, /mnt/*/docker, /media/*/docker
- Show numbered list for easy selection (type "1" to select first)
- Still accepts any custom path
- Shows common locations as examples if nothing auto-detected
2026-01-06 22:56:45 +00:00
Claude fef7bac6aa Add migration mode for importing existing Docker containers
- New [M] Migration option at script start
- Auto-detects Docker directories (/var/docker, /opt/docker, ~/docker)
- Scans for docker-compose.yml files and lists containers with sizes
- Whiptail checklist for selecting containers to migrate
- Option to stop containers before copy (clean database state)
- Preserves versions - no unwanted upgrades during migration
- After migration, offers to install additional services
- Three modes now: Normal install, Migration, Disaster Recovery
2026-01-06 22:49:36 +00:00
outis1one 2db9b9a115 Merge pull request #14 from outis1one/claude/docker-selfhosted-apps-QFDqX
Add Kopia to disaster recovery for ongoing backups
2026-01-01 22:56:04 -05:00
Claude fb6dbdfbcb Add Kopia to disaster recovery for ongoing backups
- Install Kopia in Step 1 (core utilities)
- Add Step 9: Reconnect Kopia repository after restore
- Backups now work immediately after disaster recovery
- Update README with 9-step recovery process
2026-01-02 03:41:04 +00:00
outis1one d61c48a9bb Merge pull request #13 from outis1one/claude/docker-selfhosted-apps-QFDqX
Add Immich photo library config, Watchtower, and backup docs
2026-01-01 22:28:35 -05:00
Claude 0038a9a938 Add Immich photo library config, Watchtower, and backup docs
- Immich: Ask for photo storage location (default ~/drives/primary/photos)
- Immich: External library support for existing photos (read-only)
- Immich: Storage template guidance for yyyy/mm organization
- Add Watchtower container with notify-only mode (safe for apps with DB migrations)
- Document what Docker data lives where and what gets backed up
- Update README with v2.9 changelog
2026-01-02 03:07:31 +00:00
outis1one 3e5dd7f927 Merge pull request #12 from outis1one/claude/docker-selfhosted-apps-QFDqX
Add MeshCentral Server and improve disaster recovery
2026-01-01 19:25:32 -05:00
Claude d7caddb64f Add MeshCentral Server and improve disaster recovery
- Add MeshCentral Server as Docker app (ports 4430, 4433)
- Recovery mode now installs core utilities first (openssh-server, git, etc.)
- Add whiptail checklist for selecting which services to restore
- Users can now choose some/none/all services instead of all-or-nothing
- Update README with v2.8 changelog and MeshCentral port
2026-01-01 23:50:05 +00:00
outis1one 617a9ca0c5 Update LICENSE 2026-01-01 18:37:38 -05:00
outis1one 313d3d1783 Merge pull request #11 from outis1one/claude/docker-selfhosted-apps-QFDqX
Claude/docker selfhosted apps qf dq x
2026-01-01 18:36:33 -05:00
Claude c9d3276d36 Add disaster recovery mode for one-click restore from backup
New features:
- --restore flag for disaster recovery mode
- Interactive mode selector at script start (N=Normal, R=Recovery)
- Full disaster recovery flow:
  1. Show available drives, auto-mount if device path given
  2. Auto-detect Kopia repository
  3. Try to find password in backed-up .env, or prompt
  4. Install Docker if needed
  5. List available snapshots, let user choose or use 'latest'
  6. Restore snapshot to temp location
  7. Detect all docker-compose.yml files = services to restore
  8. Copy services to ~/docker/
  9. Optionally start all containers
  10. Cleanup temp files

Removed old buried import section that only showed manual instructions.

Documentation:
- Added Disaster Recovery section to README
- Added --restore to command-line options
- Documented what gets restored and requirements
- Added v2.7 changelog entry
2026-01-01 22:24:44 +00:00
Claude 1f92245faf Make Docker installs resilient: install first, config later
Changes the installation pattern for Docker apps to be more robust:
- Install docker-compose.yml FIRST (always succeeds)
- THEN try configuration with prompts
- Use sensible defaults if prompts fail
- Continue to next app even if current config fails
- Added || true and 2>/dev/null to prevent script stops

Updated apps: Frigate, Frigate-Notify, Caddy, ddclient

Config templates now include clear warnings:
- "YOU MUST EDIT THIS FILE" for required configs
- "YOU MAY NEED TO EDIT THIS FILE" for optional configs
- Links to documentation

This ensures the script completes even with complex interdependent
services that may need manual configuration after install.
2026-01-01 22:07:48 +00:00
outis1one 85cd375180 Merge pull request #10 from outis1one/claude/docker-selfhosted-apps-QFDqX
Claude/docker selfhosted apps qf dq x
2026-01-01 17:07:31 -05:00
Claude 4273809f26 Add FindMyDevice, Frigate-Notify, and improve Caddy setup
New Docker applications:
- FindMyDevice (FMD) server for self-hosted Android device tracking
- Frigate-Notify for push notifications on Frigate AI detections

Caddy improvements:
- Interactive domain configuration during setup
- Comprehensive Caddyfile template with all services (commented)
- Clear instructions for caddy_net Docker network usage
- .env file with MY_DOMAIN variable

Frigate-Notify features:
- Auto-detects if Frigate and ntfy are installed
- Interactive setup for Frigate URL and ntfy topic
- WebAPI mode by default (polls Frigate every 30s)
- Config template with labels, zones, quiet hours
- Warns about public ntfy.sh privacy implications
2026-01-01 21:24:59 +00:00
Claude 4d04de25b3 Add additional Docker apps and Kopia container backup
New Docker applications:
- Jellyfin (free media server with hardware acceleration)
- Frigate NVR (AI-powered object detection)
- Caddy (reverse proxy with automatic HTTPS)
- ddclient (dynamic DNS updater)
- ntfy (self-hosted push notifications)
- Uptime Kuma (service uptime monitoring)
- wg-easy (WireGuard VPN with web UI)
- Traccar (GPS tracking server)
- Portainer (Docker management UI)

Container backup system:
- Kopia backup for all Docker container data
- Backup script for configs, databases, app state
- Restore script for disaster recovery
- Backs up Immich memories, Emby metadata, Minecraft worlds, etc.

All apps use docker-compose in ~/docker/{appname}/ with storage on
primary drive where appropriate.
2026-01-01 21:09:09 +00:00
outis1one 334f672d70 Merge pull request #9 from outis1one/claude/docker-selfhosted-apps-QFDqX
Add self-hosted Docker applications section
2026-01-01 08:25:47 -05:00
Claude edd870703b Add self-hosted Docker applications section
New applications (all docker-compose based in ~/docker/{appname}/):
- Immich: Photo & video backup (port 2283)
- Audiobookshelf: Audiobook & podcast server (port 13378)
- Emby: Media server (port 8096)
- A.R.M.: Automatic DVD/Blu-ray/CD ripping (port 8080)
- Filebrowser: Web file manager (port 8085)
- Magic Mirror: Smart dashboard, up to 3 instances (ports 8081-8083)
- Lyrion Music Server: Music streaming (port 9000)
- Mealie: Recipe manager (port 9925)
- Minecraft: Fabric server with RAM limits (port 25565)
- linux-to-sync: Private repo with SSH/token auth

Features:
- Each app prompts individually (y/n)
- Configurable paths for media/audiobooks/music
- Auto-generates .env files and docker-compose.yml
- Random passwords for databases (Immich)
- Magic Mirror supports multiple instances with separate configs
2026-01-01 12:52:59 +00:00
outis1one ad05338459 Merge pull request #8 from outis1one/claude/review-repo-docs-QFDqX
Add instructions for additional Samba shares after setup
2025-12-30 08:44:28 -05:00
Claude 2200fa1483 Add instructions for additional Samba shares after setup
After configuring the Primary share, the script now displays:
- How to edit /etc/samba/smb.conf with nano
- Example share configuration block
- How to restart smbd/nmbd services
- How to verify with testparm
2025-12-30 13:42:08 +00:00
outis1one 85d964bc1c Merge pull request #7 from outis1one/claude/review-repo-docs-QFDqX
Add WireGuard, Tailscale, TeamViewer, and MeshCentral options
2025-12-28 19:53:59 -05:00
Claude eef004abf4 Add WireGuard, Tailscale, TeamViewer, and MeshCentral options
VPN additions:
- WireGuard VPN with key generation and config setup
- Tailscale mesh VPN with Tailscale SSH documentation

Remote desktop additions:
- TeamViewer installation and setup
- MeshCentral agent with server URL prompt

Other changes:
- Enhanced NetBird documentation on SSH key management
- Detection functions and status display for all new tools
- Updated README with VPN Setup and Remote Desktop Setup sections
2025-12-29 00:48:55 +00:00
outis1one f23089242e Update README.md 2025-12-28 11:25:05 -05:00
outis1one fe804384a7 Merge pull request #6 from outis1one/claude/review-repo-docs-QFDqX
Overhaul backup system: rsync for local, rclone for encrypted cloud
2025-12-28 10:47:31 -05:00
Claude bc357d2efd Overhaul backup system: rsync for local, rclone for encrypted cloud
Major changes:
- Local backup uses rsync exclusively with support for 1-4 drives
- Drive names are now customizable (default: primary, backup1, etc.)
- Added separate cloud backup option with rclone + encryption
- Guided setup for Google Drive and OneDrive with encryption
- rclone.conf auto-backed up to all local drives
- Added off-site backup guidance (Signal, Box.com, password managers)
- Removed old rsync/rclone choice and full/split modes

Documentation updates:
- Explain why fail2ban provides no benefit with key-only SSH
- Explain why rsync instead of RAID
- Document rclone.conf decryption and restore process
- Update all backup-related sections for new structure
2025-12-28 13:17:59 +00:00
outis1one 44b6774af8 Update README.md 2025-12-28 00:31:40 -05:00
outis1one 46b0b36c56 Merge pull request #5 from outis1one/claude/review-repo-docs-QFDqX
Add QoL improvements: dry-run, unattended, logging, fail2ban, UFW
2025-12-28 00:31:00 -05:00
Claude 44fda519f0 Add QoL improvements: dry-run, unattended, logging, fail2ban, UFW
- Add --dry-run flag to preview installations without changes
- Add --unattended flag for automated/scripted installs with defaults
- Add logging to /var/log/post-install.log
- Add fail2ban protection when SSH password auth is enabled
- Add UFW firewall configuration option
- Update all prompts for unattended mode support
- Update README with new features and troubleshooting
2025-12-28 05:23:49 +00:00
outis1one 5fba1d4bea Merge pull request #4 from outis1one/claude/review-repo-docs-QFDqX
Remove vim from installed utilities
2025-12-27 22:08:08 -05:00
Claude 1226bff8c8 Remove vim from installed utilities 2025-12-28 03:06:06 +00:00
outis1one a570a37d60 Merge pull request #3 from outis1one/claude/review-repo-docs-QFDqX
Make script rerunnable with rsync/rclone and full/split backup options
2025-12-27 22:03:42 -05:00
Claude 61ca1aa69f Make script rerunnable with rsync/rclone and full/split backup options
- Add software detection for Docker, Samba, NetBird, RustDesk, rclone, rsync
- Script shows current system status and offers to reinstall/reconfigure
- All components now optional with y/n prompts
- Add backup tool selection: rsync (recommended for local) vs rclone (cloud)
- Add backup mode selection: full (one drive) vs split (two drives)
- Generate appropriate backup script based on tool + mode selection
- Update summary section to only show installed components
- Update README with new features, rsync vs rclone comparison, backup modes
2025-12-28 02:37:44 +00:00
outis1one 2c6e2973e4 Merge pull request #2 from outis1one/claude/review-repo-docs-QFDqX
Update README to reflect optional Samba and rclone backup
2025-12-27 19:42:00 -05:00
Claude c3f9569940 Update README to reflect optional Samba and rclone backup
- Mark Samba File Sharing section as optional
- Mark Backup System section as optional
- Update interactive prompts section with new Samba/backup prompts
- Add note to Backup Configuration section about optional nature
- Update Samba section to indicate conditional installation
- Reorganize "Files Created" section by optional/required
- Update Security Notes to indicate optional features
2025-12-28 00:33:33 +00:00
outis1one 85ff8130d0 Merge pull request #1 from outis1one/claude/review-repo-docs-QFDqX
Claude/review repo docs qf dq x
2025-12-27 19:29:44 -05:00
Claude 0a88f8ae1f Make Samba and rclone backup system optional
- Add interactive prompt before Samba installation
- Add interactive prompt before rclone backup system setup
- Update summary section to conditionally display installed components
- Fix indentation in backup script section
2025-12-28 00:18:18 +00:00
Claude 893d13af53 Add Samba installation and rename readme to README.md
- Add Samba file sharing installation and configuration to match
  README documentation (was documented but not implemented)
- Rename ubuntu-readme.md to README.md for standard GitHub display
- Update download instructions with actual GitHub repository URLs
2025-12-28 00:11:29 +00:00
outis1one 8b531909d8 Add files via upload 2025-12-27 19:05:54 -05:00
outis1one 511fab264e Create LICENSE 2025-12-27 19:04:05 -05:00