Как превратить старый телефон в домашний сервер: музыка, файлы и торренты
Настройка Termux, Navidrome и Tailscale.
После покупки нового телефона мой старый Redmi 13C долгое время валялся без дела. Однажды, видимо под воздействием последних веяний моды, мне захотелось купить отдельный MP3-плеер с разъёмом 3,5 мм и Bluetooth. Но, увидев цены на плееры, я передумал. Тут-то я и вспомнил про Redmi, который пылился без дела.
Сначала хотел превратить его в полностью офлайн-MP3-плеер с эмуляторами старых консолей, но, видимо, забыл, насколько он массивный. Тогда в голову пришла другая идея: получить root-доступ и превратить телефон в полигон для экспериментов.
Тут меня ожидала первая загвоздка. Оказывается, с недавних пор разблокировка загрузчика на телефонах Xiaomi превратилась в прохождение всех кругов ада. Решил обойтись без root и сделать из телефона личный музыкальный и файловый сервер.
В итоге старый смартфон получил вторую жизнь. На нём теперь работают SSH-сервер, Navidrome и qBittorrent, а для удалённого доступа используется Tailscale. Всё это — без root-доступа, покупки дополнительного оборудования и аренды VPS.
В этой статье расскажу, как я всё настроил.
1. Подготовка телефона
Первым делом я сбросил телефон до заводских настроек и устроил тотальный debloat через ADB, удалив ненужные предустановленные приложения.
Затем в настройках роутера закрепил за Redmi постоянный внутренний IP-адрес. Это избавляет от необходимости каждый раз искать новый адрес телефона в домашней сети.
После этого установил Termux — приложение, предоставляющее Linux-подобное окружение на Android.
Обновляем пакеты:
pkg update && pkg upgrade
Предоставляем Termux доступ к общей памяти Android:
termux-setup-storage
Создаём пароль для будущего SSH-подключения:
passwd
Узнаём имя пользователя Termux:
whoami
Имя пользователя понадобится при подключении к серверу с компьютера.
2. Файловый сервер через SSH
Для доступа к файлам телефона по сети я решил использовать SSH. Это позволяет подключаться к файловой системе с компьютера и монтировать её как сетевой диск.
Устанавливаем OpenSSH:
pkg install openssh
Запускаем SSH-сервер:
sshd
По умолчанию SSH-сервер в Termux использует порт 8022.
2.1. Подключение к Windows
На компьютере с Windows устанавливаем:
После установки открываем проводник Windows и выбираем «Подключить сетевой диск».
Указываем букву диска, например X:, а в поле папки вводим путь следующего формата:
\\sshfs\ИМЯ_ПОЛЬЗОВАТЕЛЯ@192.168.0.8!8022\storage\emulated\0
Здесь:
ИМЯ_ПОЛЬЗОВАТЕЛЯ— имя пользователя Termux, полученное черезwhoami;192.168.0.8— пример внутреннего IP-адреса Redmi;8022— порт SSH;storage\emulated\0— путь к внутренней памяти Android.
Чтобы подключить карту памяти, указываем путь к соответствующему каталогу, например:
\\sshfs\ИМЯ_ПОЛЬЗОВАТЕЛЯ@192.168.0.8!8022\storage\5511-263E
5511-263E — идентификатор карты памяти в моём случае. У тебя он может отличаться.
После подключения память телефона и microSD становятся доступны в проводнике Windows как сетевые диски.
На Linux можно использовать SFTP или SSHFS. Например, для SSHFS:
mkdir -p ~/Redmi
sshfs -p 8022 ИМЯ_ПОЛЬЗОВАТЕЛЯ@192.168.0.8:/storage/emulated/0 ~/Redmi
Перед использованием необходимо установить SSHFS и убедиться, что у пользователя Termux есть доступ к нужным каталогам.
3. Автозагрузка SSH-сервера
Чтобы после каждой перезагрузки телефона не запускать SSH вручную, я установил Termux:Boot. После установки приложение нужно хотя бы один раз открыть вручную.
Создаём каталог для скриптов автозагрузки:
mkdir -p ~/.termux/boot
Создаём файл:
nano ~/.termux/boot/start-sshd
Добавляем следующий скрипт:
#!/data/data/com.termux/files/usr/bin/bash
termux-wake-lock
# Start SSH
if ! pgrep -x sshd >/dev/null 2>&1; then
sshd
fi
Сохраняем файл и делаем его исполняемым:
chmod +x ~/.termux/boot/start-sshd
termux-wake-lock предотвращает обычное засыпание процессора, пока Android позволяет приложению работать. Это не абсолютная гарантия круглосуточной работы: также необходимо учитывать ограничения энергосбережения Android.
4. Музыкальный сервер на Navidrome
Файлового сервера мне оказалось недостаточно. Хотелось получить интерфейс, похожий на Spotify: упорядоченную музыкальную библиотеку, обложки, поиск и возможность слушать музыку вне домашней сети.
Для этого выбрал Navidrome — лёгкий музыкальный сервер с веб-интерфейсом и поддержкой Subsonic API.
Ставим Navidrome и ffmpeg в Termux:
pkg install navidrome ffmpeg
4.1. Организуем музыкальную библиотеку
Музыка хранится в двух местах: во внутренней памяти и на microSD. Чтобы Navidrome воспринимал её как единую библиотеку, создаём общий каталог:
mkdir -p ~/MusicLibrary
Добавляем символические ссылки на существующие музыкальные папки:
ln -s /storage/emulated/0/Music \
~/MusicLibrary/Internal
ln -s /storage/5511-263E/Music \
~/MusicLibrary/SDCard
Файлы при этом никуда не копируются: ссылки просто указывают на существующие каталоги.
4.2. Настраиваем Navidrome
Создаём конфигурационный файл:
nano ~/navidrome.toml
Добавляем:
MusicFolder = "/data/data/com.termux/files/home/MusicLibrary"
DataFolder = "/data/data/com.termux/files/home/navidrome-data"
Address = "0.0.0.0"
Port = "4533"
Scanner.FollowSymlinks = true
Что означают параметры:
MusicFolder— корневой каталог музыкальной библиотеки.DataFolder— каталог для базы данных и других данных Navidrome.Address = "0.0.0.0"— сервер принимает подключения на доступных сетевых интерфейсах.Port = "4533"— порт веб-интерфейса и API.Scanner.FollowSymlinks = true— позволяет сканеру переходить по символическим ссылкам.
Последний параметр особенно важен, поскольку музыка находится в нескольких каталогах.
4.3. Запускаем сервер
Выполняем:
navidrome --configfile "$HOME/navidrome.toml"
После запуска веб-интерфейс доступен в домашней сети по адресу:
http://192.168.0.8:4533
Вместо 192.168.0.8 необходимо указать свой IP-адрес.
При первом открытии создаём учётную запись администратора.
4.4. Слушаем музыку
На компьютере можно открыть веб-интерфейс Navidrome и слушать музыку прямо в браузере.
На смартфоне я использую Symfonium. Из бесплатных и открытых альтернатив можно попробовать Navic.
В приложении выбираем совместимый сервер Subsonic, указываем адрес Navidrome, порт, имя пользователя и пароль.
Получаем собственную музыкальную библиотеку с поиском, альбомами, исполнителями и плейлистами. При этом музыка остаётся на телефоне, а не загружается в стороннее облако.
4.5. Что с автоматическим сканированием?
Navidrome умеет обнаруживать изменения в музыкальной библиотеке, однако поведение сканера зависит от конфигурации и способа изменения файлов.
В частности, изменения на SD-карте через символические ссылки могут не обнаруживаться мгновенно. Поэтому, если новые треки не появились в библиотеке, стоит проверить настройки сканирования и при необходимости запустить его вручную.
Установленная версия Navidrome поддерживает команду:
navidrome scan --help
Для полного сканирования всех подпапок с использованием существующей конфигурации:
navidrome scan --configfile "$HOME/navidrome.toml" --full
Параметр --full заставляет сканер проверить все подпапки, игнорируя временные метки файлов.
5. Удалённый доступ через Tailscale
Музыкальный сервер работает дома, но хотелось слушать музыку и за пределами домашней сети.
Можно было бы настроить проброс портов на роутере, однако это потребовало бы дополнительной настройки и сделало бы сервис доступным через публичный адрес.
Вместо этого я выбрал Tailscale.
Tailscale создаёт приватную сеть между устройствами. Каждое устройство получает собственный адрес из диапазона 100.x.x.x и может обращаться к другим устройствам этой сети.
5.1. Настраиваем Tailscale
Устанавливаем Tailscale на Redmi 13C и основной смартфон. Затем авторизуем оба устройства в одной сети Tailscale и подтверждаем создание VPN-подключения.
После этого устройства появляются в панели управления Tailscale.
5.2. Подключаемся к Navidrome
Теперь доступны два способа подключения.
Дома, через Wi-Fi:
http://192.168.0.8:4533
Вне дома, через Tailscale:
http://100.x.x.x:4533
Вместо 100.x.x.x указываем реальный Tailscale IP Redmi 13C.
Для удалённого доступа Tailscale должен быть активен на клиентском устройстве, а Navidrome — работать на сервере. Сам по себе Tailscale не запускает приложения, которые остановил Android.
При этом не требуется открывать порт 4533 на роутере для всего интернета.
6. Автозапуск Navidrome
Чтобы после перезагрузки телефона не запускать Navidrome вручную, добавляем его в уже существующий скрипт автозагрузки.
Открываем файл:
nano ~/.termux/boot/start-sshd
Добавляем в конец:
# Start Navidrome
if ! pgrep -f 'navidrome.*navidrome.toml' >/dev/null 2>&1; then
nohup "$PREFIX/bin/navidrome" \
--configfile "$HOME/navidrome.toml" \
>> "$HOME/navidrome.log" 2>&1 &
fi
Сохраняем файл и проверяем права:
chmod +x ~/.termux/boot/start-sshd
Теперь скрипт запускает SSH и Navidrome после загрузки Termux:Boot.
7. Добавляем торрент-сервер на qBittorrent
На этом этапе Redmi уже работал как музыкальный и файловый сервер. Но раз уж телефон постоянно подключён к сети, почему бы не использовать его ещё и для загрузок?
Для этого я установил qbittorrent-nox — вариант qBittorrent без графического окна, которым можно управлять через браузер.
7.1. Устанавливаем qBittorrent
В Termux подключаем репозиторий X11:
pkg install x11-repo
pkg update
Устанавливаем qBittorrent:
pkg install qbittorrent-nox
7.2. Запускаем веб-интерфейс
Выполняем:
qbittorrent-nox --webui-port=8080
При первом запуске программа выводит информацию о веб-интерфейсе и временный пароль администратора. Его необходимо сохранить.
После запуска открываем на компьютере браузер:
http://192.168.0.8:8080
Вводим логин admin и временный пароль. После входа задаём постоянный пароль в настройках WebUI.
Теперь можно добавлять magnet-ссылки и .torrent-файлы, следить за прогрессом загрузки, управлять очередью и ограничивать скорость скачивания и раздачи.
Всё это работает с компьютера, а сами загрузки выполняются на Redmi.
7.3. Настраиваем папку загрузок
В моём случае карта памяти доступна по пути:
/storage/5511-263E
Для сохранения файлов используется каталог:
/storage/5511-263E/Download
В настройках qBittorrent, в разделе Downloads, указываем этот путь в качестве папки сохранения.
Для незавершённых загрузок можно создать отдельную папку:
mkdir -p /storage/5511-263E/Download/Torrents/incomplete
Затем указываем её в настройках qBittorrent.
Важно убедиться, что Termux имеет разрешение на работу с общей памятью Android и что выбранный каталог доступен для записи.
7.4. Запускаем qBittorrent в фоне
Чтобы qBittorrent не зависел от открытой SSH-сессии, запускаем его в фоне:
nohup qbittorrent-nox --webui-port=8080 \
> "$HOME/qbittorrent.log" 2>&1 < /dev/null &
Проверяем, что процесс работает:
pgrep -af qbittorrent
А посмотреть журнал можно командой:
tail -n 30 ~/qbittorrent.log
После этого SSH-сессию можно закрыть, а управлять загрузками — продолжать через веб-интерфейс.
7.5. Добавляем qBittorrent в автозагрузку
У меня уже был скрипт ~/.termux/boot/start-sshd, который запускает SSH и Navidrome. Поэтому я добавил в него ещё один блок:
# Start qBittorrent
if ! pgrep -f 'qbittorrent-nox.*--webui-port=8080' >/dev/null 2>&1; then
nohup "$PREFIX/bin/qbittorrent-nox" --webui-port=8080 \
>> "$HOME/qbittorrent.log" 2>&1 < /dev/null &
fi
Теперь один скрипт запускает все три сервиса:
- SSH — доступ к файлам и командной строке;
- Navidrome — музыкальная библиотека;
- qBittorrent — торрент-загрузки.
Перед перезагрузкой полезно проверить синтаксис скрипта:
bash -n ~/.termux/boot/start-sshd
Если команда ничего не вывела, синтаксических ошибок не обнаружено.
Для корректного запуска после перезагрузки приложение Termux:Boot должно быть установлено и хотя бы один раз открыто вручную.
Важно: веб-интерфейс qBittorrent предоставляет доступ к управлению загрузками, поэтому не следует открывать порт 8080 напрямую в интернет. Для удалённого управления лучше использовать Tailscale и надёжный пароль.
8. Что получилось в итоге
В результате старый Redmi 13C превратился в небольшой домашний сервер.
Теперь у меня есть:
- Файловый сервер: внутренняя память и microSD доступны по SSH/SFTP как сетевые диски.
- Музыкальный сервер: Navidrome объединяет музыку из двух источников в единую библиотеку.
- Музыкальный клиент: Navic и Symfonium позволяют слушать собственную музыку с основного смартфона.
- Торрент-сервер: qBittorrent-nox скачивает файлы на карту памяти и управляется через браузер.
- Удалённый доступ: Tailscale позволяет обращаться к сервисам вне домашней сети без проброса портов на роутере.
- Автозапуск: Termux:Boot запускает SSH, Navidrome и qBittorrent после загрузки Android.
Всё это работает на уже имеющемся смартфоне — без root-доступа, аренды отдельного сервера и дополнительных затрат на оборудование.
Конечно, Redmi 13C не заменит полноценный NAS или Linux-сервер. Android накладывает ограничения на фоновые процессы, доступ к накопителям и автоматический запуск приложений. Но для личных задач мощности телефона вполне достаточно.
В итоге телефон, который мог годами лежать без дела, стал полезной частью домашней инфраструктуры.