### Start Jellyfin from CMD
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Starts the Jellyfin executable from the default installation directory using CMD.
```cmd
%APPDATA%\Jellyfin-Server\jellyfin.exe
```
--------------------------------
### Portable Windows Install - Run Batch File
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Command to run the jellyfin.bat file to start the server.
```cmd
jellyfin.bat
```
--------------------------------
### Configure and Start systemd Service
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Applies correct permissions to the service file, reloads systemd, enables the service to start on boot, and starts the Jellyfin service.
```bash
sudo chmod 644 jellyfin.service
sudo systemctl daemon-reload
sudo systemctl enable jellyfin.service
sudo systemctl start jellyfin.service
```
--------------------------------
### Start Jellyfin from PowerShell
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Starts the Jellyfin executable from the default installation directory using PowerShell.
```powershell
&"$env:AppData\Jellyfin-Server\jellyfin.exe"
```
--------------------------------
### docker-compose.yml
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-docker-compose.md
Example docker-compose.yml file for setting up Jellyfin.
```yaml
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
# Optional - specify the uid and gid you would like Jellyfin to use instead of root
user: uid:gid
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- /path/to/config:/config
- /path/to/cache:/cache
- type: bind
source: /path/to/media
target: /media
- type: bind
source: /path/to/media2
target: /media2
read_only: true
# Optional - extra fonts to be used during transcoding with subtitle burn-in
- type: bind
source: /path/to/fonts
target: /usr/local/share/fonts/custom
read_only: true
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'
```
--------------------------------
### Install software-properties-common
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs the software-properties-common package if the add-apt-repository command fails.
```sh
sudo apt-get install software-properties-common
```
--------------------------------
### Installation
Source: https://github.com/jellyfin/jellyfin.org/blob/master/README.md
Installs the necessary dependencies for the project.
```console
npm install
```
--------------------------------
### Example Music Folder Structure
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/server/media/music.md
This example shows how albums should be organized in folders for Jellyfin to recognize them.
```txt
Music
├── Some Artist
│ ├── Album A
│ │ ├── Song 1.flac
│ │ ├── Song 2.flac
│ │ └── Song 3.flac
│ └── Album B
│ ├── Track 1.m4a
│ ├── Track 2.m4a
│ └── Track 3.m4a
└── Album X
├── Whatever You.mp3
├── Like To.mp3
├── Name Your.mp3
└── Music Files.mp3
```
--------------------------------
### Download and install GPG signing key
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Downloads the Jellyfin Team's GPG signing key and installs it for APT repository verification.
```sh
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
```
--------------------------------
### Install curl and gnupg
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs the necessary tools for managing repositories and keys.
```sh
sudo apt install curl gnupg
```
--------------------------------
### Run Docker Compose
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-docker-compose.md
Command to start the Jellyfin container using Docker Compose.
```sh
docker compose up
```
--------------------------------
### Podman Run Example
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-podman.md
Example command to run Jellyfin as a container using Podman.
```sh
podman run \
--detach \
--label "io.containers.autoupdate=registry" \
--name myjellyfin \
--publish 8096:8096/tcp \
--device /dev/dri/:/dev/dri/ \
# --security-opt label=disable # Only needed for older versions of container-selinux < 2.226
--rm \
--user $(id -u):$(id -g) \
--userns keep-id \
--volume jellyfin-cache:/cache:Z \
--volume jellyfin-config:/config:Z \
--mount type=bind,source=/path/to/media,destination=/media,ro=true,relabel=private \
docker.io/jellyfin/jellyfin:latest
```
--------------------------------
### Install .deb packages with apt
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs downloaded Jellyfin .deb packages, ensuring dependency resolution.
```sh
sudo apt install ./jellyfin-server_*.deb ./jellyfin-web_*.deb ./jellyfin-ffmpeg_*.deb
```
--------------------------------
### Install Jellyfin sub-packages explicitly
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs the Jellyfin server and web interface packages individually.
```sh
sudo apt install jellyfin-server jellyfin-web
```
--------------------------------
### Execute the installation script
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/linux.md
This command executes the downloaded installation script with superuser privileges.
```bash
sudo bash install-debuntu.sh
```
--------------------------------
### Install Podman
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-podman.md
Installs Podman on a system using DNF package manager.
```sh
sudo dnf install -y podman
```
--------------------------------
### File Name Example 2
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/server/media/_video-external-extras.md
Example of using a specific filename for a sample.
```txt
Awesome TV Show (2024)
├── Season 1
│ ├── Awesome TV Show (2024) S01E01 episode name.mp4
└── sample.mp4
```
--------------------------------
### Configuration Directory Examples
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/contributing/branding.md
Examples of casing for Jellyfin configuration directories based on operating system conventions.
```shell
/var/lib/jellyfin
AppData/Jellyfin
```
--------------------------------
### Create Jellyfin Startup Script
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Creates a script to run Jellyfin with necessary command-line arguments, simplifying execution.
```bash
#!/bin/bash
JELLYFINDIR="/opt/jellyfin"
FFMPEGDIR="/usr/share/jellyfin-ffmpeg"
$JELLYFINDIR/jellyfin/jellyfin \
-d $JELLYFINDIR/data \
-C $JELLYFINDIR/cache \
-c $JELLYFINDIR/config \
-l $JELLYFINDIR/log \
--ffmpeg $FFMPEGDIR/ffmpeg
```
--------------------------------
### Create Jellyfin Directory and Navigate
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Creates the directory for Jellyfin and its files in /opt and changes the current directory to it.
```bash
sudo mkdir /opt/jellyfin
cd /opt/jellyfin
```
--------------------------------
### Custom values.yaml for Helm installation
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/kubernetes.md
Example values.yaml file for customizing Jellyfin installation via Helm.
```yaml
# values.yaml
replicaCount: 1
image:
pullPolicy: IfNotPresent
persistence:
config:
enabled: true
size: 5Gi
storageClass: ''
media:
enabled: true
size: 100Gi
storageClass: ''
ingress:
enabled: true
className: 'traefik'
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 2000m
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
nodeSelector: {}
tolerations: []
affinity: {}
```
--------------------------------
### Systemd Example for Podman
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-podman.md
Example systemd unit file for managing a Jellyfin Podman container.
```ini
[Unit]
Description=jellyfin
[Container]
Image=docker.io/jellyfin/jellyfin:latest
AutoUpdate=registry
PublishPort=8096:8096/tcp
UserNS=keep-id
#SecurityLabelDisable=true # Only needed for older versions of container-selinux < 2.226
AddDevice=/dev/dri/:/dev/dri/
Volume=jellyfin-config:/config:Z
Volume=jellyfin-cache:/cache:Z
Volume=jellyfin-media:/media:Z
[Service]
```
--------------------------------
### Docker Container Status Output
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/post-install/networking/9_advanced/letsencrypt.md
This is an example of the output from the 'docker ps' command, verifying that the swag docker container has started.
```text
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09346434b8ea linuxserver/swag "/init" 2 minutes ago Up 5 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp swag
```
--------------------------------
### Local Development
Source: https://github.com/jellyfin/jellyfin.org/blob/master/README.md
Starts a local development server for live previewing changes.
```console
npm start
```
--------------------------------
### Bind Mount Multiple Media Libraries
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/_container-docker-cli.md
Example of how to bind mount multiple media directories into the Jellyfin container.
```sh
--mount type=bind,source=/path/to/media1,target=/media1
--mount type=bind,source=/path/to/media2,target=/media2,readonly
```
--------------------------------
### Manage Jellyfin system service
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Commands to start, stop, restart, or check the status of the Jellyfin system service using systemctl or service.
```sh
sudo systemctl {action} jellyfin
sudo service jellyfin {action}
```
--------------------------------
### Run Jellyfin Manually
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Executes the Jellyfin startup script to run the server.
```bash
./jellyfin.sh
```
--------------------------------
### Verify OpenCL Runtime Status in LXC
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/post-install/transcoding/hardware-acceleration/rockchip.md
This command checks for installed packages related to Mali drivers, OpenCL, and Jellyfin within the LXC container, using Ubuntu Jammy as an example.
```shell
dpkg -l | egrep "libmali|clinfo|jellyfin"
```
--------------------------------
### Create Data Directories
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Creates sub-directories for Jellyfin data, cache, configuration, and logs.
```bash
sudo mkdir data cache config log
```
--------------------------------
### Install Jellyfin via extrepo (Debian)
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs Jellyfin using the extrepo package manager on Debian systems, providing a trusted installation method.
```bash
sudo apt install extrepo
sudo extrepo enable jellyfin
```
--------------------------------
### Install Jellyfin metapackage
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs the main Jellyfin package, which includes all necessary sub-packages.
```sh
sudo apt install jellyfin
```
--------------------------------
### Manual Backup Example (Debian)
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/administration/backup-and-restore.md
Example commands to create a manual backup of Jellyfin data and configuration directories on a Debian system.
```bash
TIMESTAMP=$(date +%Y%m%d%H%M%S)
VERSION=10.9.10
sudo mkdir -p /media/backups/jellyfin.${TIMESTAMP}_${VERSION} # Or change the path wherever in your system makes sense to you
sudo cp -a /var/lib/jellyfin /media/backups/jellyfin.${TIMESTAMP}_${VERSION}/data
sudo cp -a /etc/jellyfin /media/backups/jellyfin.${TIMESTAMP}_${VERSION}/config
```
--------------------------------
### List build platforms
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Lists the available platforms for building.
```shell
./build --list-platforms
```
--------------------------------
### Enable and start jellyfin service
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/community.md
Enables the jellyfin service to start on boot and starts it immediately.
```sh
sudo systemctl enable --now jellyfin
```
--------------------------------
### Set Permissions for Jellyfin Files
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Changes ownership of Jellyfin files and directories to the current user and group, and makes the startup script executable.
```bash
USER=$(id --name --user)
GROUP=$(id --name --group)
sudo chown -R $USER:$GROUP *
sudo chmod u+x jellyfin.sh
```
--------------------------------
### Install FFmpeg Dependencies (Debian/Derivatives)
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Installs FFmpeg and its dependencies if running Debian or a derivative, especially if Jellyfin-specific FFmpeg is needed.
```bash
sudo apt install -f
```
--------------------------------
### Build script help
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Displays help information for the build script.
```shell
./build --help
```
--------------------------------
### Run Jellyfin container with Podman
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Runs the Jellyfin container using Podman.
```shell
podman run -d -p 8096:8096 $USERNAME/jellyfin
```
--------------------------------
### Install NVIDIA NVENC/NVDEC on Debian
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/post-install/transcoding/hardware-acceleration/nvidia.md
Install the necessary NVIDIA libraries for NVENC (encoding) and NVDEC (decoding) support on Debian systems. Ensure the NVIDIA driver is already installed.
```shell
sudo apt update && sudo apt install -y libnvcuvid1 libnvidia-encode1
```
--------------------------------
### Docker command line example
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/post-install/transcoding/hardware-acceleration/amd.md
Example of running the Jellyfin Docker container with hardware acceleration enabled.
```shell
docker run -d \
--name=jellyfin \
--volume /path/to/config:/config \
--volume /path/to/cache:/cache \
--volume /path/to/media:/media \
--user 1000:1000 \
--group-add="122" \# Change this to match your "render" host group id and remove this comment
--net=host \
--restart=unless-stopped \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
jellyfin/jellyfin
```
--------------------------------
### Start Jellyfin Daemon
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/administration/migrate.md
Command to start the Jellyfin server service.
```bash
sudo service jellyfin start
```
--------------------------------
### Clone the repository
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Clones the jellyfin-packaging repository to start the build process.
```shell
git clone https://github.com/jellyfin/jellyfin-packaging.git
cd jellyfin-packaging
```
--------------------------------
### Initialize submodules
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/source.md
Initializes the submodules required for building.
```shell
git submodule update --init
```
--------------------------------
### IPBan Configuration Example
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/post-install/networking/9_advanced/ipban.md
Example configuration for IPBan to monitor Jellyfin logs.
```config
Jellyfin
C:/ProgramData/Jellyfin/Server/log/log_{year-local}{month-local}{day-local}.log
[^\s]+)\S+\s+has\s+been\s+(?denied)\s+\(IP:\s+"(?[^,\"\s]+)"\)
]]>
[^\s]+)\S+\s+has\s+succeeded
]]>
Windows10000167772160
```
--------------------------------
### Portable macOS Install - Run Jellyfin
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Command to run Jellyfin from the terminal.
```shell
./jellyfin
```
--------------------------------
### Local Development with Host Binding
Source: https://github.com/jellyfin/jellyfin.org/blob/master/README.md
Starts a local development server, instructing the host check to bind against all addresses, useful for dev containers.
```console
npm run start -- --host 0.0.0.0
```
--------------------------------
### Movie File Naming Example
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/server/media/_video-multipart.md
Example of how to name multiple parts of a movie.
```text
Movie Name (2010)
├── Movie Name-cd1.mkv
├── Movie Name-cd2.mkv
└── Movie Name-cd3.mkv
```
--------------------------------
### Example Lyric File Naming
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/server/media/music.md
This example shows how lyric files should be named to correspond with their respective music tracks.
```txt
Music
└── Some Artist
└── Album A
├── Song 1.flac
├── Song 1.lrc
├── Song 2.flac
├── Song 2.lrc
├── Song 3.flac
└── Song 3.lrc
```
--------------------------------
### Add Jellyfin repository configuration
Source: https://github.com/jellyfin/jellyfin.org/blob/master/docs/general/installation/advanced/manual.md
Creates a new APT repository source file for Jellyfin, dynamically setting OS, codename, and architecture.
```sh
export VERSION_OS="$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )"
export VERSION_CODENAME="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )"
export DPKG_ARCHITECTURE="$( dpkg --print-architecture )"
cat <