Перейти к содержимому

TorrServer на VPS: Docker, пароль и HTTPS для Lampa

Как запустить TorrServer на VPS в Docker, включить авторизацию через accs.db, закрыть порт 8090 и дать Lampa доступ по HTTPS через Caddy.

Обновлено: (Опубликовано: )

💡︎ Главные мысли статьи:

  • Официальный образ — ghcr.io/yourok/torrserver, веб-порт 8090, данные хранятся в /opt/ts.
  • Авторизация включается переменной TS_HTTPAUTH=1, логины и пароли лежат в config/accs.db в формате JSON.
  • Порт 8090 публикуйте только на 127.0.0.1, а наружу отдавайте HTTPS через обратный прокси (например, Caddy).
  • Весь скачанный объём VPS затем отправляет на телевизор, поэтому смотрите лимит исходящего трафика тарифа.
Премиум IPTV
0 ₽ • Без оплаты
Шаровоз: 2 300+ каналов и 4K кинозалы
Все включено
3$/ мес(~240 ₽)
Тест 24ч без оплаты→
ИИ-иллюстрация: ИИ-иллюстрация к статье: TorrServer на VPS: Docker, пароль и HTTPS для Lampa

TorrServer на VPS скачивает торрент на арендованном сервере и отдаёт его потоком в Lampa. Телевизор при этом по-прежнему сам декодирует видео и получает весь поток через домашний интернет, так что VPS помогает, когда дома мало раздающих или провайдер режет BitTorrent, но не ускоряет слабый домашний канал.

Ниже рабочая схема: TorrServer в Docker слушает только локальный порт, пароль задан через accs.db, а наружу открыт HTTPS через Caddy.

Что учесть до аренды

  • Трафик. Сервер скачивает файл из сети и затем отправляет тот же объём на телевизор. Фильм в 4K на 60 ГБ — это около 120 ГБ суммарного трафика VPS. Смотрите лимит и цену исходящего трафика.
  • Правила хостинга. Часть провайдеров запрещает BitTorrent в условиях использования. Проверьте это до оплаты.
  • Память. Кэш TorrServer по умолчанию хранится в оперативной памяти, его размер задаётся в настройках сервера. Выбирайте тариф с запасом RAM под этот кэш и систему.
  • Домен. Для HTTPS с нормальным сертификатом нужен домен (или поддомен), A-запись которого указывает на IP VPS.

Docker Engine с плагином Compose ставьте по официальной инструкции Docker для вашего дистрибутива.

Шаг 1. Создайте пароль

TorrServer берёт учётные записи из файла accs.db в формате JSON (README проекта, раздел Authentication). Создайте каталог проекта и файл:

mkdir -p ~/torrserver/data/config
cd ~/torrserver
nano data/config/accs.db

Содержимое файла (имя и пароль замените своими):

{"tvuser": "Long-Random-Password-42"}

Можно завести несколько пар через запятую, например отдельную для каждого телевизора.

Шаг 2. Запустите контейнер

Файл compose.yaml в каталоге ~/torrserver:

services:
  torrserver:
    image: ghcr.io/yourok/torrserver:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8090:8090"
    environment:
      TS_HTTPAUTH: "1"
      TS_CONF_PATH: /opt/ts/config
    volumes:
      - ./data:/opt/ts

Что здесь важно:

  • 127.0.0.1:8090:8090 публикует порт только на loopback сервера. Без IP-адреса в начале Docker откроет 8090 на всех интерфейсах, причём в обход правил UFW (документация Docker о публикации портов).
  • TS_HTTPAUTH: "1" добавляет к запуску флаг --httpauth, и сервер требует логин и пароль на всех запросах.
  • Том ./data:/opt/ts сохраняет настройки и accs.db при обновлении образа.

Запуск и проверка:

docker compose up -d
docker compose ps
docker compose logs --tail=50

Встроенный DLNA при такой схеме не работает: для него в README предлагается network_mode: host, а DLNA через интернет всё равно не нужен.

Шаг 3. Проверьте пароль через SSH-туннель

С домашнего компьютера пробросьте порт:

ssh -N -L 18090:127.0.0.1:8090 user@ip-вашего-vps

Откройте http://127.0.0.1:18090 в браузере. Должно появиться окно ввода логина и пароля; с неверным паролем панель не откроется. Остановить туннель можно Ctrl+C.

Шаг 4. Откройте HTTPS через Caddy

Caddy сам получает и продлевает сертификат Let’s Encrypt. Установите его на хост VPS по инструкции Caddy и впишите в /etc/caddy/Caddyfile:

ts.example.com {
    reverse_proxy 127.0.0.1:8090
}

Перезагрузите сервис: sudo systemctl reload caddy. Порты 80 и 443 должны быть открыты в файрволе, а домен указывать на VPS (требования Caddy).

Адрес 127.0.0.1:8090 работает, потому что Caddy установлен на сам хост. Если запускать Caddy отдельным контейнером, внутри него 127.0.0.1 указывает на сам контейнер: тогда поместите оба сервиса в одну сеть Compose и пишите reverse_proxy torrserver:8090.

Альтернатива без прокси — встроенный HTTPS TorrServer: переменные TS_SSL_ENABLE, TS_SSL_PORT (по умолчанию 8091), TS_SSL_CERT_PATH и TS_SSL_KEY_PATH. Сертификат и его продление тогда придётся обеспечивать самостоятельно; без своих файлов сервер создаёт самоподписанный, которому телевизор обычно не доверяет.

Шаг 5. Подключите Lampa

В Lampa откройте Настройки → TorrServer:

  1. В поле Основная ссылка укажите https://ts.example.com (без порта, Caddy работает на 443).
  2. В блоке Авторизация включите Вход по паролю и заполните Логин и Пароль из accs.db.
  3. Запустите любой торрент и проверьте старт и перемотку.

Не вписывайте адрес в виде http://логин:пароль@IP — так пароль уходит открытым текстом и оседает в истории.

Обновление и остановка

docker compose pull
docker compose up -d

docker compose down удаляет контейнер, но каталог data с настройками и паролями остаётся на диске. Тег latest меняется с каждым релизом; если нужна предсказуемость, укажите конкретную версию из списка релизов.

Для домашней схемы без VPS см. TorrServer на ПК и роутере. Настройка клиента разобрана в статье Lampa и TorrServe, а параметры кэша — в руководстве по буферу для 4K.

❓︎ Часто задаваемые вопросы (FAQ)

Какой порт использует TorrServer?

Веб-интерфейс и API работают на порту 8090 (флаг --port, переменная TS_PORT). Встроенный HTTPS по умолчанию использует порт 8091 и включается флагом --ssl.

Где хранится пароль TorrServer в Docker?

В файле accs.db в каталоге config смонтированного тома, то есть /opt/ts/config/accs.db внутри контейнера. Формат — JSON-объект вида имя пользователя: пароль.

Как указать логин и пароль в Lampa?

В Настройки → TorrServer укажите адрес в поле «Основная ссылка», затем в блоке «Авторизация» включите «Вход по паролю» и введите логин и пароль из accs.db.