Из мёртвого ноута — в домашний NAS: спасаем 100 ГБ фоток за 0 ₽

от автора

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/