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, но моим скромным требованиям оно удовлетворяет и дает поле для модернизации и роста, какой энтузиаст боится трудностей?)
ссылка на оригинал статьи https://habr.com/ru/articles/1044194/