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

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

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

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

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

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

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

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

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

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

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

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

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

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

😎

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

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


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