В этой статье показано, как быстро развернуть медиа-стек из 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, легко обновляется и управляется
Скрипт делает установку максимально автоматизированной и безопасной.