3.8 KiB
3.8 KiB
🏡 Homelab Inventory and Recovery Reference
🖥️ Physical Hosts
proxmox04
- IP:
192.168.1.37 - Hostname:
proxmox04 - Proxmox Version: 8.4.0
- Kernel: 6.8.12-9-pve
- Boot Drive: Crucial 256GB SATA SSD
- Rack: 10" Lab Rax (3D-printed)
- Firewall: Enabled (host-level)
- NTP: Enabled
- Root Access: Enabled
- SSH: Enabled (static IP)
🧠 Hardware
- Motherboard: ASRock B550 Phantom Gaming-ITX/AX
- CPU: AMD Ryzen 5 5600G (6c/12t)
- RAM: 62 GiB DDR4
- Swap: 8 GiB
💾 Storage
- ZFS Pool:
vm_data(NVMe)/vm_data/subvol-###-disk-0/vm_data/vm-100-disk-1
- ZFS Pool:
zfs_pool(RAIDZ1)- 5x 6TB HDDs
- Usable: ~21.7TB
/zfs_pool/nc_data→ Nextcloud/zfs_pool/immich/immich_library→ Immich media/zfs_pool/immich/immich_database→ Immich PostgreSQL
- Additional SSD:
/dev/sda, 525GB, used for torrents →/mnt/torrents
🔁 Backup & Sync Overview
PBS (proxmox-backup-server)
- Hostname:
backup - IP:
192.168.1.35 - Datastore:
/mnt/backup_nvme(name:proxmox04-backups) - Prune Policy:
- Hourly: 7
- Daily: 4
- Weekly: 6
- Monthly: 2
- Yearly: 1
- GC Schedule: Daily
- PBS Encryption: ❌ Disabled (using rclone crypt only)
- Offsite Sync: Daily to B2 via
rclonewith encryption (b2-pbs-encrypted) - rclone path: All of
/mnt/backup_nvme
📦 Database Backups
✅ Immich
- Runs in: LXC 109 (Proxmox04)
- DB Engine: PostgreSQL
- DB Path:
/zfs_pool/immich/immich_database - Script:
/usr/local/bin/immich-db-backup.sh(on proxmox04) - Dump Path:
/mnt/backup_nvme/db_dumps/ - Cron:
30 4 * * *→ Immich DB dump
✅ Nextcloud
- Runs in: LXC 115 (Nextcloud AIO via Docker)
- DB Engine: PostgreSQL 17.5
- DB Container:
nextcloud-aio-database - Script:
/usr/local/bin/nextcloud-db-backup.sh(inside LXC 115) - Dump Path:
/mnt/nc_data/db_dumps/ - Cron:
0 4 * * *→ Nextcloud DB dump
🧠 Credential Management
- All critical secrets are stored in Bitwarden under
homelab/- rclone crypt keys
- PBS access
- Database passwords (Nextcloud, Immich)
- Cloudflare tunnel tokens
🧩 LXC Containers & Apps (Proxmox04)
| CT ID | Name | IP Address | Role/Service |
|---|---|---|---|
| 100 | HomeAssistant | 192.168.1.36 | Home automation |
| 102 | Gitea | 192.168.1.40 | Markdown/docs repo |
| 103 | Pi-hole | 192.168.1.3 | DNS ad blocker |
| 104 | Sonarr | 192.168.1.43 | TV automation |
| 105 | Radarr | 192.168.1.43 | Movie automation |
| 106 | Jackett | 192.168.1.45 | Indexer proxy |
| 107 | FlareSolverr | 192.168.1.46 | Cloudflare captcha bypass |
| 108 | qBittorrent | 192.168.1.47 | Torrent client |
| 109 | Immich | 192.168.1.48 | Photo library |
| 110 | Nextcloud | N/A | Legacy or placeholder |
| 111 | Cloudflared | 192.168.1.49 | Cloudflare tunnel |
| 112 | Homarr | 192.168.1.33 | Dashboard |
| 113 | Prowlarr | 192.168.1.34 | Indexer manager |
| 114 | Collabora | N/A | Office suite |
| 115 | Nextcloud | 192.168.1.50 | Nextcloud AIO stack |
🎯 Restore Strategy (high-level)
- PBS Restore:
- Use GUI or CLI to select CT/VM → restore to new ID
- Database Restore:
gunzipthe.sql.gzdump- Use
psqlinside Immich (109) or docker exec for Nextcloud
- Media Restore:
- ZFS rollback or
rsyncfrom backup
- ZFS rollback or
This doc should be stored in Gitea (HomeLabDocs) and printed to paper or PDF for offline disaster recovery.