Building - shyonae/selfhosted-anime GitHub Wiki

Folder structure

Create the folders with these commands, in this case the structure will be created under the home folder of the current user:

mkdir -p ~/storage/downloads/torrents/movies-anime
mkdir -p ~/storage/downloads/torrents/tv-anime
mkdir -p ~/storage/downloads/torrents/temp
mkdir -p ~/storage/drop/movies-anime
mkdir -p ~/storage/drop/tv-anime
mkdir -p ~/storage/medialibrary/movies-anime
mkdir -p ~/storage/medialibrary/tv-anime

The folder structure is restricted and varies a bit from the one used in TRaSH Guides, but it uses the same logic.

Make sure to set the correct permissions.

sudo chown -R $USER:$USER ~/storage
sudo chmod -R a=,a+rX,u+w,g+w ~/storage

The volume and network configurations are made with the idea of easily switch from running the containers one by one to running them with one of the main composes seamlessly.

  • I suggest you only create volumes / networks based on your setup, meaning if you want to use Plex / Jellyfin or qBittorrentVPN / normal qBit.

Volumes structure

You can totally use bind mounts, I'm using volumes for the sake of simplicity.

  • If you're using the compose from version 1.0.0 and its volumes, you can modify the external: false property to true, although I suggest you follow the official docs to back them up and restore them to these new ones.
docker volume create plex-volume
docker volume create jellyfin-volume
docker volume create autobrr-volume
docker volume create qbittorrentvpn-volume
docker volume create qbittorrent-volume
docker volume create shoko-volume

Network structure

I love networking (I don't), so I tried making the setup easy.

Let's create these networks:

docker network create -d bridge downloadNetwork
docker network create -d bridge jellyNetwork
docker network create -d bridge plexNetwork

If you don't want to use external networks, you need to use one of the main composes to make sure the containers communicate, you also have to change some configs:

Delete this line in your composes under your networks tab:
  - external: true
  + name: ****Network

# EXAMPLE: files/compose-jellyfin-novpn.yml

...
networks:
  downloadNetwork:
    driver: bridge
    external: true            # remove this
    name: downloadNetwork     # add this, not necessary but good for organization
...

Compose section

In the wiki's repo there are some sample files that we'll be using to get the containers up and running, they can be further customized based on your needs or integrated in an already existing setup.

In this guide, I used qBittorrentVPN with Mullvad as a provider, so my configurations are for that specific VPN service. To get more info on how to use yours, check the official docs:

In the compose files, I make use of yaml anchors to avoid repeating code where possible.

To get your containers started, with the main repository cloned, you can run the following commands from the root directory:

# Choose ONE of the provided composes based on your needs, don't forget to configure them.

docker compose -f files/compose-jellyfin-novpn.yml up -d
docker compose -f files/compose-jellyfin-vpn.yml up -d               # needs VPN configuration
docker compose -f files/compose-plex-vpn.yml up -d                   # needs VPN configuration
docker compose -f files/compose-plex-novpn.yml up -d


# If you want to run containers one by one

docker compose -f files/single_composes/autobrr.yml --env-file files/.env up -d
docker compose -f files/single_composes/jellyfin.yml --env-file files/.env up -d
docker compose -f files/single_composes/qbittorrent.yml --env-file files/.env up -d
docker compose -f files/single_composes/plex.yml --env-file files/.env up -d
docker compose -f files/single_composes/shoko-server.yml --env-file files/.env up -d
docker compose -f files/single_composes/vpn-qbittorrent.yml --env-file files/.env up -d  # needs VPN configuration

NOTE: For Shoko Server, the daily version is UNSTABLE for a reason. You need to update the container AND the web UI daily to have the latest features, and even that might not save you from stuff breaking, so use it at your own risk.

DISCLAIMER: I wouldn't AUTO-UPDATE the daily version.

You can use the latest tag to get the latest Stable version, just note that the menus are going to differ from the ones in the following instructions, also you'll miss some functionalities of the daily version.

This will get you started and get your containers up and running, but we have to configure them for the magic to work.

You can move to the Qbittorrent configuration.