Skip to content

hamr0/privcloud

Repository files navigation

           _            _                 _
 _ __ _ __(_)_   _____ | | ___  _   _  __| |
| '_ \| '__| \ \ / / __|| |/ _ \| | | |/ _` |
| |_) | |  | |\ V / (__ | | (_) | |_| | (_| |
| .__/|_|  |_| \_/ \___||_|\___/ \__,_|\__,_|
|_|

Your server. Your data. No cloud required.

Self-hosted home server with photo backup, media streaming, file management, and remote access.

Two modes

Immich only — no server needed

git clone https://github.com/hamr0/privcloud.git && cd privcloud
privcloud install
privcloud start
# Open http://localhost:2283

Back up phone photos locally on any machine. Start when you need it, stop when done.

Full home server — always-on

git clone https://github.com/hamr0/privcloud.git && cd privcloud
federver      # pick 1, then SSH in and run the rest

One script sets up everything from a fresh Fedora XFCE install. See customer guide for full walkthrough.

Services

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

Commands

federver — Fedora XFCE server manager

========================================
  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

privcloud — Immich photo manager

  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 client (runs on laptop)

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

Quick reference

Task Command
Server status federvers
Immich management privcloud
Upload media/files FileBrowser → http://<ip>:8080 (admin / privcloud)
Manage storage federver12 (mount USB, change paths)
VPN connect/disconnect fedvpn start / fedvpn stop (laptop)
Show WireGuard peer config federver112 (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 federver15 (from laptop)
Shutdown federverp

Docs

Doc What
Customer Guide Full setup walkthrough, service config, troubleshooting, maintenance
Changelog Version history

Files

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

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors

Languages