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 затем отправляет на телевизор, поэтому смотрите лимит исходящего трафика тарифа.
- 296 кинозалов BCU и 4K новинки
- Матч Премьер 50fps и архив 6 дней
- СБП (+20% бонус), карты РФ, МИР и ЕС
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:
- В поле Основная ссылка укажите
https://ts.example.com(без порта, Caddy работает на 443). - В блоке Авторизация включите Вход по паролю и заполните Логин и Пароль из
accs.db. - Запустите любой торрент и проверьте старт и перемотку.
Не вписывайте адрес в виде 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.