

Telegram Media Server — это Telegram-бот, который принимает ссылки на стриминговое видео или торрент-файлы, загружает их и раздает во внутренней сети через DLNA-сервер (например, minidlna).
Telegram Media Server is a Telegram bot that accepts links to streaming videos or torrent files, downloads them, and distributes them on the internal network via a DLNA server (e.g., minidlna).
Особенности / Features
- Прием ссылок / Receiving links: Поддерживает все видео-ссылки, совместимые с утилитой
yt-dlp. Supports all video links compatible with the yt-dlp utility.
- Загрузка контента / Content Download: Загружает видео и торрент-файлы с отслеживанием прогресса. Downloads videos and torrent files while tracking progress.
- Раздача во внутренней сети / Distribution in internal network: Раздает контент через DLNA-сервер. Distributes content via a DLNA server.
- Управление загрузками / Download Management: Позволяет просматривать и управлять загрузками через команды бота. Allows viewing and managing downloads via bot commands.
- Авторизация пользователей / User Authorization: Доступ защищен паролями. Access is password-protected.
Зависимости / Dependencies
Для установки с помощью sudo make install необходимы следующие зависимости:
To build and install Telegram Media Server using sudo make install, the following dependencies are required:
- Go: Необходим для сборки бота. Required for building the bot.
- yt-dlp: Необходим для загрузки потокового видео. Required for downloading streaming videos.
- aria2: Необходим для загрузки торрент-файлов. Required for downloading torrent files.
- minidlna (опционально / optional): Необходим для раздачи через DLNA. Required for DLNA distribution.
- prowlarr (опционально / optional): Необходим для поиска торрентов. Required for searching torrents.
Примечание: Если вы не планируете использовать DLNA, minidlna не требуется.
Note: If you don't plan to use DLNA, minidlna is not required.
Установите зависимости с помощью пакетного менеджера вашей системы перед началом.
Install these dependencies using your system's package manager before proceeding.
Установка / Installation
Предпочтительный способ установки, который добавляет бота как системный сервис.
The preferred method, installing the bot as a system service.
-
Клонируйте репозиторий / Clone the repository:
git clone https://github.com/NikitaDmitryuk/telegram-media-server.git
cd telegram-media-server
-
Соберите и установите бота / Build and install the bot:
sudo make install
-
Настройте бота / Configure the bot:
См. раздел Конфигурация / Configuration.
See the Configuration section.
Установка и настройка minidlna / Installing and configuring minidlna
Если вы хотите использовать DLNA, выполните следующие шаги:
If you plan to use DLNA, follow these steps:
-
Установите minidlna / Install minidlna:
sudo apt install minidlna
-
Настройте minidlna / Configure minidlna:
Отредактируйте файл /etc/minidlna.conf:
Edit the configuration file /etc/minidlna.conf:
media_dir=V,/path/to/dir
friendly_name=My DLNA Server
Укажите в /path/to/dir тот же путь, что и в параметре MOVIE_PATH файла .env.
Replace /path/to/dir with the path specified in the MOVIE_PATH parameter of the .env file.
-
Запустите minidlna / Start minidlna:
sudo systemctl enable minidlna
sudo systemctl start minidlna
Обновление yt-dlp / Keeping yt-dlp up to date
Приложение само обновляет yt-dlp при старте и затем по расписанию (по умолчанию раз в 3 часа). Отключить или изменить интервал можно в .env — см. .env.example.
The application updates yt-dlp on start and then on a schedule (default: every 3 hours). To disable or change the interval, use .env — see .env.example.
Рекомендуется ставить yt-dlp с релизов или через pip install yt-dlp — версии из репозитория ОС часто не поддерживают самообновление.
Prefer installing yt-dlp from releases or via pip install yt-dlp; OS package versions often do not support self-update.
Конфигурация / Configuration
Файл конфигурации — .env:
The configuration file is .env:
- При использовании
sudo make install: находится в /etc/telegram-media-server/.env.
- When using
sudo make install: located at /etc/telegram-media-server/.env.
- При использовании Docker Compose: находится в корне проекта.
- When using Docker Compose: located in the project root.
Настройка параметров / Parameter Configuration:
Все доступные параметры конфигурации подробно описаны в файле .env.example.
All available configuration parameters are thoroughly documented in the .env.example file.
Создайте файл .env на основе .env.example и настройте необходимые параметры.
Create a .env file based on .env.example and configure the required parameters.
Docker и торренты / Docker and torrents: если в контейнере торренты «стоят» без пиров, попробуйте network_mode: host в docker-compose.yml для сервиса telegram-media-server (aria2 сможет принимать входящие соединения). Убедитесь, что на хосте открыты порты 6881–6999 (TCP и UDP).
If torrents in the container get no peers, try network_mode: host for the telegram-media-server service in docker-compose.yml so aria2 can accept incoming connections. Ensure ports 6881–6999 (TCP and UDP) are open on the host.
Порядок файлов в торренте / Torrent file order: по умолчанию файлы в многофайловом торренте скачиваются в лексикографическом порядке по пути (первый по имени — первым готов). Это может замедлить общую скорость загрузки; для максимальной скорости задайте в .env ARIA2_SEQUENTIAL_MULTI_FILE=false (одна сессия aria2 на все файлы).
By default, files in a multi-file torrent are downloaded in lexicographic (alphabetical) order by path so the first file by name is ready sooner. This may slow down total download speed; to maximize throughput set ARIA2_SEQUENTIAL_MULTI_FILE=false in .env (single aria2 run for all files).
Режим совместимости с ТВ / TV compatibility mode: если видео не воспроизводится на телевизоре (любой модели), в .env задайте VIDEO_COMPATIBILITY_MODE=true. Файлы при необходимости проходят лёгкую переконвертацию (remux). Опции: VIDEO_TV_H264_LEVEL=4.0 или 4.1, VIDEO_REJECT_INCOMPATIBLE=true — не загружать и сразу уведомлять, если видео не подойдёт под ТВ.
If video does not play on your TV, set VIDEO_COMPATIBILITY_MODE=true in .env. Files may be remuxed for compatibility. The “First episode ready” Options: VIDEO_TV_H264_LEVEL=4.0 or 4.1, VIDEO_REJECT_INCOMPATIBLE=true — cancel download and notify when the file would not play on your TV.
Использование / Usage
Авторизация / Authorization
Для начала работы авторизуйтесь:
To start using the bot, log in:
/login <password>
- Используйте
ADMIN_PASSWORD для входа как администратор. Use ADMIN_PASSWORD to log in as an admin.
- Используйте
REGULAR_PASSWORD для входа как обычный пользователь. Use REGULAR_PASSWORD to log in as a regular user.
Ролевая система / Role System
| Роль / Role |
Авторизация / Authorization |
Доступ / Access |
| Администратор / Admin |
Через ADMIN_PASSWORD. Authorized with ADMIN_PASSWORD. |
Полный доступ, включая команду /temp. Full access, including the /temp command. |
| Обычный пользователь / Regular User |
Через REGULAR_PASSWORD. Authorized with REGULAR_PASSWORD. |
Доступ ко всем функциям, кроме /temp. Access to all features except /temp. |
| Временный пользователь / Temporary User |
Через временный пароль от /temp. Authorized with a temporary password from /temp. |
Только добавление ссылок для загрузки. Can only add links for download. |
Доступные команды / Available commands
| Команда / Command |
Описание / Description |
/start |
Приветственное сообщение. Welcome message. |
/login <password> |
Авторизация. User authorization. |
/ls |
Список текущих загрузок. List of current downloads. |
/rm <id> |
Удаление загрузки по ID из /ls. Delete a download by ID from /ls. |
/rm all |
Удаление всех загрузок. Delete all downloads. |
/temp <1d | 3h | 30m> |
Генерация временного пароля (только для админа). Generate a temporary password (admin only). |
Управление загрузками / Managing downloads
После авторизации отправляйте ссылки на видео или торренты. Бот поддерживает все ссылки, обрабатываемые yt-dlp.
After authorization, send video or torrent links. The bot supports all links processed by yt-dlp.
Примеры управления:
Examples of management:
/ls — показывает статус загрузок. Shows download status.
/rm 1 — удаляет загрузку с ID 1. Deletes download with ID 1.
Скриншоты:
Screenshots:
Примеры поддерживаемых ссылок / Examples of supported links
Бот поддерживает все сервисы, совместимые с yt-dlp, включая:
The bot supports all services compatible with yt-dlp, including:
- YouTube
- VK
- RuTube
- И многие другие / And many others
Полный список см. в документации yt-dlp.
See the full list in the yt-dlp documentation.
Интеграция с Prowlarr / Prowlarr Integration
Prowlarr — это менеджер торрент-индексаторов, который позволяет искать торрент-файлы по множеству источников. Telegram Media Server поддерживает интеграцию с Prowlarr для поиска и скачивания торрентов прямо из Telegram.
Prowlarr is a torrent indexer manager that allows searching torrent files from multiple sources. Telegram Media Server supports integration with Prowlarr for searching and downloading torrents directly from Telegram.
Как включить интеграцию / How to enable integration
-
Установите и настройте Prowlarr.
- Откройте веб-интерфейс Prowlarr: http://localhost:9696
- Добавьте нужные торрент-трекеры через меню Indexers.
-
Install and configure Prowlarr.
- Open the Prowlarr web interface: http://localhost:9696
- Add desired torrent trackers via the Indexers menu.
-
Получите API-ключ Prowlarr.
- В интерфейсе Prowlarr перейдите в Settings → General → Security и скопируйте API Key.
-
Get the Prowlarr API key.
- In the Prowlarr interface, go to Settings → General → Security and copy the API Key.
-
Добавьте переменные в .env:
PROWLARR_URL=http://localhost:9696
PROWLARR_API_KEY=ваш_ключ_от_prowlarr
Если переменные не заданы, интеграция будет отключена.
-
Add variables to .env:
PROWLARR_URL=http://localhost:9696
PROWLARR_API_KEY=your_prowlarr_api_key
If variables are not set, integration will be disabled.
Pre-commit hooks
Установка pre-commit hooks для автоматических проверок:
make pre-commit-install
Install pre-commit hooks for automatic checks:
make pre-commit-install