PortableFlix
in productionMy homelab: a server in Málaga and a NAS in Fuerteventura, joined by a VPN. No ports open on the router.
Read the case study
// Problem
I wanted my own media server and access to the NAS on another island, without exposing anything to the internet or paying for it. I had an old laptop and time.
// What I built
- I set up Ubuntu Server 24.04 on a repurposed laptop.
- Jellyfin on Docker Compose, running as an unprivileged user (UID 1000).
- Tailscale/WireGuard VPN between the Málaga server and the Fuerteventura NAS: remote access and SSH with no port forwarding.
- I mounted the NAS over NFS, read-only and restricted by IP, with automount and nofail.
- A separate LVM volume for the library and transcoding temp files.
- Key-only SSH.
// Technical decisions
- Mesh VPN instead of opening ports
- Nothing is exposed to the internet. The router has no forwarding rules at all.
- Separate LVM volume for data
- If the media disk fills up, the system keeps running.
- Read-only NFS with nofail
- The server boots even when the NAS is off, and the container can't touch the library.
- Non-root container and config in Git
- Least privilege. Users, tokens and database stay out of the repo.
// What I learned / would do differently
- Docs fall behind unless I update them with every change: the README still said Jellyfin was local-only after I opened it to the home network for the TV.
- I set up LVM and NFS by hand. Next time I'll keep them as code too (fstab, exports) so I can rebuild the server from scratch.








