Дисклеймер: я легко могу представить, как в комментарии приходит толпа экспертов с экспертными советами, и это нормально. Давайте только помнить, что это вводный текст для тех, кто не очень понимает что к чему, а значит и рекомендации должны быть соответствующие. Спасибо.
Дисклеймер #2: пост написан с помощью прекрасных людей из селфхостинг-чатика. Спасибо вам 😘
Что такое селфхостинг?
Хостинг — это размещение и запуск какого-либо софта где-либо, как правило, на серверах у провайдеров хостинга, а селф — это когда то же самое, но на своих собственных мощностях, то есть дома, или арендуя виртуалку или большой сервер у провайдера. При любом раскладе всё администрирование ложится на плечи (первого) конечного пользователя, которому это всё и надо. Зачем — это как раз следующий вопрос.
TL;DR & FAQ
Для нетерпеливых.
Q: Что делать, если я вообще ничего не знаю, но хочу научиться?
A: На Ютубе много каналов, посвящённых хоумлаббингу. Искать по словам “homelab” и “self hosting”.
Q: Какую железку лучше всего купить чтобы начать?
A: Старый офисный мини-микро ПК вполне подойдёт. Искать — на Авито и Ибее, ориентироваться — здесь: https://lowcostminipcs.com/
Q: На какой OS всё запускать?
A: Ubuntu/Debian/TrueNAS/Umbrel/Unraid
Q: Что хостить?
A: Кучу всего, искать можно здесь: https://github.com/awesome-selfhosted/awesome-selfhosted
Терпеливые могут читать дальше.
Зачем вообще этим заниматься?
Причин много, они разные, но можно обобщить какие-то основные.
- Контроль над данными. Никакой гугл не владеет данными с твоих фоток, если ты их к нему не загружаешь, а вместо этого держишь на своём сервере. А если он решил закрыть свои гугл фотос, тебе не придётся придумывать план эвакуации твоих данных.
- Недоступность контента. Иногда твой любимый сериал перестаёт быть доступен на Нетфликсе. Или к нему нет субтитров на нужном языке. Или звуковой дорожки. Или у тебя красный паспорт и тебя забанили по цветовому признаку, всяко бывает.
- Саморазвивася. В процессе можно узнать или научиться делать кучу относительно полезных штук.
- Хобби. Ну потому что это довольно прикольно.
- Использование сервисов несуществующих в виде публичного сервиса в интернете.
- Площадка для размещения своих пет проектов.
Что нужно, чтобы начать?
Знать
В целом, чтобы стартануть, нужно понимать хотя бы базовые вещи.
- Операционные системы семейства
*nix
. Основы работы с терминалом, как устанавливать софт, иметь представление о правах доступа - Основы сети. IP-адреса и порты — это самый минимум, всё остальное чуть менее критично и можно добрать на ходу.
- Основы железа. Что такое процессор, память и жёсткий диск, и сколько примерно вам их нужно для ваших целей.
Как будто это самый минимум. Полезно знать гораздо больше, но очень многое можно понять в процессе, плюс лично я не сторонник подхода "сначала выучу весь язык, а потом поеду путешествовать/соберусь переезжать". Учиться нужно в том числе и на практике.
Поскольку абсолютное большинство софта, который вы захотите запускать, как правило, запускается в Докере, не будет лишним хотя бы поверхностно почитать о том, что это такое, как с ним работать и чего он умеет. Например, на канале у Наны, она крутая и хорошо объясняет. На ютубе куча туториалов и на русском яыке.
Иметь
Кроме интереса и желания почти ничего: можно либо арендовать виртуальный сервер у одного из хостинг-провайдеров, либо переквалифицировать любую имеющуюся железку в домашний сервер. Это может быть старый игровой ПК, который пылится последние несколько лет в углу или в шкафу, может быть Raspberry PI, или офисный ПК, или старый списанный сервер, купленные на eBay/Авито за гроши.
Лично я предпочитаю иметь железку для обучения и селфхостинга дома, а не арендовать у хостинг-провайдера. На вопрос "какую же купить" стандартно отвечаю — любой офисный микро-пк, используемый в качестве тонкого клиента: от 4GB RAM памяти будет за глаза и на эксперименты, и на запустить что-то серьёзное, а маленькое энергопотребление согреет вам душу в условиях дорогого электричества.
Такие Б/У железки стоят порядка 5000 рублей или 50 евро, что кажется приемлемым порогом для входа в это увлекательное занятие.
Где искать железо
Не стоит гоняться за новьём, как правило, оно вам не нужно. А если нужно, вы точно об этом знаете и мой совет вам без надобности. Бывшие в употреблении офисные прекрасно служат нашим целям, а значит нам нужны они. В РФ это Авито, в Европе-США — eBay и недавно появившийся агрегатор https://lowcostminipcs.com/. Рано или поздно вам так же понадобятся диски для хранилища, за ними на другой агрегатор: https://diskprices.com/.
Что вообще не нужно, чтобы начать?
Вам точно не нужен белый айпи-адрес. Есть другие способы получить доступ к домашнему серверу снаружи, такие как cloudflared, Tailscale, самодельные VPN на WireGuard, наверняка есть и другие. Белый айпи-адрес только откроет вашу домашнюю сеть для атаки любому желающему. Аргумент "кому я нужен" не прокатывает: есть 100500 ботов, которые просто сканируют на предмет простых паролей и прочего подобного, чтобы, получив доступ, сделать железку частью своего ботнета.
Вам не нужно быть девопсом, сисадмином, сетевым инженером. Не помешает, но точно не обязательно. Начать можно примерно из любой точки, основные действительно важные вещи я описал выше.
Вам не нужна серверная стойка на 42 юнита. И на 12 юнитов не нужна. Вам не нужен даже списанный Dell R720, который лежит на Ибее по заманчивой цене в 120 евро с 256 гигабайтами памяти, двумя ксеонами и 8х300гб 10K SAS HDD. Во-первых, такую мощность некуда девать, во-вторых, он ревёт кулерами шо твой боинг на взлёте, в третьих, энергопотребление даже в простое такое, что после одного месяца обладания этим гробом ваш партнёр выставит вас на улицу вместе с ним. Потому что громко, дорого и совершенно неясно зачем. Смотри выше, достаточно маленькой бесшумной железки, она отлично справится практически со всем, что вы в неё бросите.
А какую операционку лучше использовать?
Лично мой фаворит — Ubuntu Server + Docker + Portainer. Умеет всё, что нужно, но требует знания, что и как делать в терминале. Если хочется более визуального управления своим сервером, можно посмотреть на Unraid, TrueNAS, Umbrel. А если планируешь не только селфхостить всякие сервисы в докере, но и перенести весь свой архив с фоточками и фильмами, то можно посмотреть в сторону готовых NAS решений, например Synology или QNAP, которые сразу покроют базовый функционал хранилки с удобный интерфесом и доступом. На них по-прежнему можно установить необходимый софт, в том числе и через докер.
Ну ладно, а чего можно селфхостить?
В целом, практически любой опенсорсный софт. Это может быть медиасервер, менеджер паролей, менеджер документов, домашнее облако а ля дропбокс, мессенджер, форум, сайт-визитка, система аналитики, игровые сервера, кулинарная книга, почтовый сервер, резалку рекламы на уровне dns, блокировщик рекламы в youtube, да что угодно. Ладно, почтовый сервер хостить можно, но категорически не нужно, это очень плохая идея. Слишком большое количество обручей, через которые нужно прыгнуть.
Самый как будто бы полный список доступного для селфхостинга софта есть на гитхабе: https://github.com/awesome-selfhosted/awesome-selfhosted
Есть сабреддит, где можно задавать глупые и не очень вопросы и читать про чужие сетапы: https://www.reddit.com/r/selfhosted/
Есть крутая развнедельная почтовая рассылка по теме: https://selfh.st/
Есть комната здесь в клубе: https://vas3k.club/room/selfhost/
И чат при ней: https://vas3k.club/room/selfhost/chat/. Не пожалейте времени и полистайте посты клубней, там много интересного, в том числе и в комментариях.
Примеры альтернатив разному софту:
✅ Фотки: вместо Гугл Фотос ставим Immich или Ente
✅ Кино и сериалы: вместо Нетфликса ставим Plex или Jellyfin
✅ Умный дом: вместо Яндекса и Эпла собираем Home Assistant (тот ещё квест)
✅ Музыка: вместо Спотифая используем Navidrome/Lidarr/Airsonic/Beets/Plexamp
✅ Менеджер паролей: вместо 1Password ставим Vaultwarden
И так далее, альтернативы есть почти чему угодно. Сложнее всего с картами и почтой, потому что это сложность настройки и/или много данных, которые нужно откуда-то брать и где-то хранить. А, и чтобы крутить сериалы в Плексе, их откуда-то нужно будет брать. А это либо торренты, либо сдирание контента с дисков, do your own research.
А какие бонусы-то?
Селфхостинг суть бесконечное хобби в том смысле, что достаточно непросто провести черту и сказать "вот щас я сделал хорошо, больше ничего и не надо". Опенсорсный софт развивается, появляется новый, постоянно что-то ломается или релизится, если руки чешутся, всегда найдётся, с чем повозиться. Было бы только время. Это, пожалуй, и плюс, и минус.
Из него вытекает однозначный плюс: в процессе можно научиться куче всего интересного. Или неинтересного, но полезного. Иногда даже как будто бесполезного и обскурного, но кто его знает, пригодится оно пригодится.
Другой плюс — можно сэкономить на подписочках. Вместо нетфликса — торренты с arr стеком, вместо YNAB — Actual Budget, вместо 1Password — Vaultwarden, и вот вы уже сэкономили никак не меньше 250 евро в год. Обратная сторона этого в том, что вы платите своим временем и нервами, а это ни разу не равноценный обмен.
Можно случайно сменить карьерный путь. Или заимпрувить свою нынешнюю карьеру. Всяким там айтишникам можно найти работу, и не особо понимая, что такое DNS и как готовить Графану, но это достаточно полезные знания, которые можно получить в том числе и при возне с собственным домашним сервером. Это вообще удобная площадка для экспериментов с тем, что кажется интересным, но на работе не затрагивается.
Ладно, а минусы какие?
— А что, Гул'дан, нам придётся отдать взамен?
— Всё, что есть
О, минусов много.
Во-первых, селфхостинг-хоумлаббинг легко может стать бездонным колодцем для ваших денег. Зависит от вашего умения знать меру. Иначе легко обнаружить себя в обнимку с той самой 42U серверной стойкой, под дождём и просящим милостыню.
Иногда хоумлаб может выглядеть так:
А иногда — вот так:
Собственно, поэтому я и говорю: может быть дорого. Не потому что надо, а потому что красиво и хочется.
Во-вторых, за секьюрность вашего сетапа отвечать придётся тоже вам. Больше не будет службы поддержки вашего любимого SaaS, который объяснит, почему их взломали и предложит компенсацию (ha-ha, as if).
В третьих, если зайти достаточно далеко и завязать инфрастуктуру домашней сети на свои железки, при любой поломке ваша семья будет пытаться линчевать уже вас, а не вашего интернет-провайдера, провайдера фотохостинга и так далее. Будьте осторожны.
В четвёртых, ответственность за сохранность данных тоже теперь на вас. Если собираетесь хостить дома хоть что-то критически важное, что вы не можете позволить себе потерять (сканы доков, архив фотографий), ОБЯЗАТЕЛЬНО озаботьтесь бэкапами. И не только на внешний жёсткий диск, который будет лежать рядом с вашим сервером, вам понадобится ещё по меньшей мере одна удалённая локация, где будет лежать экземпляр ваших данных. Например, S3 или B2, или копия вашего сервера в квартире родителей. Чтобы, если вдруг что-то сгорит, вам не пришлось обнаружить себя стариком, преисполненным сожалений, одиноко ожидающим смерти.
Дежурное напоминание: RAID — это не бэкап.
В общем и целом, селфхостинг-хоумлаббинг — крутое хобби, способное занять много-много часов активной работы с сервером и размышлений над возможностями и проблемами, потратить некоторое количество ваших денег и принести полезный и интересный опыт.
В заключение, прилинкую посты с комментариями клубней и клубничек об их собственном опыте:
- https://vas3k.club/post/25789/
- https://vas3k.club/post/25805/
- https://vas3k.club/post/25516/
- https://vas3k.club/post/23705/
- https://vas3k.club/question/2710/
- https://vas3k.blog/notes/sponsorblock/
- https://vas3k.blog/notes/homelab_2022/
- https://vas3k.club/link/25655/
- https://vas3k.club/post/704/
Если у вас есть хорошие советы для вкатывания в хоумлаббинг/селфхостинг, пишите комментарии и я дополню пост.
Cheers!
И сразу хочется добавить про бэкапы.
Рэйд это не бекап. Но когда кол-во хранящихся данных исчисляется терабайтами и их десятками, то тут сразу нужно вложиться в хорошие серверные винты, адекватный железный рейд (рейд 5 или 6), и адекватную файловую систему.
Т.к. серверные винты мрут крайне редко, а при наличии рейда, все данные восстанавливаются.
А бекапить уже только что-то набольшого объема и очень-очень ценное.
Если вдруг случится так, что вы купите на амазоне refurbished диск, подключите его в сервер, а он не будет подавать признаков жизни:
Вдруг мои два дня потраченного времени и 5 TB потерянных данных помогут вам избежать подобного опыта 🥲️️️️️️
А что из железок можно взять, чтобы на ней можно было локально гонять нейронки уровня Llama 7b для своих проектов?
Буквально сегодня открыл для себя plexamp. Это такой музыкальный плеер который работает с вашей plex библиотекой, но реализует опыт стриминговых сервисов: музыка под настроение, рекомендации, похожие итп... Сделан очень качественно, интерфейс приятный и понятный есть под все платформы. Единственное что надо иметь свою хорошую библиотеку, но тут торренты в помощь - интернет нынче быстрый, а диски дешевые.
Для возни с докер контейнерами очень нравится VSCode с соответствующим плагином. Удобно редактировать compose и тут же смотреть запущенные контейнеры.
Интересно. сам начал недавно селфхостится. Обнаружил Umbrel, казался безумно удобным до того как не нашел CasaOs, не такое красивое, отличаетсяне сильно но на мнооого удобнее.
Сейчас заказал себе UnifyDrive, вообще интересным должен быть.
про прокачать скиллы +1, пошел искать железку
Спасибо за пост! Хорошую тему продвигаете. Было интересно почитать и узнал новое для себя. Я недавно в этом деле и селфхостил только базу знаний для сообщества. Было мучительно сложно идти по этому пути с настройкой, разворачиванием, поддержкой. Но был горд, что она проработала несколько лет и принесла пользу людям.
Проект недавно закрыл, но затянуло в эту чертову нору и хочется уже погрузиться глубже и шире и начать селфхостить для себя и новых своих проектов :)
И еще отчасти это путь к независимости. Хочу больше данных держать при себе и не волноваться насчет санкций и прочих историй. Но каждый раз немного расстраивает что это требует знаний и не делается парой кнопок. А гайды и документация часто не пишутся с упором на ребят, которые не сильно в теме. Обычно считаются что приходят только опытные)
Спасибо за идею с Portainer, я не слышал о нём раньше — накатил себе и изучаю.
я как раз достиг уже той точке, когда на впске за 4€ крутится впн, n8n и 2 телеграм бота... и уже трудно разобрать что где и хочется какого-то порядка и наблюдения
Ну, ThinkStation точно размером не с пачку сигарет. И потребляет под нагрузкой явно не 10Вт.
Спасибо за пост! Хочу что-нибудь сделать у себя подобное дома, пока только более-менее разобрался с VPN на VPS, теперь хочу применить полученные навыки)
Есть какие-нибудь советы по недорогой и небольшой железке для начала новичку? Что-то типа малины или какого-нибудь конкретного микро ПК, чтоб не мешался на столе первое время? Офисный ПК не хочется, больше всё-таки склоняюсь к одноплатникам, но глаза разбегаются от выбора.