Проблема

Вечерами мы с женой (иногда и с детьми) смотрим сериалы и фильмы. Контент я в основном скачиваю из открытых источников (торренты) и есть несколько неудобств:

  • несколько ноутбуков, которые не всегда заряжены

  • необходимость подключать один из них к телевизору (иногда нужен переходник, + на телевизоре нет AirPlay).

  • на рабочем ноуте не хочется качать торренты

  • поставишь фильм на закачку - а кто-то возьмёт и закроет ноут

Как хочется

Включил телек -> выбрал фильм -> смотришь

Решение

После статьи на Хабре про «домашний NAS своими руками» захотелось сделать что-то подобное, но увидев цены на готовые серьёзные решения (да и даже на комплектуем, диски, корпуса и т.д.) - передумал.

Вспомнил, что недавно мой старый OnePlus 5T (2017 года. Боже, как он был хорош. Да я и сейчас бы мог его использовать) перешёл обратно ко мне от ребёнка (“третья жизнь смартфона”). И решил попробовать использовать его как «ультра-мини‑нано-NAS». А если быть точным - медиа‑сервер. Встроенной памяти маловато (всего 64 Гб) но при должной “гигиене” (“посмотрел фильм - удалил”) - должно хватить.

Аппарат кстати по‑прежнему быстрый и приятный в использовании, но уже не получает обновлений.

Чтобы не превращать телефон в «монолитную» Linux‑систему (рассматривал postmarketOS), я выбрал более щадящий путь: установить Termux и запустить в нём Linux‑подобную среду через PRoot. Благодаря этому смартфон остаётся полноценным устройством с двумя SIM‑картами, и при этом можно без риска для Android подъёмать сервисы для раздачи медиаконтента.

Выбор программ

  • Alpine Linux

  • sshd

  • dms (https://github.com/anacrolix/dms) — лёгкий и простой в настройке (3 параметра при запуске демона) DLNA сервер.

  • transmission‑daemon - для торрентов. Имеет встроенную веб-адимнку -> можно стартануть загрузку с любого устройства в сети

Смотрел альтернативы

  • Jellyfin. Нужен .NET и тяжеловат для телефона

  • Gerbera. Показался сложным в конфигурации

  • minidlna. Не завёлся сразу - разбираться не стал

Пошаговая инструкция

  1. На телефон устанавливаем Termux (из F‑Droid).

  2. В Termux ставим proot‑distro и обновляем пакеты:

    pkg update && pkg upgrade
    pkg install proot-distro
    
  3. Устанавливаем Alpine и заходим в него:

    proot-distro install alpine
    proot-distro login alpine
    
  4. Внутри контейнера устанавливаем необходимые пакеты: SSH, transmission‑daemon и dms. Пример команд для Alpine:

    apk update
    apk add openssh transmission-daemon ca-certificates curl curl
    # DMS - качал с GitHub бинарник
    

Хитрости и мелкие настройки

  • SSH: использую порт 2222 для SSH, так как стандартный порт 22 может быть заблокирован или недоступен.

  • На Android можно повысить лимит фоновых процессов, чтобы Termux и контейнер не убивались системой:

    adb shell device_config put activity_manager max_phantom_processes 2147483647
    
  • В настройках Android для приложения Termux отключите энергосбережение и оптимизацию, разрешите ему работать в фоне

  • После перезагрузки телефона нужно снова запускать контейнер и сервисы. Чтобы облегчить этот процесс, можно добавить стартовый скрипт в ~/.ashrc внутри Alpine, который будет проверять и запускать необходимые демоны:

    # --- Server Startup Script ---
    # 1. Start SSH Daemon (if not running)
    if ! pidof "sshd" > /dev/null; thenc
        /usr/sbin/sshd
        echo "🚀 SSH Server started on port 2222"
    fi
    
    # 2. Start Transmission Daemon (if not running)
    if ! pidof "transmission-daemon" > /dev/null; then
        transmission-daemon -g ~/.config/transmission-daemon
        echo "📥 Transmission Daemon started"
    fi
    
    # 3. Start DMS Media Server (background)
    if ! pidof "dms" > /dev/null; then
        /root/dms -path /sdcard/Download -ifname wlan0 -http :8200 -friendlyName "5T-Cinema" > /dev/null 2>&1 &
        echo "📺 DMS Media Server started in background"
    fi
    echo "--- All services are active ---"
    

Итог

  • Решение простое и дешёвое: старый смартфон превращается в компактный DLNA‑сервер, доступный для телевизора в локальной сети.

  • Termux и PRoot даёт гибкость без полной замены Android

  • Лёгкие компоненты Alpine, dms и transmission‑daemon укладываются в ресурсы старого устройства.

Лежит не жужжит (в прямом смысле). Фильмы скачивает, раздаёт и показывает.
Лежит не жужжит (в прямом смысле). Фильмы скачивает, раздаёт и показывает.