Селфхостинг 101

 Публичный пост
30 сентября 2024  2526
Беха ОХУЕННО
  • Дисклеймер: я легко могу представить, как в комментарии приходит толпа экспертов с экспертными советами, и это нормально. Давайте только помнить, что это вводный текст для тех, кто не очень понимает что к чему, а значит и рекомендации должны быть соответствующие. Спасибо.

  • Дисклеймер #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

Терпеливые могут читать дальше.

Зачем вообще этим заниматься?

Причин много, они разные, но можно обобщить какие-то основные.

  1. Контроль над данными. Никакой гугл не владеет данными с твоих фоток, если ты их к нему не загружаешь, а вместо этого держишь на своём сервере. А если он решил закрыть свои гугл фотос, тебе не придётся придумывать план эвакуации твоих данных.
  2. Недоступность контента. Иногда твой любимый сериал перестаёт быть доступен на Нетфликсе. Или к нему нет субтитров на нужном языке. Или звуковой дорожки. Или у тебя красный паспорт и тебя забанили по цветовому признаку, всяко бывает.
  3. Саморазвивася. В процессе можно узнать или научиться делать кучу относительно полезных штук.
  4. Хобби. Ну потому что это довольно прикольно.
  5. Использование сервисов несуществующих в виде публичного сервиса в интернете.
  6. Площадка для размещения своих пет проектов.

Что нужно, чтобы начать?

Знать

В целом, чтобы стартануть, нужно понимать хотя бы базовые вещи.

  • Операционные системы семейства *nix. Основы работы с терминалом, как устанавливать софт, иметь представление о правах доступа
  • Основы сети. IP-адреса и порты — это самый минимум, всё остальное чуть менее критично и можно добрать на ходу.
  • Основы железа. Что такое процессор, память и жёсткий диск, и сколько примерно вам их нужно для ваших целей.

Как будто это самый минимум. Полезно знать гораздо больше, но очень многое можно понять в процессе, плюс лично я не сторонник подхода "сначала выучу весь язык, а потом поеду путешествовать/соберусь переезжать". Учиться нужно в том числе и на практике.

Поскольку абсолютное большинство софта, который вы захотите запускать, как правило, запускается в Докере, не будет лишним хотя бы поверхностно почитать о том, что это такое, как с ним работать и чего он умеет. Например, на канале у Наны, она крутая и хорошо объясняет. На ютубе куча туториалов и на русском яыке.

Иметь

Кроме интереса и желания почти ничего: можно либо арендовать виртуальный сервер у одного из хостинг-провайдеров, либо переквалифицировать любую имеющуюся железку в домашний сервер. Это может быть старый игровой ПК, который пылится последние несколько лет в углу или в шкафу, может быть Raspberry PI, или офисный ПК, или старый списанный сервер, купленные на eBay/Авито за гроши.

Лично я предпочитаю иметь железку для обучения и селфхостинга дома, а не арендовать у хостинг-провайдера. На вопрос "какую же купить" стандартно отвечаю — любой офисный микро-пк, используемый в качестве тонкого клиента: от 4GB RAM памяти будет за глаза и на эксперименты, и на запустить что-то серьёзное, а маленькое энергопотребление согреет вам душу в условиях дорогого электричества.

Ест 10-15 ватт, размером с пачку сигарет, но вместит пару терабайт и до 32гб рам
Ест 10-15 ватт, размером с пачку сигарет, но вместит пару терабайт и до 32гб рам

Такие Б/У железки стоят порядка 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 — это не бэкап.


В общем и целом, селфхостинг-хоумлаббинг — крутое хобби, способное занять много-много часов активной работы с сервером и размышлений над возможностями и проблемами, потратить некоторое количество ваших денег и принести полезный и интересный опыт.

В заключение, прилинкую посты с комментариями клубней и клубничек об их собственном опыте:

Если у вас есть хорошие советы для вкатывания в хоумлаббинг/селфхостинг, пишите комментарии и я дополню пост.

Cheers!

Связанные посты
41 комментарий 👇

И сразу хочется добавить про бэкапы.
Рэйд это не бекап. Но когда кол-во хранящихся данных исчисляется терабайтами и их десятками, то тут сразу нужно вложиться в хорошие серверные винты, адекватный железный рейд (рейд 5 или 6), и адекватную файловую систему.
Т.к. серверные винты мрут крайне редко, а при наличии рейда, все данные восстанавливаются.
А бекапить уже только что-то набольшого объема и очень-очень ценное.

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

@djhrum, поддерживаю, а ценное — это семейные фото и видео, сканы документов, иии... Как будто бы всё? В моём случае это занимает типа 300гб. Бэкапить медиаконтент, как правило, не требуется, если только это не что-то действительно редкое.

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

@Frey, я бы даже семейные фото из этого вынес. Ну может очень ограниченное кол-во оставить.
А так да.
Сканы доков, и вообще все что связанно с бухгалтерией, налогами, контрактами.
Конфиги софта.
База обсидиана.
Да и всё.
т.е. то, что можно назвать "невосполнимой потерей"

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

@djhrum, почему без семейных фото? для меня это самое важное. Делаю по 5-6 копий

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

@pelinoleg, для меня это вопрос количества.
Если это услоно 5-10 в месяц, то ок. А если ты выпустил жену с айфончиком на прогулку и она принесла 200+ за полчаса. :) Ну а зачем оно в таком количестве?
Я помню архивы семейных фоток деда. Большой выджижной ящик шкафа, полностью забитый фотками. Все фотки в рассортированны пачками, перевязаны. Клевое зрелище. Вот только их на мей памяти доставали посмотреть раза 3. И то это было в виде "достал пачку, глянул на верхнюю фотку, убрал пачку" и так штук 10 глянул, убрал и закрыл.
У меня так-же. все по папочкам, по годам, по событиям. Открывается для просмотра примерно никогда:)
Буду-ли я их всех бекапить - нет.
Буду-ли жалеть если оно вдруг как-то потеряется - да.
А вот сделать какой-то сводный альбом "за всю жизнь" из 5-10 фоток в год, пожалуй можно:)

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

@djhrum, ну у меня немного другая ситуация. фотки делаю только я, сортирую и удаляю тоже только я. Но иногда просматриваем их вместе а так же они весь день крутятся на экране амазон echo.
ну вот ты будешь жалеть если потеряешь. Значит нужен бэкап. Хотя бы по 5-10 фоток в год :)

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

@djhrum, семейные фотки - это невосполнимая потеря. В том смысле, что из интернета их не скачаешь - их там нет.
Они может и нечасто пересматриваются, но иногда поностальгировать можно.
Ещё можно в будущем ребёнку показать: смотри, вот мы молодые и глупые, вот мы постаревшие и глупые, вот ты в полтора года нарисовала какашками сердечко на новых обоях

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

@djhrum, ещё стоит оговориться, что репликация тоже не бэкап.
Завёл себе реплики на серваке у родителей, а потом случайно удалил данные в одной реплике - удаление отразится и на остальных тоже

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

Для возни с докер контейнерами очень нравится VSCode с соответствующим плагином. Удобно редактировать compose и тут же смотреть запущенные контейнеры.

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

@feduza, О, а можешь показать скриншот, как это выглядит?

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

Интересно. сам начал недавно селфхостится. Обнаружил Umbrel, казался безумно удобным до того как не нашел CasaOs, не такое красивое, отличаетсяне сильно но на мнооого удобнее.

Сейчас заказал себе UnifyDrive, вообще интересным должен быть.

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

@pelinoleg, про CasaOS интересно. Мне понравилось что уровень сложности близок к 0. Мне не понравилось что они наплодили там микросервисов на ровном месте (камон, вы запускаете приложеньку на одном блядском сервисе, нахера вам 100500 отдельных служб?) и в целом это black box запутанный хоть и опенсорсный.

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

про прокачать скиллы +1, пошел искать железку

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

Спасибо за пост! Хорошую тему продвигаете. Было интересно почитать и узнал новое для себя. Я недавно в этом деле и селфхостил только базу знаний для сообщества. Было мучительно сложно идти по этому пути с настройкой, разворачиванием, поддержкой. Но был горд, что она проработала несколько лет и принесла пользу людям.

Проект недавно закрыл, но затянуло в эту чертову нору и хочется уже погрузиться глубже и шире и начать селфхостить для себя и новых своих проектов :)

И еще отчасти это путь к независимости. Хочу больше данных держать при себе и не волноваться насчет санкций и прочих историй. Но каждый раз немного расстраивает что это требует знаний и не делается парой кнопок. А гайды и документация часто не пишутся с упором на ребят, которые не сильно в теме. Обычно считаются что приходят только опытные)

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

Ну, ThinkStation точно размером не с пачку сигарет. И потребляет под нагрузкой явно не 10Вт.

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

@akr0n, Художественное преуменьшение :) На фотке нормально виден размер.

Хоумлаб — это когда 99% времени твоё железо испытывает околонулевую нагрузку, так что вполне валидно брать за основное именно энергопотребление в айдле

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

@Frey, Если околонулевая, то можно взять железку ещё дешевле и компактнее :)

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

Спасибо за пост! Хочу что-нибудь сделать у себя подобное дома, пока только более-менее разобрался с VPN на VPS, теперь хочу применить полученные навыки)
Есть какие-нибудь советы по недорогой и небольшой железке для начала новичку? Что-то типа малины или какого-нибудь конкретного микро ПК, чтоб не мешался на столе первое время? Офисный ПК не хочется, больше всё-таки склоняюсь к одноплатникам, но глаза разбегаются от выбора.

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

@bubblec0re, Скажу по своему опыту, лучше сразу взять mITX плату с распаяным актуальным процессором и положить куда то в красивый корпус (например cooler master elite 110A). Это может вписаться и на стол и в стойку под ТВ или хоть в кладовку.

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

@Owerrride, спасибо за ответ, но, кажется, это чуть-чуть перебор для меня. И , увы, корпус этот вообще, как оказалось, не найти - в магазинах в продаже нет, а на авито только старые, давно снятые с публикации объявления.
Может, можно какой-нибудь простенький одноплатничек все-таки?)

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

@bubblec0re, Node 304. Цена может кусаться, но этот корпус очень классный и ликвидный. Можно посмотреть платы Интела на J серии или N (это современнее, но и J для начала будет за глаза). Одноплатники имхо игрушка, под конкретную задачу. sata/nvme нет, памяти не добавить, процессор тоже не сильно производительный…
Чисто поиграться конечно можно взять и на барахолке потом наверняка заберут, но я бы уже брал норм железяку с заделом )

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

@Owerrride, не, ну соблазнительно пишешь, конечно, но, зная меня, мне скорее поиграться)
Хотя подумать есть о чем, да, может, и играться не стоит)

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

@bubblec0re, Я все это проходил) мой первый «типо сервак» был WD My Book Live)))

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

@bubblec0re, 5я малинка стоит достаточно дорогого, плюс к ней сразу корпус/охлад/нормальный бп, мож еще что то. Там сумма набежит неплохая. Глянь сколько у вас стоит J3455 например или что то по свежей? Почему j3455 вспоминаю, был у самого такой и трудится по сей день у друга, много чего ворочает.

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

@Owerrride, выглядит интересно, поищу, спасибо, маленькое и красивое)
Про малинку - а если постарше варианты? Типа 3, 4? Или они совсем дохлые? И еще есть же всякие апельсинки и прочие бананки, мб, кто-то уже игрался с ними)

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

@bubblec0re, Я не игрался, не вижу смысла под домашний селф-хост. Запустить там Home Assistant да. Но nextcloud/torrent/calibre/plex/immich и далее это уже мимо. Мало того что процессор не сильно производительный, памяти может не хватить, так еще дисков не накидаешь)

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

@bubblec0re, я брал на алиэкспрессе mini pc типа такого https://www.aliexpress.com/item/1005007068086214.html
на Ryzen 4500U, а ssd и оперативку отдельно в местном магазине брал

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

А что из железок можно взять, чтобы на ней можно было локально гонять нейронки уровня Llama 7b для своих проектов?

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

@ialgos, tinybox😁

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

@ialgos, для нейронки нужна gpu с достаточной памятью, для 1B параметров достаточно 1GB памяти, если экономно округлить float до 1 байта

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

https://diskprices.com/

Если вдруг случится так, что вы купите на амазоне refurbished диск, подключите его в сервер, а он не будет подавать признаков жизни:

Вдруг мои два дня потраченного времени и 5 TB потерянных данных помогут вам избежать подобного опыта 🥲️️️️️️

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

😱 Комментарий удален его автором...

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

Буквально сегодня открыл для себя plexamp. Это такой музыкальный плеер который работает с вашей plex библиотекой, но реализует опыт стриминговых сервисов: музыка под настроение, рекомендации, похожие итп... Сделан очень качественно, интерфейс приятный и понятный есть под все платформы. Единственное что надо иметь свою хорошую библиотеку, но тут торренты в помощь - интернет нынче быстрый, а диски дешевые.

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

@Bonarahma, кажется он только для тех у кого плекс пасс (сам не могу проверить, у меня он есть)

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

@TiraelSedai, и у меня есть, я тоже не могу
upd: почитал, без plexpass можно использовать, но все основные вкусности только c plexpass:

Создание миксов исполнителей и альбомов
Поиск схожих по звучанию исполнителей, треков и альбомов
Super Sonic
Sonic Sage
Sonic Adventure
Загрузки
Guest DJ
Aural Fixations
Дистанционная версия Plexamp для Raspberry Pi
Текст песни
Автовоспроизведение
Настройка главной страницы
Десятиполосный эквалайзер
Поиск похожих треков
Серверные функции
Радио для альбомов и треков
Согласование частоты дискретизации
  Развернуть 1 комментарий

Спасибо за идею с Portainer, я не слышал о нём раньше — накатил себе и изучаю.
я как раз достиг уже той точке, когда на впске за 4€ крутится впн, n8n и 2 телеграм бота... и уже трудно разобрать что где и хочется какого-то порядка и наблюдения

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

😎

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

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


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