diff --git a/docs/general/installation/advanced/_category_.yml b/docs/general/installation/advanced/_category_.yml
new file mode 100644
index 00000000..b6a227e1
--- /dev/null
+++ b/docs/general/installation/advanced/_category_.yml
@@ -0,0 +1,2 @@
+label: 'Advanced Installation'
+position: 6
diff --git a/docs/general/installation/advanced/community.md b/docs/general/installation/advanced/community.md
new file mode 100644
index 00000000..8f797a20
--- /dev/null
+++ b/docs/general/installation/advanced/community.md
@@ -0,0 +1,139 @@
+---
+uid: installation-advanced-community
+title: Community Maintained Packages
+description: Community maintained packages.
+sidebar_position: 1
+---
+
+# Community Maintained Packages
+
+These packages are maintained by community packagers independent of Jellyfin for distributions not officially supported by Jellyfin. We can't always support problems with community-maintained packages. If you encounter trouble with them, please contact their maintainers first. If you're not sure, we recommend using [container images](/docs/general/installation/container) on these systems instead.
+
+## Alpine Linux
+
+Jellyfin can be found in the `community` repository as
+[`jellyfin`](https://pkgs.alpinelinux.org/package/edge/community/x86_64/jellyfin) and
+[`jellyfin-web`](https://pkgs.alpinelinux.org/package/edge/community/x86_64/jellyfin-web).
+
+To enable the web UI after installing `jellyfin-web`, make sure to remove the `--nowebclient` option from
+`/etc/conf.d/jellyfin`.
+
+## Arch Linux
+
+The `Extra` repository contains builds for both [`jellyfin-server`](https://archlinux.org/packages/?name=jellyfin-server) and [`jellyfin-web`](https://archlinux.org/packages/?name=jellyfin-web).
+`jellyfin-server` includes a hard dependency on [`jellyfin-ffmpeg`](https://archlinux.org/packages/?name=jellyfin-ffmpeg).
+
+Both packages, server and web, can also be built from source at the tip of the master branch using [`jellyfin-git`](https://aur.archlinux.org/packages/jellyfin-git/).
+The AUR also offers each separately at [`jellyfin-server-git`](https://aur.archlinux.org/packages/jellyfin-server-git/) and [`jellyfin-web-git`](https://aur.archlinux.org/packages/jellyfin-web-git/).
+
+## Fedora, CentOS and other RPM distributions
+
+Builds in RPM package format are provided by RPM Fusion. Official packages are no longer provided starting with 10.9.
+
+### RPM Fusion
+
+1. `rpmfusion` must be enabled first
+
+ ```sh
+ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
+ ```
+
+2. Install the `jellyfin` package, which will automatically install `jellyfin-server`, `jellyfin-web` and `jellyfin-firewalld`
+
+ ```sh
+ sudo dnf install jellyfin
+ ```
+
+3. Enable and start the Jellyfin service:
+
+ ```sh
+ sudo systemctl enable --now jellyfin
+ ```
+
+### Manual installation via the .rpm packages
+
+1. You will need to enable `rpmfusion`, as `ffmpeg` is a dependency of the `jellyfin` server package
+
+ ```sh
+ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
+ ```
+
+ :::note
+
+ You do not need to manually install `ffmpeg`; it will be installed by the Jellyfin server package as a dependency.
+
+ :::
+
+2. Install the Jellyfin server
+
+ ```sh
+ sudo dnf install
+ ```
+
+3. Install the Jellyfin web interface
+
+ ```sh
+ sudo dnf install
+ ```
+
+4. Enable and start the Jellyfin service:
+
+ ```sh
+ sudo systemctl enable --now jellyfin
+ ```
+
+5. Allow Jellyfin through the firewall:
+
+ ```sh
+ sudo firewall-cmd --permanent --add-service=jellyfin
+ ```
+
+ :::note
+
+ This will open the following ports:
+
+ - `8096 TCP`, used by default for HTTP traffic; you can change this in the dashboard
+ - `8920 TCP`, used by default for HTTPS traffic; you can change this in the dashboard
+ - `1900 UDP`, used for service auto-discovery; this is not configurable
+ - `7359 UDP`, used for auto-discovery; this is not configurable
+
+ :::
+
+6. Reload the firewall to apply the new rules:
+
+ ```sh
+ sudo firewall-cmd --reload
+ ```
+
+7. Go to `localhost:8096` or `ip-address-of-jellyfin-server:8096` to finish setup in the web UI.
+
+## Gentoo
+
+The Gentoo ebuild repository includes the Jellyfin package which can be installed like other software:
+
+```sh
+emerge www-apps/jellyfin
+```
+
+## NixOS
+
+NixOS has a [module for Jellyfin](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/misc/jellyfin.nix),
+it can be enabled as follows:
+
+```nix
+{
+ services.jellyfin.enable = true;
+}
+```
+
+For more information, refer to the [NixOS wiki](https://wiki.nixos.org/wiki/Jellyfin).
+
+## Flatpak
+
+The Jellyfin Server package is available on [Flathub](https://flathub.org/apps/org.jellyfin.JellyfinServer).
+
+This package is provided for convenience only, and may be deprecated at any time. It is not recommended as [Flatpak themselves don't recommend the use of Flatpak for server applications](https://flatpak.org/faq/#Can_Flatpak_be_used_on_servers_too_). Please use [container images](/docs/general/installation/container) instead.
+
+## FreeBSD
+
+A [Third-party Jellyfin build for FreeBSD](https://github.com/Thefrank/jellyfin-server-freebsd) is available. This is not supported by Jellyfin. Please report any issues to them. Issues reported to Jellyfin about this package will be closed without further investigation.
diff --git a/docs/general/installation/advanced/manual.md b/docs/general/installation/advanced/manual.md
new file mode 100644
index 00000000..a87de9c6
--- /dev/null
+++ b/docs/general/installation/advanced/manual.md
@@ -0,0 +1,392 @@
+---
+uid: installation-advanced-manual
+title: Manual Installation
+description: Install Jellyfin Manually.
+sidebar_position: 3
+---
+
+
+
+## Portable Windows Package
+
+### Portable Windows Install
+
+1. Download and extract the latest version.
+2. Create a folder `jellyfin` at your preferred install location.
+3. Copy the extracted folder into the `jellyfin` folder and rename it to `system`.
+4. Create `jellyfin.bat` within your `jellyfin` folder containing:
+
+ - To use the default library/data location at `%localappdata%`:
+
+ ```cmd
+ <--Your install path-->\jellyfin\system\jellyfin.exe
+ ```
+
+ - To use a custom library/data location (Path after the -d parameter):
+
+ ```cmd
+ <--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data
+ ```
+
+ - To use a custom library/data location (Path after the -d parameter) and disable the auto-start of the webapp:
+
+ ```cmd
+ <--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data -noautorunwebapp
+ ```
+
+5. Run
+
+ ```cmd
+ jellyfin.bat
+ ```
+
+6. Open your browser at `http://<--Server-IP-->:8096`.
+
+### Portable Windows Update
+
+1. Stop Jellyfin
+2. Rename the Jellyfin `system` folder to `system-bak`
+3. Download and extract the latest Jellyfin version
+4. Copy the extracted folder into the `jellyfin` folder and rename it to `system`
+5. Run `jellyfin.bat` to start the server again
+
+### Portable Windows Rollback
+
+1. Stop Jellyfin.
+2. Delete the `system` folder.
+3. Rename `system-bak` to `system`.
+4. Run `jellyfin.bat` to start the server again.
+
+## Portable macOS package
+
+### Installing the Portable macOS Version
+
+1. Download the latest version of Jellyfin.
+2. Extract it into the Applications folder.
+3. Open Terminal and type `cd` followed with a space then drag the jellyfin folder into the terminal.
+4. Type `xattr -rd com.apple.quarantine .` to remove the quarantine flag.
+5. Type `codesign -fs - --deep jellyfin` to create an ad-hoc signature for the server.
+6. Type `./jellyfin` to run jellyfin.
+7. Open your browser at [http://localhost:8096](http://localhost:8096).
+
+Closing the terminal window will end Jellyfin. Running Jellyfin in screen or tmux can prevent this from happening.
+
+### Updating the Portable macOS Version
+
+1. Download the latest version.
+2. Stop the currently running server either via the dashboard or using `CTRL+C` in the terminal window.
+3. Extract the latest version into Applications
+4. Open Terminal and type `cd` followed with a space then drag the jellyfin folder into the terminal.
+5. Type `xattr -rd com.apple.quarantine .` to remove the quarantine flag.
+6. Type `codesign -fs - --deep jellyfin` to create an ad-hoc signature for the server.
+7. Type `./jellyfin` to run jellyfin.
+8. Open your browser at [http://localhost:8096](http://localhost:8096)
+
+### Uninstalling the Portable macOS Version
+
+1. Stop the currently running server either via the dashboard or using `CTRL+C` in the terminal window.
+2. Move `/Application/jellyfin-version` folder to the Trash. Replace version with the actual version number you are trying to delete.
+3. Delete the folder `~/.config/jellyfin/`
+4. Delete the folder `~/.local/share/jellyfin/`
+
+### Using FFmpeg with the Portable macOS Version
+
+The portable version doesn't come with FFmpeg by default. There are a few options for installing FFmpeg:
+
+- download jellyfin-ffmpeg from the [Jellyfin repo](https://repo.jellyfin.org/?path=/ffmpeg/macos) (recommended)
+- use the package manager homebrew by typing `brew install ffmpeg` into your Terminal ([here's how to install homebrew if you don't have it already](https://treehouse.github.io/installation-guides/mac/homebrew)
+- download the most recent [static build](https://evermeet.cx/ffmpeg/get/zip) (compiled by a third party see [evermeet.cx](https://evermeet.cx/ffmpeg/) for options and information) (Apple Silicon builds are not available from this source)
+- compile from source available from the official [website](https://ffmpeg.org/download.html)
+
+Once downloaded, remove the quarantine flag for the `ffmpeg` and `ffprobe`.
+
+Ensure that both `ffmpeg` and `ffprobe` are located at the same path, then execute the following command:
+
+```shell
+cd /path/to/ffmpeg/folder
+xattr -rd com.apple.quarantine .
+```
+
+## Portable Linux install
+
+Generic `amd64`, `arm64`, and `armhf` Linux builds in TAR archive format are available [in the main download repository](https://repo.jellyfin.org/?path=/server/).
+
+### Base Installation Process
+
+Create a directory in `/opt` for jellyfin and its files, and enter that directory.
+
+```sh
+sudo mkdir /opt/jellyfin
+cd /opt/jellyfin
+```
+
+Download the latest generic Linux build for your architecture.
+The rest of these instructions assume version 10.8.13 is being installed (i.e. `jellyfin_10.8.13_amd64.tar.gz`).
+Download the generic build, then extract the archive:
+
+```sh
+sudo wget https://repo.jellyfin.org/?path=/server/linux/stable/combined/jellyfin_10.8.13_amd64.tar.gz
+sudo tar xvzf jellyfin_10.8.13_amd64.tar.gz
+```
+
+Create a symbolic link to the Jellyfin 10.8.13 directory.
+This allows an upgrade by repeating the above steps and enabling it by simply re-creating the symbolic link to the new version.
+
+```sh
+sudo ln -s jellyfin_10.8.13 jellyfin
+```
+
+Create four sub-directories for Jellyfin data.
+
+```sh
+sudo mkdir data cache config log
+```
+
+### `FFmpeg` Installation
+
+If you are not running a Debian derivative, install `ffmpeg` through your OS's package manager, and skip this section.
+
+:::caution
+
+Not being able to use `jellyfin-ffmpeg` will most likely break hardware acceleration and tonemapping.
+
+:::
+
+If you are running Debian or a derivative, you should [download](https://repo.jellyfin.org/?path=/ffmpeg/debian/) and install an `ffmpeg` `.deb` package built specifically for Jellyfin.
+
+If you run into any dependency errors, run this and it will install them and `jellyfin-ffmpeg`.
+
+```sh
+sudo apt install -f
+```
+
+### Running Jellyfin
+
+Due to the number of command line options that must be passed on to the Jellyfin binary, it is easiest to create a small script to run Jellyfin.
+
+```sh
+sudoedit jellyfin.sh
+```
+
+Then paste the following commands and modify as needed.
+
+```sh
+#!/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
+```
+
+Assuming you desire Jellyfin to run as a non-root user, `chmod` all files and directories to your normal login user and group.
+Also make the startup script above executable.
+
+```sh
+sudo chown -R user:group *
+sudo chmod u+x jellyfin.sh
+```
+
+Finally, you can run it.
+You will see lots of log information when run, this is normal.
+Setup is as usual in the web browser.
+
+```sh
+./jellyfin.sh
+```
+
+#### Starting Jellyfin on boot (optional)
+
+Create a `systemd` unit file.
+
+```sh
+cd /etc/systemd/system
+sudo nano jellyfin.service
+```
+
+Then paste the following contents, replacing `youruser` with your username.
+
+```ini
+[Unit]
+Description=Jellyfin
+After=network.target
+
+[Service]
+Type=simple
+User=youruser
+Restart=always
+ExecStart=/opt/jellyfin/jellyfin.sh
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Apply the correct permissions to the file, enable the service to start on boot, then start it.
+
+```sh
+sudo chmod 644 jellyfin.service
+sudo systemctl daemon-reload
+sudo systemctl enable jellyfin.service
+sudo systemctl start jellyfin.service
+```
+
+## Portable .NET DLL
+
+Platform-agnostic .NET Core DLL builds in TAR archive format are available from the [portable downloads section](/downloads#portable).
+These builds use the binary `jellyfin.dll` and must be loaded with `dotnet`.
+
+## Debian (using extrepo)
+
+extrepo is only supported on Debian currently. The advantage of extrepo is that it is packaged in Debian. So you don’t have to execute the `curl | sudo bash` combo from the previous Automatic section. The risk with that command is that it relies on the security of the webserver. extrepo avoids this by having the Jellyfin repo information including the GPG key in its [extrepo-data](https://salsa.debian.org/extrepo-team/extrepo-data/-/blob/master/repos/debian/jellyfin.yaml?ref_type=heads). extrepo-data is verified with GPG by the extrepo tool. So there is a chain of trust from Debian all the way to the Jellyfin repo information.
+
+```sh
+sudo apt install extrepo
+sudo extrepo enable jellyfin
+```
+
+Now you can continue at step 5. of the [Repository (Manual) section](#official-linux-repository-manual).
+
+## Official Linux Repository (Manual)
+
+If you would prefer to install everything manually, the full steps are as follows:
+
+1. Install `curl` and `gnupg` if you haven't already:
+
+ ```sh
+ sudo apt install curl gnupg
+ ```
+
+2. On Ubuntu (and derivatives) only, enable the Universe repository to obtain all the FFmpeg dependencies:
+
+ ```sh
+ sudo add-apt-repository universe
+ ```
+
+ :::note
+
+ If the above command fails you will need to install the following package `software-properties-common`.
+ This can be achieved with the following command `sudo apt-get install software-properties-common`
+
+ :::
+
+ On Debian, you can also enable the `non-free` components of your base repositories for additional FFmpeg dependencies, but this is optional.
+
+3. Download the GPG signing key (signed by the Jellyfin Team) and install it:
+
+ ```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
+ ```
+
+4. Add a repository configuration at `/etc/apt/sources.list.d/jellyfin.sources`:
+
+ ```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 <
@@ -48,7 +48,7 @@ All package builds begin with these two steps:
Replace "auto" with your own Jellyfin version tag if you want to.
-3. Run Jellyfin in a new container using Docker or Podman from the built container image.
+2. Run Jellyfin in a new container using Docker or Podman from the built container image.
```sh
docker run -d -p 8096:8096 $USERNAME/jellyfin
diff --git a/docs/general/installation/synology.md b/docs/general/installation/advanced/synology.md
similarity index 98%
rename from docs/general/installation/synology.md
rename to docs/general/installation/advanced/synology.md
index 0766b0ad..81718f2f 100644
--- a/docs/general/installation/synology.md
+++ b/docs/general/installation/advanced/synology.md
@@ -2,7 +2,7 @@
uid: installation-synology
title: Synology
description: Install on Synology NAS.
-sidebar_position: 5
+sidebar_position: 2
---
For [Synology](https://www.synology.com/en-us/dsm), Jellyfin is installed using Docker.
diff --git a/docs/general/installation/truenas.md b/docs/general/installation/advanced/truenas.md
similarity index 100%
rename from docs/general/installation/truenas.md
rename to docs/general/installation/advanced/truenas.md
diff --git a/docs/general/installation/container.md b/docs/general/installation/container.md
index ac4e8ab8..cd9cd1aa 100644
--- a/docs/general/installation/container.md
+++ b/docs/general/installation/container.md
@@ -2,7 +2,7 @@
uid: installation-container
title: Container
description: Install as a container using Docker, Podman and others.
-sidebar_position: 1
+sidebar_position: 4
---
diff --git a/docs/general/installation/index.mdx b/docs/general/installation/index.mdx
index 5acd982d..9fe57c0b 100644
--- a/docs/general/installation/index.mdx
+++ b/docs/general/installation/index.mdx
@@ -16,6 +16,12 @@ Even though there are builds available online for these platforms, they are unof
For info on selecting hardware for a Jellyfin server, please refer to the [Hardware Selection Guide](/docs/general/administration/hardware-selection)
-import DocCardList from '@theme/DocCardList';
-
-
+- [Windows](/docs/general/installation/windows)
+- [macOS](/docs/general/installation/macos)
+- [Debian / Ubuntu](/docs/general/installation/linux#debian--ubuntu-and-derivatives)
+- [Other Linux Distributions](/docs/general/installation/linux#other-distributions)
+- [Docker / Kubernetes / Podman](/docs/general/installation/container)
+- [Synology](/docs/general/installation/advanced/synology)
+- [TrueNAS SCALE](/docs/general/installation/advanced/truenas)
+- [Generic Linux](/docs/general/installation/advanced/manual#portable-linux-install)
+- [Building from source](/docs/general/installation/advanced/source).
diff --git a/docs/general/installation/linux.md b/docs/general/installation/linux.md
index c97477f2..99dd0517 100644
--- a/docs/general/installation/linux.md
+++ b/docs/general/installation/linux.md
@@ -1,19 +1,13 @@
---
uid: installation-linux
title: Linux
-description: Install on Linux.
-sidebar_position: 2
+description: Installing on Linux.
+sidebar_position: 3
---
-## Official packages and methods
+## Debian / Ubuntu and derivatives
-### Debuntu (Debian, Ubuntu, and derivatives using `apt`) with official repository
-
-The Jellyfin team provides 3rd-party Debian and Ubuntu repositories, to help ensure your Jellyfin install is always kept up-to-date. For Ubuntu, only LTS distributions from the past 5 years are supported.
-
-#### Repository (Automatic)
-
-To simplify deployment and help automate this for as many users as possible, we provide a BASH script to handle repo installation as well as installing Jellyfin.
+To simplify deployment and help automate this for as many users as possible, we provide a BASH script to handle repo installation as well as installing Jellyfin on Debian / Ubuntu and derivatives.
All you need to do is run this command on your system (requires `curl`, or subsitute `curl` with `wget -O-`):
```sh
@@ -39,423 +33,10 @@ sudo bash install-debuntu.sh
:::note
-The script tries to handle as many common derivatives as possible, including, at least, Linux Mint (Ubuntu and Debian editions), Raspbian/Raspberry Pi OS, and KDE Neon. We welcome PRs [to the script](https://github.com/jellyfin/jellyfin-repo-helper-scripts/blob/master/install-debuntu.sh) for any other common derivatives, or you can use the steps below instead.
+The script tries to handle as many common derivatives as possible, including, at least, Linux Mint (Ubuntu and Debian editions), Raspbian/Raspberry Pi OS, and KDE Neon. We welcome PRs [to the script](https://github.com/jellyfin/jellyfin-repo-helper-scripts/blob/master/install-debuntu.sh) for any other common derivatives.
:::
-#### Repository (Using extrepo)
+## Other Distributions
-extrepo is only supported on Debian currently. The advantage of extrepo is that it is packaged in Debian. So you don’t have to execute the `curl | sudo bash` combo from the previous Automatic section. The risk with that command is that it relies on the security of the webserver. extrepo avoids this by having the Jellyfin repo information including the GPG key in its [extrepo-data](https://salsa.debian.org/extrepo-team/extrepo-data/-/blob/master/repos/debian/jellyfin.yaml?ref_type=heads). extrepo-data is verified with GPG by the extrepo tool. So there is a chain of trust from Debian all the way to the Jellyfin repo information.
-
-```sh
-sudo apt install extrepo
-sudo extrepo enable jellyfin
-```
-
-Now you can continue at step 5. of the [Repository (Manual) section](#repository-manual).
-
-### Containers
-
-For non-Debian/Ubuntu systems, containers are the recommended way to install Jellyfin. Please follow the [container installation instructions](/docs/general/installation/container).
-
-## Community maintained packages
-
-### Alpine Linux
-
-Jellyfin can be found in the `community` repository as
-[`jellyfin`](https://pkgs.alpinelinux.org/package/edge/community/x86_64/jellyfin) and
-[`jellyfin-web`](https://pkgs.alpinelinux.org/package/edge/community/x86_64/jellyfin-web).
-
-To enable the web UI after installing `jellyfin-web`, make sure to remove the `--nowebclient` option from
-`/etc/conf.d/jellyfin`.
-
-### Arch Linux
-
-The `Extra` repository contains builds for both [`jellyfin-server`](https://archlinux.org/packages/?name=jellyfin-server) and [`jellyfin-web`](https://archlinux.org/packages/?name=jellyfin-web).
-`jellyfin-server` includes a hard dependency on [`jellyfin-ffmpeg`](https://archlinux.org/packages/?name=jellyfin-ffmpeg).
-
-Both packages, server and web, can also be built from source at the tip of the master branch using [`jellyfin-git`](https://aur.archlinux.org/packages/jellyfin-git/).
-The AUR also offers each separately at [`jellyfin-server-git`](https://aur.archlinux.org/packages/jellyfin-server-git/) and [`jellyfin-web-git`](https://aur.archlinux.org/packages/jellyfin-web-git/).
-
-### Fedora, CentOS and other RPM distributions
-
-Builds in RPM package format are provided by RPM Fusion. Official packages are no longer provided starting with 10.9.
-
-#### RPM Fusion
-
-1. `rpmfusion` must be enabled first
-
- ```sh
- sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
- ```
-
-2. Install the `jellyfin` package, which will automatically install `jellyfin-server`, `jellyfin-web` and `jellyfin-firewalld`
-
- ```sh
- sudo dnf install jellyfin
- ```
-
-3. Enable and start the Jellyfin service:
-
- ```sh
- sudo systemctl enable --now jellyfin
- ```
-
-#### Manual installation via the .rpm packages
-
-1. You will need to enable `rpmfusion`, as `ffmpeg` is a dependency of the `jellyfin` server package
-
- ```sh
- sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
- ```
-
- :::note
-
- You do not need to manually install `ffmpeg`; it will be installed by the Jellyfin server package as a dependency.
-
- :::
-
-2. Install the Jellyfin server
-
- ```sh
- sudo dnf install
- ```
-
-3. Install the Jellyfin web interface
-
- ```sh
- sudo dnf install
- ```
-
-4. Enable and start the Jellyfin service:
-
- ```sh
- sudo systemctl enable --now jellyfin
- ```
-
-5. Allow Jellyfin through the firewall:
-
- ```sh
- sudo firewall-cmd --permanent --add-service=jellyfin
- ```
-
- :::note
-
- This will open the following ports:
-
- - `8096 TCP`, used by default for HTTP traffic; you can change this in the dashboard
- - `8920 TCP`, used by default for HTTPS traffic; you can change this in the dashboard
- - `1900 UDP`, used for service auto-discovery; this is not configurable
- - `7359 UDP`, used for auto-discovery; this is not configurable
-
- :::
-
-6. Reload the firewall to apply the new rules:
-
- ```sh
- sudo firewall-cmd --reload
- ```
-
-7. Go to `localhost:8096` or `ip-address-of-jellyfin-server:8096` to finish setup in the web UI.
-
-### Gentoo
-
-The Gentoo ebuild repository includes the Jellyfin package which can be installed like other software:
-
-```sh
-emerge www-apps/jellyfin
-```
-
-### NixOS
-
-NixOS has a [module for Jellyfin](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/misc/jellyfin.nix),
-it can be enabled as follows:
-
-```nix
-{
- services.jellyfin.enable = true;
-}
-```
-
-For more information, refer to the [NixOS wiki](https://wiki.nixos.org/wiki/Jellyfin).
-
-## Advanced
-
-### Manual installation on Debian, Ubuntu and derivatives
-
-#### Repository (Manual)
-
-If you would prefer to install everything manually, the full steps are as follows:
-
-1. Install `curl` and `gnupg` if you haven't already:
-
- ```sh
- sudo apt install curl gnupg
- ```
-
-2. On Ubuntu (and derivatives) only, enable the Universe repository to obtain all the FFmpeg dependencies:
-
- ```sh
- sudo add-apt-repository universe
- ```
-
- :::note
-
- If the above command fails you will need to install the following package `software-properties-common`.
- This can be achieved with the following command `sudo apt-get install software-properties-common`
-
- :::
-
- On Debian, you can also enable the `non-free` components of your base repositories for additional FFmpeg dependencies, but this is optional.
-
-3. Download the GPG signing key (signed by the Jellyfin Team) and install it:
-
- ```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
- ```
-
-4. Add a repository configuration at `/etc/apt/sources.list.d/jellyfin.sources`:
-
- ```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 <
+## Installing on macOS
-# Install on macOS
-
-macOS application packages and portable TAR archive builds are available from the [macOS downloads page](/downloads/macos).
-
-Jellyfin requires macOS 12 or newer to run.
-Jellyfin 10.9 or newer is required for Apple Silicon native support.
-
-## Packaged Version(dmg)
-
-### Install
-
-1. Download the latest version.
+1. Download the latest version DMG image from [the downloads page](/downloads/macos). For Apple Silicon Macs below macOS 14, please update to a newer version of macOS or download the x86 release.
2. Drag the `.app` package into the Applications folder.
3. Start the application.
4. Click the icon in the menu bar and select "Launch Web UI".
-### Upgrade
+## Updating on macOS
-1. Download the latest version.
+1. Download the latest version DMG image from [the downloads page](/downloads/macos).
2. Stop the currently running server either via the dashboard or using the menu bar icon.
3. Drag the new `.app` package into the Applications folder and click yes to replace the files.
4. Start the application.
-### Uninstall
+## Uninstalling on macOS
1. Stop the currently running server either via the dashboard or using the application icon.
2. Move the `.app` package to the trash.
-
-### Deleting Configuration
-
-This will delete all settings and user information. This applies for the .app package and the portable version.
-
-1. Delete the folder `~/.config/jellyfin/`
-2. Delete the folder `~/.local/share/jellyfin/`
-
-## Portable Version
-
-The portable version is intended for advanced users who want more customization options.
-
-For average users, the packaged version is strongly recommended.
-
-If you are not comfortable with command line, then this is not the version for you.
-
-### Installing the Portable Version
-
-1. Download the latest version of Jellyfin.
-2. Extract it into the Applications folder.
-3. Open Terminal and type `cd` followed with a space then drag the jellyfin folder into the terminal.
-4. Type `xattr -rd com.apple.quarantine .` to remove the quarantine flag.
-5. Type `codesign -fs - --deep jellyfin` to create an ad-hoc signature for the server.
-6. Type `./jellyfin` to run jellyfin.
-7. Open your browser at [http://localhost:8096](http://localhost:8096).
-
-Closing the terminal window will end Jellyfin. Running Jellyfin in screen or tmux can prevent this from happening.
-
-### Upgrading the Portable Version
-
-1. Download the latest version.
-2. Stop the currently running server either via the dashboard or using `CTRL+C` in the terminal window.
-3. Extract the latest version into Applications
-4. Open Terminal and type `cd` followed with a space then drag the jellyfin folder into the terminal.
-5. Type `xattr -rd com.apple.quarantine .` to remove the quarantine flag.
-6. Type `codesign -fs - --deep jellyfin` to create an ad-hoc signature for the server.
-7. Type `./jellyfin` to run jellyfin.
-8. Open your browser at [http://localhost:8096](http://localhost:8096)
-
-### Uninstalling the Portable Version
-
-1. Stop the currently running server either via the dashboard or using `CTRL+C` in the terminal window.
-2. Move `/Application/jellyfin-version` folder to the Trash. Replace version with the actual version number you are trying to delete.
-3. Delete the folder `~/.config/jellyfin/`
-4. Delete the folder `~/.local/share/jellyfin/`
-
-### Using FFmpeg with the Portable Version
-
-The portable version doesn't come with FFmpeg by default. There are a few options for installing FFmpeg:
-
-- download jellyfin-ffmpeg from the [Jellyfin repo](https://repo.jellyfin.org/?path=/ffmpeg/macos) (recommended)
-- use the package manager homebrew by typing `brew install ffmpeg` into your Terminal ([here's how to install homebrew if you don't have it already](https://treehouse.github.io/installation-guides/mac/homebrew)
-- download the most recent [static build](https://evermeet.cx/ffmpeg/get/zip) (compiled by a third party see [evermeet.cx](https://evermeet.cx/ffmpeg/) for options and information) (Apple Silicon builds are not available from this source)
-- compile from source available from the official [website](https://ffmpeg.org/download.html)
-
-Once downloaded, remove the quarantine flag for the `ffmpeg` and `ffprobe`.
-
-Ensure that both `ffmpeg` and `ffprobe` are located at the same path, then execute the following command:
-
-```shell
-cd /path/to/ffmpeg/folder
-xattr -rd com.apple.quarantine .
-```
diff --git a/docs/general/installation/windows.md b/docs/general/installation/windows.md
index bd21526e..bcbe98cd 100644
--- a/docs/general/installation/windows.md
+++ b/docs/general/installation/windows.md
@@ -1,97 +1,29 @@
---
uid: installation-windows
title: Windows
-description: Install on Windows.
-sidebar_position: 3
+description: Installing on Windows.
+sidebar_position: 1
---
-Windows installers and portable ZIP archive builds are available from the [Windows downloads page](/downloads/windows).
+## Installing on Windows
-:::caution
-
-If you installed a version prior to 10.4.0 using a PowerShell script, you will need to manually remove the service using the command `nssm remove Jellyfin` and uninstall the server by remove all the files manually.
-Also one might need to move the data files to the correct location, or point the installer at the old location.
-
-:::
-
-:::caution
-
-The Basic Install is the recommended way to run the Jellyfin Server.
-Using the Advanced/Service mode may experience FFmpeg hardware acceleration issues and is only for advanced users.
-
-:::
-
-## Install using installer
-
-**Install**
-
-1. Download the latest version.
+1. Download the latest version installer from [the downloads page](/downloads/windows).
2. Run the installer.
3. (Optional) When installing as a service (not recommended), pick the service account type.
4. If everything was completed successfully, Jellyfin is now running.
5. Open your browser at [http://your_local_IP_address:8096](http://your_local_IP_address:8096) to finish setting up Jellyfin.
-**Update**
+## Updating on Windows
-1. Download the latest version.
-2. Close or Stop Jellyfin if it is running.
+1. Download the latest version installer from [the downloads page](/downloads/windows).
+2. Close or Stop Jellyfin from the tray app if it is running.
3. Run the installer.
4. If everything was completed successfully, the new version is installed.
-**Uninstall**
+## Uninstalling on Windows
-1. Go to `Add or remove programs` in Windows.
+1. Go to [Add or remove programs](https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98) in Windows settings.
2. Search for Jellyfin.
3. Click Uninstall.
-
-## Install manually (portable)
-
-**Install**
-
-1. Download and extract the latest version.
-2. Create a folder `jellyfin` at your preferred install location.
-3. Copy the extracted folder into the `jellyfin` folder and rename it to `system`.
-4. Create `jellyfin.bat` within your `jellyfin` folder containing:
-
- - To use the default library/data location at `%localappdata%`:
-
- ```cmd
- <--Your install path-->\jellyfin\system\jellyfin.exe
- ```
-
- - To use a custom library/data location (Path after the -d parameter):
-
- ```cmd
- <--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data
- ```
-
- - To use a custom library/data location (Path after the -d parameter) and disable the auto-start of the webapp:
-
- ```cmd
- <--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data -noautorunwebapp
- ```
-
-5. Run
-
- ```cmd
- jellyfin.bat
- ```
-
-6. Open your browser at `http://<--Server-IP-->:8096`.
-
-**Update**
-
-1. Stop Jellyfin
-2. Rename the Jellyfin `system` folder to `system-bak`
-3. Download and extract the latest Jellyfin version
-4. Copy the extracted folder into the `jellyfin` folder and rename it to `system`
-5. Run `jellyfin.bat` to start the server again
-
-**Rollback**
-
-1. Stop Jellyfin.
-2. Delete the `system` folder.
-3. Rename `system-bak` to `system`.
-4. Run `jellyfin.bat` to start the server again.
diff --git a/docs/index.md b/docs/index.md
index 9c5e94c8..c2455f68 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -28,18 +28,16 @@ Note: Jellyfin is a fast-moving project that is in its early stages, and this do
Want to get starting using Jellyfin right now? Check out the pages below for how to [install Jellyfin](/docs/general/installation) on your machine.
-- [Arch](/docs/general/installation/linux#arch-linux)
-- [Debian](/docs/general/installation/linux#debian)
-- [Ubuntu](/docs/general/installation/linux#ubuntu)
-- [Fedora](/docs/general/installation/linux#fedora)
-- [CentOS](/docs/general/installation/linux#centos)
-- [Docker](/docs/general/installation/container#docker)
-- [Kubernetes](/docs/general/installation/container#kubernetes)
- [Windows](/docs/general/installation/windows)
-- [MacOS](/docs/general/installation/macos)
-- [Generic Linux](/docs/general/installation/linux#linux-generic-amd64)
+- [macOS](/docs/general/installation/macos)
+- [Debian / Ubuntu](/docs/general/installation/linux#debian--ubuntu-and-derivatives)
+- [Other Linux Distributions](/docs/general/installation/linux#other-distributions)
+- [Docker / Kubernetes / Podman](/docs/general/installation/container)
+- [Synology](/docs/general/installation/advanced/synology)
+- [TrueNAS SCALE](/docs/general/installation/advanced/truenas)
+- [Generic Linux](/docs/general/installation/advanced/manual#portable-linux-install)
-Alternatively, Jellyfin may be built directly from the [source code](/docs/general/installation/source).
+Alternatively, Jellyfin may be built directly from the [source code](/docs/general/installation/advanced/source).
## Administrator Documentation
diff --git a/redirects.ts b/redirects.ts
index 89e1566e..d18f201f 100644
--- a/redirects.ts
+++ b/redirects.ts
@@ -31,12 +31,17 @@ const redirects: ClientRedirects.Options['redirects'] = [
to: '/docs/general/installation/'
},
{
- from: '/docs/general/administration/install/synology',
- to: '/docs/general/installation/synology'
+ from: [
+ '/docs/general/administration/install/synology',
+ // synology moved
+ '/docs/general/installation/synology'
+ ],
+ to: '/docs/general/installation/advanced/synology'
},
+ // installing from source moved
{
- from: '/docs/general/administration/building',
- to: '/docs/general/installation/source'
+ from: ['/docs/general/installation/source', '/docs/general/administration/building'],
+ to: '/docs/general/installation/advanced/source'
},
// "traefik2" moved
{