Свой сервер за 0$: путешествие в мир selfhost на старом железе

 Публичный пост
11 ноября 2025  1420

Как все начиналось

Начну слегка издалека. Так как живу в Израиле, возникла острая необходимость выучить иврит. Ранее изобретённых методов изучения иностранных языков мне показалось мало, поэтому я решил придумать свой. Суть такова: есть телеграм-бот, в нём есть список подкастов на иврите. Если выпуск подкаста интересен, при нажатии на кнопку «Перевести» происходит некая магия с помощью ИИ и кода на Java, и на выходе появляется аудиофайл, содержащий как иврит, так и русский перевод по предложениям. Но речь не о том.

Так вот, встал вопрос о хостинге сего чуда. Не желая тратить на эту гениальную идею деньги, было решено хоститься на AWS в рамках free tier. Деплой на EC2 прошёл успешно, но… во время создания итогового аудиофайла загрузка процессора уходит до 100 %, и через некоторое время EC2-инстанс переключается в статус: "Instance reachability check failed"

Кто виноват и что делать?

Ну, кто виноват — и так понятно, а вот над вопросом «Что делать?» пришлось подумать. Так как денег платить не хотелось принципиально, было принято решение взять хостинг в свои умелые руки. Для этого из закромов был вынут старенький нетбук (олды помнят ещё такие машинки?) Asus Eee PC 1215P, которым когда-то давно пользовалась жена. Его особенность, по сравнению с собратьями, была в том, что на борту — двухъядерный (!!!) Atom и 2 ГБ ОЗУ. Кроме того, штатный HDD когда-то был заменён на SSD, что дало немалый буст! Мне даже удалось запустить на Windows 10. Я же программист! Проверка работоспособности показала, что всё работает нормально, кроме аккумулятора, который признаков жизни не подавал. Немудрено: нетбук включался последний раз много лет назад и просто лежал без надобности.


Так вот, «Винда» была безжалостно снесена, а взамен установлена Ubuntu Server 22. Из дополнительного ПО также были поставлены: docker, ssh, git, mc (ммм, ностальгия по старым временам). Вроде всё завелось, но, как всегда, было «но». Подключение к интернету было организовано посредством шнурка из роутера. Однако разместить этот, с позволения сказать, сервер планировалось в другой комнате, в которой из кабелей есть только 220. Поэтому было принято волевое решение организовать доступ в интернет по Wi-Fi. Да, я знаю, что это не кошерно, но тягать кабели в съёмной квартире нет никакого желания, а оставлять «сервер» в досягаемости детей сводило смысл затеи к нулю. С помощью чата GPT и такой-то матери цель была достигнута: Wi-Fi поднят, телеграм-бот (Java-приложение в Docker) задеплоен. И ура — всё заработало.

Далее, в качестве эксперимента, я принял решение организовать доступ к серверу снаружи. Для этого на сервисе www.dynu.com я зарегистрировал домен, следуя инструкциям сервиса, установил и сконфигурировал приложение на сервере. И снова — успех!
И, так как термин cyber security нам не чужд, были отключены root-доступ и доступ по паролям к SSH. Также была установлена утилитка fail2ban, чтобы банить злых хакеров.

На этом, собственно, эксперимент был засчитан как удавшийся: у меня есть свой маленький сервер, на котором можно запускать некритичные приложеньки и использовать его для экспериментов. На данный момент на сервере вертятся два бота на Java/Spring/Docker и ещё один на Go/Docker. Денег потрачено: 0 $.

Что было потом

А дальше я вспомнил о своём старом ноуте Dell E6440. Года три-четыре назад он был списан по состоянию здоровья: камера не работала, сгоревший вентилятор был заменён на такой же, но регулировка оборотов почему-то не работала, и при включении ноутбука кулер издавал ревущий и непрекращающийся рёв. Да и железо было уже устаревшим: i5 первых поколений и 8 ГБ RAM.

Удачный эксперимент с нетбуком не давал покоя, ручки так и чесались сотворить что-то чудесное. Но ревущий вентилятор ставил на этом крест. Поэтому было принято волевое решение потратить немного денег на новый кулер. Приехавший через пару недель новый кулер был установлен, и — о чудо — регулировка оборотов заработала! Полнейшая тишина во время работы радовала слух.

Размышляя, чем бы занять новый сервер, варианты с видео- и аудиохостингами были отклонены. Для видео я пользуюсь сервисом ki_o.pub, который по соотношению цена/качество устраивает меня на 100 %. Да и объёмы памяти для этого нужны немаленькие. С музыкой примерно то же самое: в довесок к YouTube Premium идёт YouTube Music, которая также устраивает более чем. А вот по поводу фотографий я задумался: дело в том, что все фотки у меня хранятся в Google Photos, и истории из интернета о безвозвратной блокировке Google-аккаунтов пугали меня до диареи.

Посему решено: следующим шагом будет сервис хранения фотографий! Почитав интернет и посмотрев немало ютубчика, решение ставить на сервер Ubuntu, а уже на неё — Immich (а именно он и будет отвечать за хранение фоток), было отклонено в пользу Proxmox.

Proxmox — это гипервизор, который позволяет легко создавать виртуальные машины, управлять ими, а также заниматься распределением ресурсов компьютера. Установка прошла без каких-либо проблем, но, по старой доброй традиции, я решил использовать Wi-Fi для соединения с сетью. Вот тут-то проблемы и появились: сам Proxmox прекрасно видел сеть и интернет, а вот виртуальные машины, запущенные на нём, — нет :((( Наверняка есть методы, как это исправить, но, как по мне, всё это будет костылём и может работать очень нестабильно. Поэтому недалеко от роутера для сервера было выделено место, и он был подключён к сети кабелем. Все проблемы подключения виртуальных машин к сети таким образом были решены.

Первой виртуальной машиной стала Ubuntu. Я не планировал открывать ни сам Proxmox, ни Immich в мир: всё работает в локальной сети, новые фотки синхронизируются с Immich, когда устройства появляются в локальной сети. Такое решение обусловлено тем, что в моём случае Immich — это что-то типа бэкапа.

Кроме того, я поигрался с несколькими виртуальными машинками — например, давно хотел «подержать за вымя» Home Assistant.

Что будет дальше

Вот, собственно, мой небольшой опыт по вкатыванию в селф-хостинг. Как видно, если вам интересна эта тема, но вы не готовы начинать с покупки оборудования, есть другие пути. Думаю, у каждого (ну или почти у каждого) «компьютерщика» найдётся рабочий или полурабочий компьютер, с которого можно просто начать и понять, интересна ли вам эта тема и стоит ли вкладывать в неё средства.

Что касается меня, то я всё же вложил какое-то небольшое количество денег в мой сетап: помимо упомянутого кулера, я также купил новую батарею для нетбука — она будет выполнять роль ИБП. Кроме того, на ноутбуке расширил ОЗУ до максимума (хотя 16 ГБ — такой себе максимум). Тем не менее, на данный момент у меня есть платформа для запуска моих пет-проектов, а также для поэкспериментировать. Ну и «бэкап» фоток — вещь вполне утилитарная.

P. S. Впоследствии я купил карман для двух HDD, который позволяет работать с ними в четырёх режимах: RAID 0, RAID 1, два отдельных диска и JBOD (это когда два диска отображаются и работают как один с объёмом, равным сумме объёмов установленных дисков). Я перевёл его в режим RAID 1 и использую как холодное хранилище для бэкапов.

Связанные посты
9 комментариев 👇
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

Спасибо что поделился!

Что бы не вывешивать сервисы наружу открыл для себя Tailscale. Устанавливаешь их клиент на устройства, так же можно обернуть свои докер контейнеры в него или просто поставить на машине. Все устройства объединятся в частную сеть, к ним будет возможность обращаться по DNS имени или IP. Как бонус можно любую ноду назначить exit нодой или подключить Malward VPN за 5 баксов в месяц. У них есть еще куча других функций которыми я успешно (пока) не пользуюсь. И самая вишенка - это все бесплатно до 100 устройств, что мне более чем хватает пока.

Про данные и возможность все в один момент потерять меня тоже накрыло пару лет назад, и я купил NAS домашний (Synology). Да, не бесплатно, но я не представляю сколько времени я бы потратил на конфигурирование этого всего самостоятельно. Плюс это не только фотки, но и все облачные аккаунты которые у меня есть синхронизируются в NAS и обратно. Ну и конечно бесконечные внешние диски с кучей старых фоток и файлов теперь успешно хранятся в одном месте. И сверху это все еще бекапится в iDrive на случай если с NAS что-то случится. Ну и конечно на нем стоит Tailscale и я с любого своего устройства из любого места имею доступ по smb протоколу к файлам на своем NAS стоящем дома.

  Развернуть 1 комментарий

Класный пост, как раз думаю о том чтобы серверок собрать, и железо выбираю, и тут подумал а, что я туплю, у меня ведь тоже старый лаптоп без дела лежит пылится, его и заюзаю. Нужно только придуматься что-то чтобы не грелся, что-то у него с охлаждением совсем плохо стало... А для доступа к своей инфраструктуре у меня OpenVPN настроен. Чтобы был всегда был доступ в домашнюю сеть лежит на шкафу raspberry pi zero. Oчень удобно, всегда можно разбудить через wakeonlan домашний комп, залезть на него, поработать и снова выключить.

  Развернуть 1 комментарий

Залинкую: https://vas3k.club/post/25875/

  Развернуть 1 комментарий

@zavgorodniy Круто!
А можно где-то взять код ИИ, который добавляет аудиоперевод и соединяет с исходником? Это получается предложение оригинала, перевод, предложение оригинала, перевод, ...?

  Развернуть 1 комментарий

@ArseniyB, да, именно так и подучается: предложение на иврите - первод - прделожение на иврите - перевод. На самом деле там не совсем предложения: это скорее фразы, иногда совпадающие с предложениями. А вот с кодом сложнее: я писал его на коленке, это часть бота: я имею в виду, что это не библиотека. Да и иврит там «захардкожен» как язык оригинала. Если есть желание покопаться в Java коде - могу расшарить репозиторий на github
Ну или могу вынести этот функционал в отдельного бота, тогда уж и исходные языки можно будет выбирать, можно еще какой-нибудь функционал добавить

  Развернуть 1 комментарий

Использовать старые ноуты для селфхостинга - это базовая база, моё увожение

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб