Goal: a low-power, always-on home server that streams your local movies/shows to every device in the house and exposes a network share for the family laptops.
Bill of materials
- Raspberry Pi 4 (4GB is plenty; 8GB if you want headroom for more services)
- Official Raspberry Pi 27W USB-C power supply
- 32GB+ A2-rated microSD card (Samsung Evo Plus works great)
- 1TB or 2TB external USB 3.0 hard drive (self-powered preferred)
- Aluminium passive case (Argon ONE or similar) for silent cooling
- Ethernet cable — Wi-Fi works but wired is dramatically better for 1080p streaming
Step 1 — Flash Raspberry Pi OS Lite (64-bit) using Raspberry Pi Imager. In the gear menu, preset the hostname, enable SSH, and configure Wi-Fi/locale. This avoids needing a monitor.
Step 2 — Boot the Pi, SSH in, run `sudo apt update && sudo apt full-upgrade -y`, then `sudo apt install -y curl gnupg`.
Step 3 — Install Jellyfin with the official one-liner
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bashOpen http://<pi-ip>:8096 in your browser to finish the web setup.
Step 4 — Mount your USB drive permanently. Find it with `lsblk`, format it ext4 if needed, then add an /etc/fstab entry like:
/dev/sda1 /mnt/media ext4 defaults,nofail,noatime 0 2Step 5 — Install Samba: `sudo apt install -y samba`. Edit /etc/samba/smb.conf, add a [media] share pointing at /mnt/media, then `sudo smbpasswd -a pi` and restart Samba.
Performance tips
- Transcoding 4K on a Pi 4 is rough — keep your files in formats the client can direct-play (H.264 in MP4/MKV is safest).
- Move the Jellyfin metadata directory to the USB drive to extend the lifetime of your SD card.
- Add Tailscale if you want secure remote access without opening ports on your router.
Power consumption hovers around 4-6W, so you can run this 24/7 for less than a few dollars a month.