OpenMediaVault, бот в Telegram и проблема с провайдером, которую пришлось решать через собственный десктоп.
С чего всё началось
У моей дамы сердца iPhone 13 на 256 ГБ. Памяти немного, да и фото и видео копятся быстро: камера, скриншоты, ролики из отпуска в 4K. В «Хранилище» накопилось 100 ГБ снимков, удалять которые не хочется.
Дальше всё предсказуемо. Место на телефоне кончается, iCloud предлагает докупить гигабайты по подписке, новый айфон с большим объёмом стоит дорого. Удалять снимки не вариант.
Зато в шкафу лежал старый ноутбук HP 15: под Windows он уже почти не работал, но был исправен. Из него я решил собрать домашний NAS — сетевое хранилище, куда фото заливаются автоматически и лежат без абонентской платы.
NAS (Network Attached Storage) — это, если по-простому, отдельная коробочка с дисками, подключённая к домашней сети. Все устройства видят её как общую папку: скидывай фото, смотри фильмы, делай бэкапы. Только вместо «коробочки» у меня будет дохлый ноут.
Почему не готовый NAS и не iCloud
Стандартный совет — купить готовый Synology. Если бюджет позволяет, вариант хороший. У меня не позволял, поэтому я сравнил варианты.
Вариант | Цена входа | Что не так |
iCloud+ 200 ГБ | ~149 ₽/мес | аренда навсегда, данные не у тебя |
Новый iPhone на 512 ГБ | от 90 000 ₽ | просто чтобы не удалять фото — смешно |
Готовый NAS (2-bay) + диски | от 25 000 ₽ | коробка + диски, ноль обучения |
Ноут из шкафа | 0 ₽ | руками, зато всё своё |
iCloud — аренда: перестал платить, и доступ к данным теряешь. Новый телефон ради памяти — лишние расходы. Готовый NAS работает, но это снова трата, и настройка сводится к установке дисков в чужую коробку. Ноутбук из шкафа обходится в ноль рублей и заодно даёт понять, как всё устроено внутри.
Железо и подготовка
Пациент: HP 15-bw0xx. Что я с ним сделал, прежде чем превращать в сервер:
Снёс Windows, поставил Debian 13: стабильная и лёгкая система, подходящая для сервера, который работает без присмотра.
Основное хранилище — основной SSD ноута + на перспективу внешний диск Seagate на 2 ТБ по USB. Для 100 ГБ фоток с диким запасом, и можно подключать ещё.
Имя хоста — lab, пользователь — tim. Настроил «не уходить в сон при закрытии крышки», убрал ноут на полку и дальше управлял им только по сети.
OpenMediaVault: превращаем ноут в NAS
Основа всего — OpenMediaVault 7 (OMV). Это бесплатная надстройка для NAS: ставится поверх Debian и даёт веб-интерфейс для настройки дисков, пользователей и сетевых папок. Большая часть работы делается кликами в браузере.
Ставится одной командой поверх свежего Debian:
wget -O - https://github.com/openmediavault/packages/raw/master/install | sudo bash
После установки открываешь локальный адрес ноута в браузере и попадаешь в дашборд: загрузка, температура, диски, службы. Дальше по шагам: примонтировал внешний диск, создал общую папку и поднял на ней шару по SMB (Samba) — протокол, по которому Windows, macOS и iPhone видят сетевые папки.
Шару назвал NAS, физически она лежит по пути /srv/nas/NAS. На iPhone в приложении «Файлы» → «Подключиться к серверу» вводишь адрес ноута и логин с паролем — телефон видит сетевую папку. Фото выгружаются вручную или автоматически. 100 ГБ переехали с телефона на диск, память на айфоне освободилась.
Telegram-бот: управление с дивана
NAS работает, но открывать веб-панель ради проверки свободного места неудобно. Хотелось управлять хранилищем с телефона, без SSH. Решение — бот в Telegram.
Написал на Python небольшого бота. Команды — только нужные в быту:
/status — сколько свободно на диске, температура и загрузка ноута, аптайм;
/space — разложить по папкам, кто сколько занимает;
/last — показать, что недавно залилось в шару;
/services — живы ли Samba и сам OMV, и перезапустить, если что-то отвалилось.
Чтобы бот стартовал после перезагрузки и перезапускался при падении, оформил его как systemd-сервис (nas-bot.service). systemd — это менеджер служб в Linux, который держит нужные программы запущенными в фоне. Файл сервиса выглядит примерно так:
[Unit] Description=NAS Telegram bot After=network-online.target [Service] User=tim WorkingDirectory=/opt/nas-bot Environment=TELEGRAM_BOT_TOKEN=<ваш_токен> ExecStart=/usr/bin/python3 /opt/nas-bot/bot.py Restart=always [Install] WantedBy=multi-user.target
Включается двумя командами:
sudo systemctl enable nas-bot.service
sudo systemctl start nas-bot.service
Токен бота в статье — только заглушка <ваш_токен>. Свой реальный токен в публичный текст не суйте никогда: по нему любой желающий получит полный доступ к вашему боту. Если засветили — отзывайте через @BotFather командой /revoke и делайте новый.
Однако тг как известно испытывает сейчас не лучшие времена в плане возможностей подключения.
Решение: Tailscale и собственный выходной узел
Дома стоит десктоп на Windows, подключённый через другого провайдера, — у него с доступом проблем нет. Значит, ноут-NAS должен ходить в сеть через десктоп, как через шлюз.
Делается это через Tailscale — сервис, который строит между устройствами частную сеть (mesh-VPN) поверх обычного интернета. Ноут, десктоп и телефон попадают в одну приватную сеть и видят друг друга напрямую, независимо от физического расположения. Настройка сводится к установке клиента и входу под одним аккаунтом на всех устройствах.
Десктоп объявляю выходным узлом (exit node): весь интернет-трафик ноута идёт сначала до десктопа по приватной сети, а оттуда наружу. На десктопе включаю режим выходного узла, на ноуте указываю его как выход:
# на ноуте-NAS: поднять Tailscale и выбрать выходной узел
sudo tailscale up --exit-node=<имя-десктопа> --exit-node-allow-lan-access
Чтобы настройка переживала перезагрузки, завернул её в ещё один systemd-сервис — tailscale-up.service. После включения ноут сам подключается к приватной сети и выбирает десктоп выходным узлом.
Теперь с точки зрения серверов Telegram бот ходит из сети десктопа, где маршрут в порядке. /status снова отвечает. Та же приватная сеть закрыла и вторую задачу: до NAS можно подключиться откуда угодно через Tailscale, без проброса портов и белого IP.
Сколько это стоило
Теперь про деньги. Ноутбук достался бесплатно, софт весь open-source, платил только за апгрейды железа:
Позиция | Цена | Откуда |
Ноутбук HP 15-bw0xx | 0 ₽ | был дома |
Внешний диск Seagate 2 ТБ (USB) | 5 400 ₽ | потом |
ИБП Ippon (в планах) | ~4 000 ₽ | потом |
OpenMediaVault, Tailscale, бот | 0 ₽ | open-source |
Итого, реально потрачено | 9 400 ₽ | в перспективе |
0 рублей за рабочий NAS: 100 ГБ фото сохранены, память на телефоне свободна, доступ к хранилищу есть откуда угодно, управление — через Telegram. Готовый NAS-бокс с дисками обошёлся бы примерно втрое дороже, новый смартфон с большим объёмом — на порядок.
Что в итоге
Старый ноутбук превратился в полезное устройство. По ходу дела я разобрался с Debian, OpenMediaVault, Samba и systemd, написал бота и освоил Tailscale — это оказалось ценнее самих 100 ГБ. Готовый NAS такого опыта не дал бы.
Я понимаю что решение колхозное и не такое надежное или простое в эксплуатации как готовый NAS, но моим скромным требованиям оно удовлетворяет и дает поле для модернизации и роста, какой энтузиаст боится трудностей?)