1. Jellyfin
Make folders for Jellyfin’s settings and cache, and one for photos backed up from phones. Then a
docker-compose.yml; replace the paths left of the colon with yours:
services:
jellyfin:
image: jellyfin/jellyfin:12.1
container_name: jellyfin
# The host's own network: phones on the Wi-Fi find the server by themselves ("Add your server").
network_mode: host
restart: unless-stopped
volumes:
- /srv/jellyfin/config:/config
- /srv/jellyfin/cache:/cache
- /srv/media/video:/media/video:ro
- /srv/media/music:/media/music:ro
- /srv/media/photos/OwnMedia:/media/photos
Start it with docker compose up -d. :ro keeps your movies and music
read-only; the photo folder must be writable, because backups from the phone go there.
OwnMedia’s plugin needs Jellyfin 12.1 or newer. network_mode: host lets
phones find the server on your Wi-Fi (UDP port 7359). If a firewall is on, allow TCP 8096 and
UDP 7359.
2. First setup
Open http://<server address>:8096 in a browser, create a user (name and password for
the phone) and add libraries: Movies → /media/video, Music → /media/music,
and Photos → /media/photos if you like.
3. The OwnMedia plugin
In Jellyfin: Dashboard → Plugins → Manage Repositories → +, name OwnMedia, URL:
https://raw.githubusercontent.com/3dengineering01-star/Homeplayer/main/jellyfin-repo/manifest.json
Then Plugins → filter All → Homeplay Backup → Install, and restart Jellyfin from
the main Dashboard page. In the plugin’s settings, set the photo folder to
/media/photos.
4. The phone
In OwnMedia, tap Add your server; on the same Wi-Fi it is found by itself, otherwise type
<server address>:8096. A page with a QR code for phones:
http://<server address>:8096/Homeplay/Phone.
5. Access from the internet
Install Tailscale on the host, sign in, and open Jellyfin’s port with Funnel:
sudo tailscale funnel --bg 8096
It prints the address, https://<machine>.<your tailnet>.ts.net/. The first
time, Tailscale may ask you to enable Funnel in the browser. Only port 8096 is opened; nothing changes
on the router. Then in OwnMedia: the server’s menu ⋮ → Share with friends → I have an address
already → this address.
Already reach the server another way, with your own domain and reverse proxy or a VPN? Use that address instead. More in Away from home and friends.
The app for friends
Nothing to set up: invite pages and the QR code send friends to download the newest app from ownmedia.app. This needs the plugin 1.8 or newer; Jellyfin offers the update under Dashboard → Plugins.
Removing OwnMedia
docker compose downin the folder with the compose file, thendocker image rm jellyfin/jellyfin:12.1.- Turn off access from the internet:
sudo tailscale funnel --https=443 off. Stopping Jellyfin doesn’t do it: Funnel stays on in Tailscale itself (the address opens, with an error) until you turn it off or remove Tailscale and the machine from the Machines list on the Tailscale website. - Delete Jellyfin’s config and cache folders. Your movies, music and photo backups aren’t touched.
- In OwnMedia on the phone: the server’s menu ⋮ → remove the server.