_ _ _
_ __ _ __(_)_ _____ | | ___ _ _ __| |
| '_ \| '__| \ \ / / __|| |/ _ \| | | |/ _` |
| |_) | | | |\ V / (__ | | (_) | |_| | (_| |
| .__/|_| |_| \_/ \___||_|\___/ \__,_|\__,_|
|_|
Your server. Your data. No cloud required.
Self-hosted home server with photo backup, media streaming, file management, and remote access.
git clone https://github.com/hamr0/privcloud.git && cd privcloud
privcloud install
privcloud start
# Open http://localhost:2283Back up phone photos locally on any machine. Start when you need it, stop when done.
git clone https://github.com/hamr0/privcloud.git && cd privcloud
federver # pick 1, then SSH in and run the restOne script sets up everything from a fresh Fedora XFCE install. See customer guide for full walkthrough.
| Service | Port | What it does |
|---|---|---|
| Immich | 2283 | Photo backup from phone, face detection, smart search |
| Jellyfin | 8096 | Stream movies, music, media — personal Netflix |
| FileBrowser | 8080 | Browse/download/upload files from any browser |
| Uptime Kuma | 3001 | Monitoring dashboard, alerts if services go down |
| Watchtower | — | Auto-updates all containers daily at 4am |
| Tailscale | — | Remote access from anywhere, no port forwarding |
| WireGuard | 51820 | Full VPN — route all traffic through server |
| Remote Desktop | 3389 | Full XFCE desktop via RDP from any device |
========================================
Federver — Fedora XFCE Server Manager
========================================
-- Initial setup (run once, in order) --
1) Enable SSH + auto-login + hostname ← with monitor
2) SSH key auth ← from laptop, exit SSH first
3) System update
4) Enable auto-updates
5) Install Docker ← log out & SSH back in after
-- Services --
6) Configure firewall
7) Deploy services ← Immich, Jellyfin, FileBrowser, Watchtower, Uptime Kuma
8) Setup backups + disk monitoring
9) Configure log rotation
-- Extras (optional, run anytime) --
10) Install Tailscale ← remote access VPN
11) Install WireGuard ← full VPN, route all traffic
12) Manage storage ← USB drives, media/data paths
13) Remote desktop ← access XFCE desktop via RDP
-- Immich photo management --
Run: privcloud [start|stop|status|update|backup]
-- Tools (from laptop, exit SSH first) --
14) Sync files ← copy/backup files between laptop & server
15) Save to pass ← from laptop, backup everything to pass
s) Status p) Power a) Run all (3-9) 0) Exit
1) install Check prerequisites, pull images, set up config
2) start Start Immich
3) stop Stop Immich
4) status Show health, containers, recent errors
5) config Change photo storage location
6) update Check for updates and apply
7) upload Upload photos via Immich CLI
8) fix-gp Fix Google Photos metadata (Takeout export)
9) backup Backup photos + database to external drive
0) exit
Both commands work from anywhere on the server. First run federver → step 1 to register the commands.
fedvpn — WireGuard VPN
1) Setup ← first time: install + paste config
2) Connect
3) Disconnect
4) Status
0) Exit
Also: fedvpn start / fedvpn stop / fedvpn status
| Task | Command |
|---|---|
| Server status | federver → s |
| Immich management | privcloud |
| Upload media/files | FileBrowser → http://<ip>:8080 (admin / privcloud) |
| Manage storage | federver → 12 (mount USB, change paths) |
| VPN connect/disconnect | fedvpn start / fedvpn stop (laptop) |
| Show WireGuard peer config | federver → 11 → 2 (server) |
| Check containers | docker ps |
| View logs | docker logs <container> |
| Update Immich | privcloud update |
| Update all containers | docker compose pull && docker compose up -d |
| Update system | sudo dnf upgrade |
| Remote desktop | RDP client → server IP port 3389 |
| Backup | privcloud backup or sudo /usr/local/bin/immich-backup.sh |
| Disk alerts | cat /var/log/disk-check.log or Uptime Kuma dashboard |
| Backup to pass | federver → 15 (from laptop) |
| Shutdown | federver → p |
| Doc | What |
|---|---|
| Customer Guide | Full setup walkthrough, service config, troubleshooting, maintenance |
| Changelog | Version history |
| File | What |
|---|---|
setup.sh |
Server manager (runs as federver) |
privcloud |
Photo manager (runs as privcloud) |
fedvpn |
WireGuard VPN client for laptop |
docker-compose.yml |
All service definitions |
.env.example |
Config template |
scripts/ |
Google Takeout fix, installer |
tools/ |
Backup utility |
MIT