Быстрый запуск торрент-клиента qBittorrent и медиасервера Jellyfin на Ubuntu 24.04 через Docker на VPS

В этой статье показано, как быстро развернуть медиа-стек из qBittorrent и Jellyfin на Ubuntu 24.04 с помощью Docker. Всё делается под пользователем gratz, временный пароль qBittorrent выводится в консоль после установки, а права Docker применяются автоматически.

1. Обновление пакетов системы

sudo apt update
sudo apt upgrade -y

2. Создание пользователя

Создаём пользователя gratz и даём ему права sudo без запроса пароля:

sudo adduser gratz
sudo usermod -aG sudo gratz
sudo visudo

В открывшемся файле добавляем:

gratz ALL=(ALL) NOPASSWD:ALL

3. Файл переменных окружения .env

Создаём файл .env в директории проекта:

# Путь к каталогу для медиа и загрузок
MEDIA_DIR=/home/gratz/media

# Порты для сервисов
QBITTORRENT_PORT=8080
JELLYFIN_PORT=8096

4. Docker Compose

Файл docker-compose.yml:

version: "3.8"

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Helsinki
      - WEBUI_PORT=${QBITTORRENT_PORT}
    volumes:
      - ${MEDIA_DIR}/downloads:/downloads
      - ./config/qbittorrent:/config
    ports:
      - "${QBITTORRENT_PORT}:${QBITTORRENT_PORT}"
    restart: unless-stopped

  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Helsinki
    volumes:
      - ${MEDIA_DIR}/downloads:/media
      - ./config/jellyfin:/config
    ports:
      - "${JELLYFIN_PORT}:8096"
    restart: unless-stopped

5. Скрипт установки setup.sh

#!/bin/bash
set -e

# === Определяем каталог скрипта и переходим в него ===
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$DIR"

echo "=== Установка media-stack ==="

# === Установка Docker ===
if ! command -v docker > /dev/null; then
  echo "Docker не найден. Устанавливаю из официального репозитория..."
  sudo apt remove -y docker docker-engine docker.io containerd runc || true
  sudo apt update
  sudo apt install -y ca-certificates curl gnupg lsb-release
  sudo install -m 0755 -d /etc/apt/keyrings
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  sudo apt update
  sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  sudo systemctl enable --now docker
else
  echo "Docker найден."
fi

# === Добавление пользователя в группу docker ===
if groups $USER | grep -q '\bdocker\b'; then
  echo "Пользователь $USER уже в группе docker."
else
  echo "Добавляю $USER в группу docker..."
  sudo usermod -aG docker $USER
  echo "Перезапускаем скрипт с применением группы docker..."
  exec sg docker "$0"
  exit
fi

# === Проверка переменных окружения ===
: "${MEDIA_DIR:=$DIR/media}"       # Если MEDIA_DIR не задан, создаём папку media внутри скрипта
: "${JELLYFIN_PORT:=8096}"         # Порт по умолчанию
: "${QBITTORRENT_PORT:=8080}"      # Порт по умолчанию

# === Создание директорий ===
mkdir -p ./config/qbittorrent ./config/jellyfin "${MEDIA_DIR}/downloads"

# === Запуск контейнеров ===
echo "=== Запуск docker compose ==="
docker compose up -d

# === Ждём запуск qBittorrent ===
echo "⏳ Ждём 5 секунд, пока qBittorrent запустится..."
sleep 5

# === Вывод информации ===
echo "✅ Готово!"
echo "- Jellyfin: http://localhost:${JELLYFIN_PORT}"
echo "- qBittorrent: http://localhost:${QBITTORRENT_PORT}"
echo ""
echo "Временный пароль qBittorrent:"
docker logs qbittorrent 2>&1 | grep 'temporary password' || echo "Лог qBittorrent ещё не готов, попробуйте команду позже."
echo ""
echo "После входа смените пароль в настройках qBittorrent."

6. Запуск установки

chmod +x setup.sh
./setup.sh

7. Скрипт автоматически

  • Устанавливает Docker, если его нет.
  • Добавляет пользователя в группу docker.
  • Создаёт необходимые каталоги для конфигураций и загрузок.
  • Поднимает контейнеры qBittorrent и Jellyfin через Docker Compose.
  • Выводит в консоль временный пароль qBittorrent.

8. Вход в сервисы

  • Jellyfin: http://<IP_сервера>:8096
  • qBittorrent WebUI: http://<IP_сервера>:8080 (используйте временный пароль из консоли)

После первого входа рекомендуется сменить пароль qBittorrent через настройки.

9. Советы по правам и папкам

Если появляются ошибки с доступом к папкам:

sudo chown -R gratz:gratz /home/gratz/media/downloads

Чтобы снова узнать временный пароль qBittorrent:

docker logs qbittorrent 2>&1 | grep 'temporary password'

10. Итог

Теперь вы имеете полностью рабочий медиа-стек на Ubuntu 24.04:

  • qBittorrent для скачивания торрентов
  • Jellyfin для просмотра медиа
  • Всё работает через Docker, легко обновляется и управляется

Скрипт делает установку максимально автоматизированной и безопасной.