# Jellyfin

They have podman rootless instructions!

<https://jellyfin.org/docs/general/installation/container/#managing-via-systemd>

## Install

### Create jellyfin btrfs volume

```bash
btrfs sub create /btrfs/jellyfin
```

Add /home/jellyfin mount to /etc/fstab

```bash
systemctl daemon-reload
mount -a --mkdir
```

### Create the jellyfin user

```bash
useradd jellyfin
loginctl enable-linger $(id -u jellyfin)
systemctl --user --machine=jellyfin@.host enable podman-restart
systemctl --user --machine=jellyfin@.host enable --now podman.socket
mkdir -p /home/jellyfin/.config/containers/systemd
```

### Install jellyfin

~/.config/containers/systemd/jellyfin.container

```bash
# Copy the files to the server
scp -r active/podman_jellyfin/quadlets/. jellyfin:~/.config/containers/systemd/
ssh jellyfin systemctl --user daemon-reload
ssh jellyfin systemctl --user start jellyfin
ssh jellyfin journalctl --user -xeu jellyfin
ssh jellyfin systemctl --user enable --now podman-auto-update.timer
```

Update the jellyfin record in Caddy.

Open port 8096 in the firewall.

## Mounting Media Directory

Update /etc/fstab with the smb disk details.

Note:

- `x-systemd.automount` which only mounts the device when it's accessed.
- `x-systemd.mount-timeout=30` allows a 30 second timeout
- `_netdev` ensures the device won't be mounted until after the network is available

```conf
UUID=... /btrfs/some-name    btrfs   subvolid=5,compress=zstd:1,x-systemd.automount,x-systemd.mount-timeout=30,_netdev 0 0
```
