Media and Entertainment
Jellyfin is a fully open-source media server for movies, TV, music, and photos. It has no required account, no telemetry, and transcodes video on your hardware. Clients exist for every platform. Jellyfin is the default recommendation for new setups because it has zero ongoing cost and strong community development.
Plex is the alternative with a more polished mobile app and features like Plex Pass (paid, enables hardware transcoding and sync). Plex requires a Plex account and sends some metadata to Plex servers. If you are already invested in Plex's ecosystem, staying is reasonable; for new setups, Jellyfin is preferable.
Navidrome is a lightweight self-hosted music streaming server that implements the Subsonic API. Dozens of clients work with it (DSub, Symfonium, Ultrasonic). It is far lighter than Plex/Jellyfin for audio-only use cases.
File Storage and Sync
Nextcloud is the most feature-complete self-hosted cloud platform: file sync, contacts, calendar, office document editing (with Collabora Office integration), and hundreds of apps via the Nextcloud App Store. It is heavier than simpler alternatives but provides the closest experience to Google Workspace. Run it on a machine with at least 2 GB RAM dedicated to Nextcloud.
Syncthing is a simpler peer-to-peer sync tool with no server component. Files sync directly between devices using a distributed protocol. It is ideal for keeping folders in sync across machines without maintaining a central server. No web UI for browsing files from a browser — just sync.
Security and Privacy
Vaultwarden is a Bitwarden-compatible password manager server written in Rust. It uses a fraction of the RAM of the official Bitwarden server and supports all Bitwarden clients (browser extensions, mobile apps, desktop). Self-hosting your password vault means your credentials never leave your hardware.
AdGuard Home is a DNS-level ad and tracker blocker that works for your entire network. Configure your router to use your AdGuard Home instance as the DNS server and every device on the network benefits without any per-device configuration. It has a cleaner UI than Pi-hole and built-in support for DNS-over-HTTPS and DNS-over-TLS upstreams.
Photos and Documents
Immich is a Google Photos alternative with AI-powered face recognition, automatic albums, map view, and mobile backup apps for iOS and Android. It is one of the fastest-growing self-hosted projects and has excellent usability. Requires a machine with at least 4 GB RAM and optionally a GPU for fast ML processing.
Paperless-ngx scans, OCRs, and indexes paper documents. Point a scanner or camera app at a document, send it to Paperless-ngx, and it becomes searchable text. Apply tags, correspondent labels, and document types for organization. A replacement for filing cabinets.
Self-Hosted Apps Quick Reference
| App | Replaces | RAM Needed | Difficulty | Standout Feature |
|---|---|---|---|---|
| Jellyfin | Plex, Netflix (local media) | 1–2 GB | Easy | 100% free, no account required |
| Plex | Streaming services (local) | 1–2 GB | Easy | Best mobile app, large ecosystem |
| Nextcloud | Google Drive / Workspace | 2–4 GB | Medium | Files + calendar + contacts + apps |
| Syncthing | Dropbox (sync only) | ~100 MB | Easy | No server, P2P sync |
| Vaultwarden | 1Password, LastPass | ~50 MB | Easy | Bitwarden-compatible, very lightweight |
| AdGuard Home | Pi-hole | ~100 MB | Easy | Modern UI, DoH/DoT upstream support |
| Immich | Google Photos, iCloud | 3–6 GB | Medium | AI face recognition, mobile backup |
| Paperless-ngx | Paper filing | 1–2 GB | Medium | OCR + full-text search for documents |
| Home Assistant | SmartThings, Google Home | 512 MB–2 GB | Medium | Local smart home, 3000+ integrations |
| Uptime Kuma | Pingdom, Uptime Robot | ~200 MB | Easy | Beautiful status page, 40+ monitors |
Frequently Asked Questions
Do I need a powerful machine to run self-hosted apps?
Most self-hosted apps are lightweight. A mini PC with 8 GB RAM and a modern low-power processor can comfortably run 10–15 services in Docker containers simultaneously. The exception is Immich (needs RAM for AI processing) and media transcoding in Plex/Jellyfin (needs CPU or GPU if the client cannot play native formats).
What is the easiest way to manage self-hosted Docker apps?
Docker Compose files are the standard. Each app has a docker-compose.yml that defines the container configuration. Keep each app in its own directory under /opt/docker/ or ~/compose/, and use docker compose up -d and docker compose pull to manage them. Portainer provides a visual dashboard if you prefer not to use the terminal.
How do I access self-hosted apps from outside my home network?
The main options are: a VPN (WireGuard running on your home router) so you connect to your home network when away; a reverse proxy (Nginx Proxy Manager, Caddy, Traefik) with a domain name and TLS certificate; or a Cloudflare Tunnel, which connects your server outbound to Cloudflare and routes traffic through their edge without opening firewall ports. The VPN approach is most secure because no services are exposed to the internet.
Is self-hosting reliable enough to replace cloud services?
For non-critical uses (media, photos, documents), yes. For critical services like your primary password manager, consider whether you have redundancy: a UPS to handle power outages, a backup strategy, and monitoring to alert you if a service goes down. Many people run Vaultwarden as their primary password manager with nightly backups and find it more reliable than commercial services because they control the infrastructure.