Селфхостинг: Страдания в обмен на контроль или как осложнить себе жизнь забавы ради

 Публичный пост
6 мая 2024  4782
ОХУЕННО Держи долор Я понял!

Селфхостинг - это размещение серверно-ориентированных приложений, на домашнем (как правило), железе с целью использования в личных целях. Это может быть VPN для себя и друзей, облачное хранилище, музыкальный сервис, торрентокачалка и что угодно другое.

Здоровенько, меня зовут Паша и я селфхостер.

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

В этом посте я вам расскажу немного о том:

  • что я думаю про селфхостинг;
  • что у меня есть на домашнем сервере;
  • какие плюсы и минусы есть у тех штук, которыми я пользуюсь;
  • на каком железе всё это крутится.

Ещё я бы очень хотел подробно написать о том, как каждый человек может самостоятельно настроить себе дома подобные сервисы, но это вышло за рамки моих сил. Мне бы очень хотелось сперва узнать какому количеству людей это будет интересно и нужно (лайк, шэр, колокольчик, подписка), а только потом переходить к написанию руководства.

Системные требования:

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

  • Найти какую-нибудь железку. В идеале — старый лаптоп, бонус поинт за Ethernet порт. RaspberyPi и аналоги покатят, но не так удобно (arm вместо x86) и не так мощно/солидно.
  • Домашний интернет с публичным (белым) IP. Скорее всего у вас он уже есть, очень многие провайдеры дают его просто так.
  • Свой домен. Это не строго обязательно, но так сильно удобнее. Стоит где-то 10 евро в год.

Ну а дальше, предлагаю вам почитать про:
Нафига это нужно?
Софт
Железо
Демонстрация
How To

Нафига это нужно?

Сервисы, доступ к которым вы можете приобрести за деньги, действительно чаще лучше и удобнее open source решений. Но у коммерческих решений есть ряд минусов:

  • У вас нет никакой возможности заплатить за то, чтобы сервис делал то что нужно именно вам, ведь бизнесу это будет попросту нерентабельно. Ну кто в здравом уме будет исполнять любые хотелки Славика Круглолицевича из Берлина? Есть тысячи людей, которые не имеют никаких странных хотелок; они пользуются тем, что им предоставляют корпорации и даже не подозревают, что может быть как-то по-другому.
  • У вас нет никакого контроля над информацией. Мало того что вы не знаете насколько спустя рукава корпорации относятся к хранению ваших данных (ну ладно, гугл наверное ответственно относится), но вы ещё и обязаны соглашаться с любым сервисным соглашением которое вам предложат, если вы хотите продолжать пользоваться сервисом.
  • Если компания умрёт, то скорее всего с ней умрут и все ваши данные.

Сам я долго думал о том, нахрена я это вообще делаю. Первые два пункта главные, остальные подъехали по ходу дела:

  1. Принципы

Я не хочу давать данные о себе никаким корпорациям. Я им не доверяю. Особенно в наши дни, когда по сути любая компания может вдруг внезапно приглянуться Маску и перевернуться с ног на голову. Принципиально для меня это сродни вегетарианству. Конкретно мои действия погоды не делают, но я верю что в один прекрасный день это движение будет зажигать больше сердец ❤️‍🔥❤️‍🔥❤️‍🔥

  1. Контроль и свобода

Буквально с первого раза, когда я сел за компьютер в детстве, меня штырило именно от того, что я могу сам создавать штуки, которые ведут себя так, как я хочу. Торжество свобода и власти.
Примерно по этой причине экосистема iOS меня просто невыразимо бесит. Она прекрасная, там много фичей которыми я по настоящему восхищаюсь, которым я завидую. Но вот когда мне надо, чтобы что-то было не так, как сказали гении из Купертино, начинается адуха какая-то. Так что только Линукс.

  1. Экономия

Для меня было сюрпризом обнаружить, что оказывается все мои усилия немножко окупаются. Я живу в Нидерландах, а цены тут кусачие. Так как я селф-хостчу, мне не надо отстёгивать 8 евро нетфликсу, 11 евро спотифаю, 10 евро гугл-драйву, пяток евро за VPN... К тому же, я могу в свой сервис добавить ещё кучу пользователей за 0 денег. Разве что сторадж докупить надо будет, но по сути он окупится за год. Получается так, что я где-то 3-4 сотни евро в год с этого экономлю. Мелочь, а приятно.

  1. Share

Мне нравится делиться всем этим с друзьями. Мне классно от того, что я могу выдать всем моим друзьям VPN и они в России имеют надёжный доступ во внешний интернет. Я могу дать им послушать музыку которой нет на спотифае, фильмы которых нет ни на одной платформе и многое другое.

Софт

Собственно что у меня там сейчас крутится? Да дохреналлион всего.

  • Vaultwarden он же Bitwarden, но на Rust.
  • Navidrome давать друзьям послушать мою музыку.
  • Invidious свой ютуб без рекламы.
  • Prowlarr коннектор для поиска торрентов для *arr сервисов.
  • Lidarr собственно один из *arr сервисов, использую в основном для того чтобы теги в музыкальной библиотеке проставлять.
  • Sonarr должно качать сериалы, но у меня лыжи не едут.
  • Radarr охуенная штука, сама качает фильмы когда они выходят.
  • Jellyfin собственно плеер смотреть эти самые фильмы.
  • AdGuardHome DNS чтобы мои домены в локальной сети доступны были.
  • Syncthing просто фантастическая штука для бэкапов и синка файлов.
  • NextCloud поставил родственникам, надо бы на OwnCloud поменять, но руки не доходят.
  • Outline-Shadowbox давать доступ в большой интернет друзьям.
  • qBittorrent ну понятно всё, да?
  • PhotoPrism очень хотелось свои фоточки на карте смотреть.
  • Fawkes бот в телегу фоточки обскурить.
  • Gitea github такой, но я не пользуюсь.
  • Caddy nginx для хипстеров, эта штука помогает каждому сервису выдавать свой под-домен и вешать везде https.
  • CasaOS очень пафосно названный UI для докера.
  • backupninja я хз почему я эту штуку выбрал для бэкапа, она мне кажется простой.

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

Vaultwarden

Менеджер паролей.

Нравится: хранит пароли, опен сорс, надёжно.

Не нравится: приложения клиента. Мне лично неудобно, есть много прeтензий.

Вообще обычный public сервис тоже хороший. Если вы посмотрите в сорс код bitwarden, то вы узнаете, что БД паролей расшифровывается только на конечном устройстве. Криптография там серьёзная, даже аудиты были. Так что можно без страха пользоваться публичным сервисом, он бесплатный. Если вы ещё не пользуетесь менеджером паролей — очень рекомендую. Сама архитектура не позволит хакерам взломать "ГЛАВНЫЙ СЕРВЕР" и слить все пароли, что очень круто. Соответсвенно, если вы даёте сервис друзьям, то они могут быть спокойны, что вы к этим паролям доступа не имеете.

Преимущества селфхостед варианта:

  • он селфхостед;
  • можно создавать организации и делиться паролями с друзьями.

Syncthing

Люблю всем сердцем. Опен сорс, написан на Go, есть шифрование. Сразу оговорюсь, это никакое не облако. Это автоматическая синхронизация файлов. Т.е. те файлы, к которым вы хотите иметь доступ должны быть НА КАЖДОМ устройстве (именно поэтому у меня в телефоне microSD на 512gb).

Эта штука связывает все ваши ноутбуки, мобильники, серверы и меш-сеть и синхронизирует между ними файлы. Чтобы ваши устройства друг друга нашли, используется домен syncthing.com на который все ваши устройства добавляют свой уникальный "номер" (хэш) и по нему можно соединять устройства.

Вот так просто можно сосканить код мобильником и связать с десктопом
Вот так просто можно сосканить код мобильником и связать с десктопом

Честно, я бы про него отдельную статью написал, настолько он хорош.

Нравится: надёжная синхронизация файлов и бэкапов. Музыка, фоточки, всё всегда со мной и на всех устройствах на которых мне это нужно сразу.

Не нравится: мобильное приложение могло бы быть получше. Но там есть доступ к web-ui в котором есть всё что нужно.

qBittorrent

Нравится: качает торренты, есть приложение на мобилку и я могу по пути домой, сидя в электричке, добавить себе в библиотеку какой-нибудь сериальчик, который будет скачан через 5 минут.

1. Найти на торрентах и кликнуть
1. Найти на торрентах и кликнуть

2. Открыть в другом приложении
2. Открыть в другом приложении

3. Выбрать категорию, чтобы файлы попали в нужную папку
3. Выбрать категорию, чтобы файлы попали в нужную папку

Не нравится: неудобно настраивать категории. Мне надо было, чтобы скачанные фильмы шли в одну папку, музыка в другую, аудиокниги в третью, а если я хотел просто что-то посидить, то в четвертую. У меня ушло 2-3 попытки чтобы понять, как это сделать. Не круто.

Jarr!

Коллекция пиратских штук типа Radarr, Lidarr, Prowlarr и другие.

Если в двух словах, то Sonarr, Lidarr и большая часть этих приложух отвечают за какой-то определённый тип контента. У них есть подвязки ко всем базам данных контента, чтобы подтягивать постеры, описания и т.д. Также они могут мониторить торренты и usenet (не спрашивайте), но для этого им необходим "адаптер" для всего это, в роли чего выступает Prowlarr. И потом им нужен торрент клиент, чтобы туда передавать торрент файлы.

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

Не нравится: сложнаааа. Не то чтобы оно как-то совсем уж нетривиально настраивалось, но всё же отнимает немало времени. Написано на C#, поэтому я не могу там ничего поправить под себя.

Нравится: может самостоятельно качать торренты. Например, я хочу посмотреть фильм, но он еще даже в кинотеатрах не вышел. Добавляю его в Sonarr и жду. Когда фильм объявится на торрентах, через несколько минут он появится у меня в медиа-библиотеке. Каеф.

можно указать ваши любимые торрент сайты для поиска
можно указать ваши любимые торрент сайты для поиска

довольно нетривиальные настройки формата
довольно нетривиальные настройки формата

Не нравится №2: задать фильтр для нужного качества сложнаааа.

Для того чтобы ваш Radarr не качал вам camRip из кинотеатра на индийском языке с бенгальскими субтитрами, вы можете настроить систему скоринга для торрентов. Вроде бы простенько, типа отметил качество и всё. Но на деле как-то не оч выходит и приходится много докручивать руками.

можно выбирать фильтры
можно выбирать фильтры

Jellyfin

Ууууу, как я обожаю эту штуку. Есть ещё над чем поработать, но уровень качества уже ОЧЕНЬ высокий. Отлично работает, есть нативные приложение на всё (за iOs надо платить, азазаза), дополняет сериалы справками, списками актёров. Есть киллер фича: совместный просмотр. Вы можете смотреть фильм со своими друзьями находясь в разных местах, а эта штука синхронизирует фильм чтобы вы одновременно охали и ахали) Можно создавать кучу пользователей, чтобы у каждого была возможность запоминать, где он остановился в момент просмотра того или иного фильма/сериала.

стартовый экран (сохранятеся место где вы остановили просмотр)
стартовый экран (сохранятеся место где вы остановили просмотр)

страничка одного из сериалов
страничка одного из сериалов

Нравится: у меня практически свой Netflix!

Не нравится: андроид приложение для телевизора. Может у меня медиакоробка не очень, но у меня не получилось заставить её получать файл и декодировать самостоятельно. В нужный формат всё декордирует ноутбук, от чего греется и шуршит вентилляторами. Кстати, настроить повышенное качество декодирования тоже было нетривиально, надо было зайти в докер контейнер и что-то там поделать, я уже даже не помню что. В целом, оно и так из коробки работает, просто качество декодирования будет так себе.

Outline-Shadowbox

Классная обёртка для shadowsocks. До сих пор работает для людей из России.

нравится: работает. Есть приложение на мобилку.

не нравится: разработчики дают скрипты требующие root ssh доступ к вашему серваку. Да, это 90% кейсов, но я хочу отдельный сервис не требующий рут доступа.

Caddy

Краеугольный камень всей системы. Эта штука позволяет мне выделять для каждого сервиса поддомен и иметь к нему доступ из большого интернета.

нравится: стабильно работает, есть не просит, https сертификаты есть, конфиги на любой случай жизни легко гуглятся.

не нравится: да всё нравится.

Пример конфига:

{
    http_port 80
    https_port 443
}

my0domain.xyz {
    handle_path /cv* {
    	root * /var/lib/caddy/files/Pavel_Griaznov_CV.pdf
    	file_server
    }

    respond * "Nobody here but us chickens!"
}

ha.my0domain.xyz {
    reverse_proxy http://localhost:8123
}

Для того чтобы добавить новый поддомен нужно добавить ровно 3 строки (собственно 3 последние в конфиге). Caddy сам сходит на сайт lets encrypt получит там https сертификат, сохранит его и даст доступ к локальному сервису.

Раздел my0domain.xyz - это конфиг для моего основного домена чтобы отдавать файлик CV, а на всё остальное отвечать Nobody here but us chickens.

Важно: не забывайте что домен указывающий на ваш домашний IP выставлять не круто, лучше используйте Cloudflare как прокси. У меня вот дальше в скриншотах домен засвечен, но убрав его из текста я надеюсь таки ибежать толики автоматизированного трафика.

CasaOS

Супер-пупер докер UI со свистелками и перделками.

вот так выглядит
вот так выглядит

Я сначала думал, что это какая-то очень классная штука, но на деле там как будто какой-то микросервисный рак, который даже когда я ему дал рутовый доступ зафейлился всё поставить на Debian. Может на Ubuntu будет получше, я хз. После того как я руками внёс пару правок в их скрипты, эти старые жигули-таки завелись и с тех пор просто работают. За это им большое спасибо. Плюс они недавно добавили возможность подключать другие списки приложений.

Сейчас я бы взял Portainer попробовать. Мне кажется он получше мне подойдёт

Нравится: есть магазин приложений из которого можно в один клик поставить себе всякие штуки. Юзер-френдли интерфейс. Я думаю с этим может разобраться любой человек после короткого обучения.

тут даже много приложений
тут даже много приложений

Не нравится: непонятная архитектура, нужен рут.

Debian

Не забываем что всё то возможно только благодаря необъятному сообществу и коллективным усилиям Linux разработчиков которые нам пилят ядро и дистрибутивы. Давайте все дружно скажем им спасибо.

Запомните дети, если вы хотите чтобы ваш сервер не ломался при апгрейдах, не требовал странного и вообще вёл себя максимально стабильно — Debian это ваш выбор.

.

Так, ну базово кажется всё. Про сервисы и их плюсы/минусы я рассказал, как будто пора бы уже переходить к самой сложной для меня части: рассказать, как такое чудо себе поставить.

Железо

Переходя наконец к делу.

На данный момент у меня в кладовке стоит старый ноут. Мне его коллега с работы отдал (€0), там какой-то дефект мат платы, может зависнуть просто так если его неправильно потрогать. Сейчас он там стоит в полуоткрытом состоянии под экспериментально выверенным "углом непадения" и аптаймом больше года. Там стоит Debian (потому что стабильно и настраивать не надо), к нему подключен 2Tb ssd (~€80) в адаптере (~€20) воткнутый в type-c.

Почему не RaspberryPi или другой одноплатник? Потому что удобнее и мощнее. Сейчас конечно не мало софта уже адаптировано к ARM, но вы точно встретите что-то, что не будет так гладко на нём работать.

Дорого?

Идите поищите на ибей laptop with broken screen. Если повезёт, то на локальном авито вы найдёте старый ноут ещё дешевле чем одноплатник. Апсайклинг, епт!

Не энергоэффективно?

Вообще ноуты довольно энергоэффективные, не настолько как одноплатники, но всё же. Я померил, со всеми сервисами и нагрузками ноут ест ~10 ватт. Получается за 7кВт в месяц у меня домашний сервер. Даже с пугающими нидерландскими ценами это будет примерно 3-4 евро. Ну как будто бы за дедикейтед сервер с 2Tb ssd и безлимитным трафиком это вау как дёшево.

Не ...?

Пишите свои аргументы против в коменты, давайте обсудим)

Демо

Давайте посмотрим как с текущей конфигурацией можно лихо добавлять себе сервисов. Алгоритм действия простой: добавить довер сервис в CasaOS и добавить три строки в конфиг Сaddy, чтобы сервис стал доступен из интернета.

Тут, по сути, есть два варианта:

1. Из магазина приложений

Тут даже скриншоты показывать как будто и не надо. Идём в магазин CasaOS (у Portainer тоже списки приложений есть), кликаем там на понравившемся сервисе Install, потом кликаем на иконке установленного сервиса, попадаем на локальный адрес вашего сервера на нужном порту (типа 192.168.2.20:8686) и там собственно работает ваш сервис.

2. Любой другой сервис в докере

рисуем кружочек
рисуем кружочек

рисуем остаток совы
рисуем остаток совы

и ещё немного совы
и ещё немного совы

Если у вас простой сервис, то вам кроме ссылки на докер контейнер и указания порта на котором работает приложение ставить ничего не надо. Можно разве что ссылку на красивую иконку добавить и ссылку на web UI.

В случае же outline, надо прописать нужные порты, примонтировать какие-то папки, установить команду которая исполняется при запуске контейнера... Не тривиально нифига.

Давайте чего попроще попробуем, и распишем прям шаг за шагом.

Я например вот хотел сайт с вишлистом. Нагуглил такую штуку, даже докер имадж есть.

вроде попроще
вроде попроще

К сожалению, скопировать адрес докер контейнера оказалось недостаточно. Сервису нужна база данных. И ему ещё нужно было сказать где она находится. Ну не беда, идём в магазин приложений, ставим оттуда MariaDB. Теперь два важных момента:

  1. В настройках вашего нового вишлист-сервиса обязательно укажите Network такой же, как у базы данных, только тогда она будет доступна.
  2. Сервису нужен доступ к базе данных. Это можно ручками в конфиге прописать, но когда я зашёл по адресу сервиса, он мне предложил всё настроить руками. Классненько) Данные для доступа вам показывали при установке MariaDB, надеюсь вы их запомнили.

указываем в качестве хоста mariadb
указываем в качестве хоста mariadb

Для сервиса я сделал свою базу данных и пользователя, но это не обязательно.

Дисклеймер: в 99% всяких php сервисов есть уязвимости которые опытный хакер найдёт и хакнет. Докер тоже не панацея. Учитывайте это если у вас какая-то критичная для вас инфраструктура. По сути, если вы вдруг захотите меня хакнуть, то я в довольно уязвимом положении. Поэтому пост открыт только для клуба, возможно для внешнего интернета я тоже открою, но уберу домен как минимум. Подумаю ещё.

How to?

Как же всё таки стать селфхост-гуру и хвастаться друзьям своим домашним сервером с вашим сайтиком?

to be continued...

Когда я дошёл до этого места в написании текста я понял, что жутко устал. Хоть я и думал об этом посте уже несколько месяцев (ожидая что кто-нибудь из клуба забацает), но я уже хоть убей не помню как это всё настраивалось 🤪 и описание этого процесса займёт столько же времени сколько и настройка.

Если вы хотите увидеть подробное руководство чтобы воспроизвести то же самое у себя дома или просто вам по фану читать — ставьте плюсики, пишите коменты, задавайте вопросы. Всё это будет меня мотивировать как можно скорее запилить вам руководство с картинками, которое даст вам возможность увлекательно провести вечер-другой и статьЖьф гордым селфхостед магом 🧙‍♀️

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

https://github.com/RSS-Bridge/rss-bridge
Конвертер из разных сервисов в RSS.

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

@glader, о, rss для телеграм каналов, каеф)
Наконец-то слеплю несколько каналов в один

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

Оче годная статья! Умеешь заинтриговать)
Так что жду продолжения "How to?". Лично я буду счастлив даже если распишешь не про все сервисы, а часть по типу стриминга музыки и менеджера паролей

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

@Siegmund, спасибо, я старался)
На самом деле 90% это настройка базы типа casaOS или portainer, Caddy, плюс DNS вписать. После этого почти все сервисы в пару кликов ставятся.

Наверное я пару сервисов добавлю в качестве примеров, стриминг музыки будет в их числе)

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

@Siegmund, ну вот по how to я тут залинкую уже хороший мануал что лежит в закладках: "Домашнаяя медиатека"
https://vas3k.club/post/704

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

Иногда частному лицу не могут выдать белый айпи (Как у моего провайдера)

Меня спас Cloudflare (https://developers.cloudflare.com/cloudflare-one/)

  • Через него смог повесить авторизацию на сабдомены где у меня крутится облачный vscode
  Развернуть 1 комментарий

@lamprof, даже не предполагал что это может быть проблемой, а чем мотивируют такое решение? Я правильно понимаю что дело было в Швеции?

Спасибо за рекомендацию, не знал что Cloudflare и такой сервис тоже предоставляют. У них конечно количество сервисов за бесплатно просто поразительное.

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

@grbit, Не сильно копал в причины, но тут немного нестандартная схема подключения интернета :D

В РФ, я помню, что фича с белым айпишником была платная у некоторых провайдеров, так что возможно это даже сэкономит деньги, хотя идет и в разрез с желанием абсолютно всё селфхостить

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

Думаю экономят пул адресов, за одним серым IP могут несколько клиентов сидеть, используя NAT.
В РФ точно есть такие провайдеры, Вастрик про Германию тоже вроде такое писал)

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

@lamprof, поддерживаю Cloudflare Tunnels.
Недавно столкнулся с DDoS-ом моего домашнего сервера, и Cloudflare отлично меня выручил: я просто закрыл 80 и 443 порт, а весь веб-трафик пустил через туннель. И тоже прикрыл два сабдомена авторизацией (торрентокачалку и интерфейс с ключами для wireguard)

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

Отличный пост, мой домашний сервер теперь ждет очередная переделка)
Сейчас это огрызок старого ноутбука, без крышки с экраном и некоторых других частей. На нем крутится ubuntu server, на котором крутятся nextcloud как облако с функциями бэкапа, qbittorent и samba. Последняя - для того что бы скачанные фильмы смотреть с яндекс телека.
Конфигурация так себе. Но такова она стала после нескольких итераций "быстро сделать только что бы работало".
Некоторое время часть функций была на rpi 3b+ с воткнутым usb-hdd, но в ней стали помирать sd-карты после перезагрузок.

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

@sevolord, попробуешь Portainer? =)
Я бы послушал про чужой опыт из первых рук.

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

@grbit, с удовольствием, планирую в ближайшие выходные этим заняться

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

@grbit, Portainer на мой вкус слишком тяжелый и придется выбирать либо он, либо ручками docker compose. Есть легковесный dockge, который просто веб морда для compose https://github.com/louislam/dockge

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

@vnkr, тяжёлый? А что в твоём понимании тяжёлый?

dockge явно выглядит минималистично, нравится) Но у меня пока ни до одного ни до друрого руки не дошли

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

@grbit, под тяжёлым имел ввиду интерфейс и ненужные для селфхостера фичи.

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

@grbit, юзаю портейнер с самого начала (с лета прошлого года), вполне норм решение. Плюс Ansible для воспроизводимости сетапа

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

@grbit, оказалось что для моих нужд Portainer слишком много (как и casaOS ранее). casaOS мне кажется даже лучше по внешнему функционалу для неискушенного пользователя, коим я и являюсь.

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

Домашний интернет с публичным (белым) IP. Скорее всего у вас он уже есть, очень многие провайдеры дают его просто так.

Сразу +миллион проблем с тем, что вас будут пытаться взломать все, кому не лень. Не надо вам белого айпи, wireguard/headscale/tailscale/любого другого впн во внутреннюю сеть более чем достаточно.

Железо

TinyPC вроде Lenovo ThinkCentre стоят на ибее от 50 евро, но не умеют в диски (некуда их втыкать и питать), можно взять формфактор побольше: SFF (small form factor) офисные PC, вроде Fujitsu Esprimo или HP EliteDesk. В них уже можно засунуть 2-4 дополнительных диска, а если попадётся с приличным процом, он даже фоновые джобы по генерации превьюшек для Immich будет пережёвывать довольно быстро, цена вопроса — 50-150 евро на том же ибее


Про возврат данных под свой контроль: бесстыдно прорекламирую свой dawarich, как альтернативу трекеру истории геоперемещений (вместо гугл таймлайна): https://github.com/Freika/dawarich и залинкую свой же пост про Immich, как альтернативу гугл фотос: https://vas3k.club/post/20058/

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

@Frey,

Сразу +миллион проблем с тем, что вас будут пытаться взломать все, кому не лень

Это интернет детка) Я же хочу чтобы я мог песенку со стриминга или альбом пошарить с другом. Не заставлять же мне его в свой wireguard идьи? Опять же, многим просто по дефолту белый IP дают, живут же как-то.

Спасибо за советы по железу. Для меня здоровый офисный писюк всё же многовато электричества ест. Опять же, я лучше старый ноут с толком использую, чем деньги на доп железку потрачу.

Трекер перемещений это тема) Я как раз планирую что-то такое.

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

@grbit, главное, чтобы возможность пошарить песенку стоила потенциальных рисков :)

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

@Frey, о каких мы всё же рисках говорим? У меня и так роутер наружу, точно так же у моих соседей и наверное у половины страны. У меня складывается впечатление, что с твоей точки зрения это чрезвычайно опасная конфигурация. Можешь меня поправить или раскрыть мысль и рассказать почему ты считаешь что это очень опасно?

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

@grbit, присоединяюсь к вопросу)
Я несколько лет жил с белым IP-шником и Keenetic Giga, у которого в файерволе было прописано подключения на какие порты снаружи куда форвардить (все остальные дропались) и стояла галка «подключаться к админке можно только из внутренней сети» — от взломов не страдал.

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

@grbit, ну смотри, предположим, мы селфхостим фотки и документы, потому что не хотим платить злым гуглоэплооблакам. Чувствительные данные, утекать такие очень не хочется. Но при этом мы селфхостим их наружу, с белым айпишником, в который постучаться может кто угодно, включая ботнет из 100500 китайских вайфай розеток. И селфхостим связкой софта, который не факт что обновляется и к которому можно подобраться с разных сторон: со стороны роутера (они вообще не любят секьюрити обновления как вид), со стороны ОС сервера, со стороны файрволла, со стороны случайно торчащей наружу без пароля БД, со стороны реверс-прокси, со стороны, в конце концов, самой софтины, которая экспозит фотки и документы в браузер.

В общем, я выбираю tailscale или cloudflare tunnel, мне экспертом в безопасности всего перечисленного становиться немного не с руки

UPD: добавлю сюда описание того, как я сам наладил доступ извне в свою домашнюю сетку с помощью Tailscale, Caddy(+SSL от Cloudflare) без белого айпишника: https://frey.today/homelab-with-tailscale-docker-caddy-ssl-cloudflare/

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

@Frey, спасибо за подробный ответ! Опасности в целом известные, хоть я и далёк от реальной картины.

Я обычно оч сильно переживаю в тот момент когда какую-нибудь сырую фигню на php хостю. Надеюсь на Cloudlfare который это всё прикрывает. По хорошему конечно нормальную изоляцию бы этих php поделий, но тогда ведь нельзя будет удобно в докере через GUI запускать. А в остальном я стараюсь Go использовать, там отличные практики в плане безопасности, да и со стороны хакеров не такой богатый опыт взлома.

Интересно, portainer умеет запускать контейнеры от выбранного юзера? Если да, то это хороший аргумент чтобы на него переключиться. Всё же доп слой изоляции на уровне ОС будет приятно иметь.

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

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

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

У tailscale, кстати, для целей открытия сервисов наружу есть Tailscale Funnel. Сам использую его для Immich.

https://tailscale.com/kb/1223/funnel

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

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

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

@Frey,

Сразу +миллион проблем с тем, что вас будут пытаться взломать все, кому не лень. Не надо вам белого айпи, wireguard/headscale/tailscale/любого другого впн во внутреннюю сеть более чем достаточно.

Но если все же хочется белый айпишник, можно еще взять дешевый VPS, туда поставить тот же Wireguard/OpenVPN. И только этому VPS дать доступ к своей сети. Таким образом можно контролировать что явно открыто (какие приложения на каких портах прокинуты через впн) и нет прямого доступа к устройсву с доступом к локальную сеть и белый айпи ведет на VPS а не на конкретно ваше устройство. Но при этом есть белый айпишник на котором можно делится не сенситив данными.

Конечно, при взломе VPS появляется какой-никакой доступ к VPN ноду в локальной сети. Но это все равно лучше чем роутет с открытым айпишником при взломе которого можно попасть в скорее всего незащищенную локальную сеть.

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

@Frey,

Сразу +миллион проблем с тем, что вас будут пытаться взломать все, кому не лень. Не надо вам белого айпи, wireguard/headscale/tailscale/любого другого впн во внутреннюю сеть более чем достаточно.

Можешь подробнее рассказать? Как я смогу к VPN серверу внутри своей домашней сети подключиться без публичного адреса?
Сейчас в голове такой сетап:

  • DDNS для домашнего сервака
  • На домашнем серваке открыть порты только для VPN и SSH (на всякий случай)
  • Снаружи сети подключаться к VPN по домену который мне выдаст DDNS провайдер.

Как можно лучше?

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

@aigoncharov, Tailscale позволяет сделать виртуальную сетку без лишних заморочек, почитай по ссылке, может видео посмотри, вся настройка занимает типа 5 минут. Его можно использовать как альтернативу DDNS. Открывать порты — плохая идея, я описал выше почему.

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

@Frey, Спасибо!
В итоге отлично завелась такая связка:

  • Tailscale для создания приватной сети
  • dnsmasq на домашнем серваке для того, чтобы можно было к локальным сервисам в докере по поддомену обращаться
  • caddy как reverse proxy, он же генерит SSL сертификаты от Let's Encrypt автоматом
  Развернуть 1 комментарий
  Развернуть 1 комментарий

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

  • https://www.audiobookshelf.org/ библиотека аудиокниг. раньше приходилось скачивать книжку, закидывать на телефон и слушать только с него. Теперь я раз в полгода могу потратить пару часов, скачать десятки книжек, они автоматически появляются в телефоне и еще везде где установлен ABS + можно через веб интерфейс. рекомендую
  • https://archivebox.io/ иногда хочется сохранить веб страницу со всеми медиа файлами, чтобы точно знать, что интернет ее не потеряет
  • https://changedetection.io/ чтобы отслеживать изменения на любых страницах, легко можно автоматизировать
  • https://docs.paperless-ngx.com/ софтина для хранения и сортирвки бумажных документов в диджитал формате. встроенный OCR, удобный поиск, мобильные приложения.
  • https://stirlingtools.com/ тулзы для работы с пдф, нужны раз в год, но не нужно гуглить "pdf remove page online" и загружать свои доки непонятно кому на обработку.

полные списки можно посмотреть например тут https://github.com/awesome-selfhosted/awesome-selfhosted и тут https://mariushosting.com/docker/

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

@andrejs, отличная подборка! Мне прям почти каждое в тему.
Paperless в очереди, давно хотел попробовать, аудиокниги просто как папка в syncthing, всё равно слушаю только с телефона, остальные штуки просто очень хотелось бы иметь.

А списки типа awesome-selfhosted такие гигантские что я уже на моменте открытия такой "пойду лучше книжку почитаю")

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

@grbit, мне нравится в один клик делать bookmarks при прослушивании и потом иногда возвращаться на лаптопе и делать заметку в obsidian. а если и не возвращаюсь, то не беда, места полно, книжки удалять незачем, bookmarks останутся пока дышат диски. наверное, это все можно и через syncthing+плеер, просто у меня раньше ни того, ни того не было. а скачивать книги не по одной, а батчами (да хоть сотнями) - огонь!

чего мне пока не хватает, так это self-hosted obsidian в вебе. есть вроде репо с доккером, но какой-то он кривой пока что, как будто не нужно никому, а это странно.

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

@andrejs, с закладками оч классно звучит.

А что обсидиан в вебе даёт по сравнению с вариантом просто папку общую через syncthing сделать? Что там ещё есть?

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

@grbit, ничего вроде не даёт, просто иногда хочется зайти с рабочего компа, например, а устанавливать и тем более синхронизировать файлы не хочется.

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

статья отличная, но можно добавить про почти-готовые решения от Synology и QNAP. Это NAS, а не сервера в широком смысле, но задачи self-hosting они вполне могут выполнять и отличный выход, для тех, кто не хочет настраивать, а хочет установить все по клику. Стоят подороже, чем старый разбитый лаптоп, но зато готовое решение с понятным UI и крупными онлайн-сообществами.

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

@andrejs, Synology и QNAP наверное очень подходят тем кто хочет отделаться малой кровью и кому нужно просто пара приложенек. Спасибо что о них упомнянул, но я не вижу смысла писать о них в статье. Всё что я могу написать это "ну вот есть такая штука, готовить я её не умею, и вообще ничего о неё не знаю".
Как будто коменты самое подходящее для этого место)

P.S. Вообще, первая мысль у меня была что "это противоречит самой идее, ведь тогда я просто выбираю другой вендор лок". Но чуть погуглив я увидел что у Synology весь стек опенсорсный https://xpenology.org/
Действительно, звучит многообещающе. Но пробовать я это конечно не буду) Мне в консоли комфортнее чем в GUI, я по сути удобный и понятный интфейс меняю на какие-то непонятные кнопочки.

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

NAS типа Synology DS224+ стоит менее 400$, умеет в Docker и виртуалки, создан для работы с дисками, предельно энергоэффективен, надёжен как автомат Калашникова. Не понимаю, зачем так мучаться с каким-то мусором в качестве железа...

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

@akr0n, в целом я уже на цифре 400 как-то охладел) А когда прочитал про "мучаться с каким-то мусором в качестве железа" вообще модератора позвать захотелось. Чего-то это ты мои железяки мусором называешь? Всё прекрасно работает, аптайм больше года, за что так грубо-то?

Хочется сказать какой Synology замечательный - поделись опытом, напиши развернутый комент, может и до поста дойдёт.

предельно энергоэффективен

На сайте пишут 4.41W в моменте когда HDD отключены, 14.69W в работе. Это как обычный ноутбук. У меня вот в шкафу лежит старый portege X30-f, он в бездействии с загруженной системой меньше 3 ватт ест. Где тут предельно-то? Если в суть в предельно, то берите RaspberryPi, он вообще милливаты в простое есть будет.

Я нигде не говорил что старый ноут это ЛУЧШЕЕ™ решение. Это самое дешёвое решение, которое к тому же избавит рабочую железку от пути на свалку. Если хочется платить деньги за готовое решение - платите на здоровье, статья вообще не про это.

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

@grbit, Да и я не говорил, что лучше. Каждому свое. Кто-то тратит деньги на готовое, кто-то тратит свое время на подобные хобби. Но надёжность Вашего решения уж точно ниже, ввиду выбора железа.

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

@akr0n, не у всех семейный бюджет позволяет 40000 рублей на сервер потратить, а ненужный ноут, с необходимой производительностью, бывает просто валяется в шкафу на расстоянии вытянутой руки. Не говорю про Авито, где иногда весьма интересные машинки практически за бесценок отдают)

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

@evgandr, Платить за Вастрик 2к в год позволяет, а вложить примерно такую же сумму ежегодно за 10 лет эксплуатации хорошего NAS - нет :) Никому ничего не навязываю, ок)

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

@akr0n, ну да, потому что трата 2К рублей за год легка — вот они в тумбочке лежат, а 40К как ни крутись надо копить несколько месяцев.

Можно конечно быстро накопить если отказаться от:

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

Но тут встаёт вопрос — а зачем мне домашний сервер не из половинки старого ноутбука, если я лежу в дурке или в гастроэнтерологии?))

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

@akr0n, Кек, был у меня один синолоджи на 2 диска. Да, приятно, что все из коробки, но:

  1. Через 1.5 года начал умирать нижний диск, так как охлаждение там просто отстой был, а для дисков это важно.
  2. Ограничение ПО по времени обновления.
  3. Невозможность апгрейда железа.
  4. Стоимость за это все от 20к даже сейчас. И это без дисков.

Так что синолоджи такое себе... Чисто от головной боли и лени)

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

@pandych, у меня был DS114 с SSD отработал как часы 9 лет до недавнего времени. Устарел да, но десяток лет претензий не было. HDD в NAS греются, шумят, менее надёжны в итоге из-за движущихся частей.
У кого-то лень, а кто-то просто не может себе позволить потратить десятки и сотни часов своего свободного времени на колхозинг всего, что есть из коробки в готовом решении.

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

@akr0n, согласен с автором и его ответом.

PS: В целом, автор может и удалить конкретно комментарий — ничего полезного он не несет.

PPS пример хорошего коментария с похожим смыслом тут: https://vas3k.club/post/23705/#comment-f586888f-2eb6-4478-ab1a-6ce97d8cfc97

И вообще, эти NAS просто не идут ни в какое сравнение по мощности и функционалу с тем, что здесь описано. Просто очень лень описывать, сколько там было проблем, если пытаешься сделать из нее что-то за рамками проекта «просто файловая помойка».

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

Мне как-то домашний IP светить сильно не хотелось, поэтому схема такая: домашний сервер смотрит в интернет через Wireguard-туннель к VPS'ке, и всем видет исключительно IP VPS'ке. VPS'ка стоит 5 баксов в месяц (а если бы не заморачивался с поиском провайдера, дающего реальную анонимность, то и в 1.5-2 можно было уложиться), и она же используется в качестве VPN сервера для доступа в интернет семьи и друзей.
Ну и не надо беспокоиться о белизне домашнего IP и всяких там dynamic DNS.

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

@Som, какой провайдер в 2024 дает реальную анонимность?

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

@devpalm, у меня Incognet. Никаких данных про меня они не спрашивали, плачу криптой. А вообще ещё здесь можно глянуть https://kycnot.me/?t=service&q=vps

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

@Som, спасибо что делишься опытом.
Судя по всему в how-to мне просто необходимо будет рассмотреть такой сетап для повышенной секурности.

Основной вопрос тут это доступность всех сервисов через нормальные DNS адреса. Типа вот хочу я на мобильнике тот же Jellyfin, он у меня доступен по какому-нибудь https://jellyfin.my-domain.com, это будет работать окей. Если же мы переходим в Wireguard то у нас там какой-то IP и порт. При этом большая часть приложений в телефоне хотят SSL сертификаты, некоторая часть из них вообще отказывается по HTTP работать (что очень даже разумно в случае Bitwarden например). Чтобы автоматически выписывать let's encrypt нужно как-то обеспечить доступ по 80/443 портам. Альтернативно свои сертификаты выписывать, но добавлять свои CA на всех устройствах это те ещё пляски с бубнами... В общем, я вижу задачу "сделать удобно" выполнимой, но тут мне уже самому нужно будет руководство о том как это реализовывать)

UPD: Кажется Tailscale got your back covered https://tailscale.com/kb/1153/enabling-https
Возможно я даже раскурю как это попроще настроить, не в одну команду конечно, но и на рокет саенс не тянет.

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

@grbit, Хм, не очень понял проблему. У меня домен привязан к IP'шнику VPS'ки. На ней все соединения на 443 порт перенаправляются в Wireguard на домашний сервер. Скрипт для Let's Encrypt запроса/обновления сертификатов на нём отрабатывает нормально.

У меня проблема другая на самом деле была - как сделать, чтобы внутри домашней локалки при обращении к этому же домену соединение шло напрямую к серверу, а не через заморский Wireguard. Понимаю, что надо поколдовать с локальным DNS и файрволом на самом сервере, но в своё время так и не осилил. А теперь боюсь лишний раз экспериментировать с удалённой настройкой, т. к. весь этот сетап живёт у родителей, доехать до которых лично сейчас непросто в случае чего.

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

@Som, локальный DNS сервер это не очень сложно. Чаще всего локальным DNS сервером выступает роутер, который перенаправляет запросы к провайдеру. В большинстве случаев в него можно добавить статические записи вида: mysuperdomain.com - 192.168.1.1 Это не очень опасно. В крайнем случае подключишься по IP и уберешь.

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

@Som, я предположил что у тебя из внешки без подключения по wireguard невозможно получить досуп к внутренним сервисам, т.е. Let's Encrypt например не сработает нормально.

А локальный DNS действительно оказался делом не хитрым. Собственно после того как я его поднял, мне только в роутере осталось прописать чтоб он всем раздавал DNS сервер с моего ноута в шкафу. А там я уже сделал что-то типа *.mydomain.com 192.168.2.200 и всё, теперь все запросы на эти домены идут через локальную сеть.

Ну и как @Bonarahma заметил, часто можно просто руками в роутере статические записи добавить.

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

В тему готовы решений, правда софтверных - мой путь в селф-хостинг начался (и пока в основном дальше и не двигался) с Yunohost. Очень понравился тем, что с одной стороны имеет очень низкий порог вхождения - если повезёт, можно и в консоль ни разу не зайти, с другой - реально стимулирует плавно разбираться во внутренностях системы.

Набор собранных для него приложений конечно маловат (хотя всё, что я хотел, нашёл), но ничто не мешает накатывать сторонние, минимально интегрировав их во фреймворк через метаприложение-прослойку.

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

Очень крутая подборка! Спасибо за подробный рассказ.

Я для этих целей на Амазоне купил микрокомпухтер с ноутбучным железом. Все важное для меня спрятано в tailscale, то, что должно торчать наружу (Vaultwarden, например) баллансируется через Caddy в tailsclae, то есть домен смотрит на DO машинку, а та через tailsclae домой.

На всех девайсах у меня стоит tailsclae, поэтому по масимуму все прячу в него и получаю доступ через Magic DNS, а то, что надо шарить с друзьями или иметь всегда доступным с любой машины через баллансер. Кажется чуть более безопасным + если будет восстание ботов, я просто затушу DO машину и продолжу пользоваться всем через tailscale.

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

Огромное спасибо за Navidrome, я рот его наоборот с этими форками subsonic древними, это выглядит хорошим решением для стриминга той пачки аудио, что есть.

Касаемо доменов и необходимости белого айпи - с ним и проще, и геморнее. Геморнее - нужен в целом кто-то типа opnsense/pfsense чтобы туева хуча ботов-кроулеров не пёрлось к тебе в порты. Проще - у тебя белый айпишник, а не cloudflare-tunnel с условным duckdns чтобы стучать к своим сервисам. Было оба варианта, в целом шило на мыло.

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

@mighty_conrad, Navidrome мне нравится. Самый большой огрех что я пока заметил - обложку альбома не подгрузил и очень долго новые треки находил.

На счёт доменов, у меня сейчас оба варианта, duckdns указывает на IP чтобы ssh/wireguard/etc работали, а домен с сервисами доступен через clouflare который постоянно проверяет "не робот ли ты часом".

Я ради интереса включал как-то логи Caddy посмотреть с каких IP и как много ко мне стучится всякое. В итоге там реально 99% это мои IP. Возможно секрет в том что cert и DNS у меня с wildcard и под-домены на которых у меня все сервисы хоть немного скрыты, а на основном домене нет ничего совсем, только robots.txt с запретом сканить для порядочных ботов типа гугла.

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

Спасибо за офигенный пост!

NextCloud поставил родственникам, надо бы на OwnCloud поменять, но руки не доходят.

Можешь объяснить почему такие планы? По моему ощущению как раз Nextcloud отфоркался от корпоратнувшегося ownCloud, пользуюсь им и переходить на ownCloud мысли никогда не было.

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

@lyyn, это довольно интересная история. Действительно ownCloud был признан сообщество "загнивающим" и они форкнулись в nextCloud. В общем-то, ownCloud был просто никаким довольно продолжительное время.

Но недавно случилось прекрасное: ownCloud решили переписать всё на Go https://github.com/owncloud/ocis
При этом у них есть полностью открытый клиент https://f-droid.org/packages/com.owncloud.android/

Объективно это будет значительно более энергоэффективное и оптимизированное решение, скорее всего оно будет ещё и более секурным, субъективно мне будет проще там что-нибудь допилить и разобраться как что работает.

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

@grbit, Ммм, крайне интересно. Надо почитать кто там сейчас и зачем.
Кажется с Go будет потруднее с расширениями, коих целая куча на Nextcloud, хотя возможно и нет.
И Nextcloud там тоже на месте не стоит, там во всю добавляют какие-то локальные LLMки, как по мне звучит интересно.

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

@grbit, прочитал коммент и подумал, что надо попробовать. Почитал доки по установке (хотел в докере запустить) и вспомнил почему не использую их. Как-то все через одно место у них всегда.

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

@vnkr, ага, вот поэтому и у меня пока руки не дошли.
Справедливости ради, не так много сервисов меют хорошую доку по конфигу через env variables докера. А в некоторых дока есть, но по факту оно не работает)

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

@grbit, ну у ОК есть даже примеры компоуз файлов в гитхабе. Осталось только описать что они поднимают и как :)
Часто у linuxserver.io есть готовые образы и конфиги, но не в этом случае.

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

Спасибо! Давно собирался-собирался, и этот пост был последним нужным пенделем, чтобы собрать свой sffpc

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

@aigoncharov, класс!
Если вдруг успею написать до того как ты начнёшь (пока я думаю где-то в июне сесть), то могу я тебя задействовать как бета-тестера?) Или может если начн1шь раньше - буду рад помочь чем-нибудь, пиши в личку в телегу если интересно.

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

@grbit, конечно! Буду только рад. Словимся в телеге

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

Если таки понадобится Gitea в будущем, обрати внимание на community fork - https://forgejo.org Они скоро добавят федерацию, взаимодействовать с чужими репозиториями с других инстансов станет веселее.

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

@forestwind, damn good news!
Вот федерация это как раз то чего не хватало в gitea! Этож нормальное комьюнити теперь будет не просто файлохранилка для кода. Можно будет форки себе в инстанс делать. Каеф.

Я как раз не ставил потому что "ну зачем мне у себя хранить? я хочу чтоб мне на гитхабе звёздочки ставили".

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

@forestwind, прикоьлно те этот форк быстрее развивается?
вот у меня вопрос - там можно както настроить его просто зерклаом моего github/gitlab акаунта?

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

@skywinder, Да, зеркало сделать можно. У некоторых FOSS проектов на Codeberg (флагманский инстанс Forgejo) как раз зеркало с Гитхаба идёт. Насчёт Гитлаба точно не знаю.

Я не слежу за самой Гитеей больше, так что не могу объективно сравнить скорость развития. Комьюнити у Forgejo очень активное, и есть финансирование. Как писали выше, федерация самая главная доп.фича, которая в принципе создаёт мотивацию людям хостить свои инстансы и при этом взаимодействовать со всеми остальными в экосистеме. Ещё там есть CI.

  Развернуть 1 комментарий
Павел Соловьев Computer vision research engineer 7 мая в 09:13

Пост отличный, но мне кажется что совсем не затронута тема безопасности данных. Если вы складываете к себе на сервер фотографии и хостите менеджер паролей в случае проблем с диском можно потерять довольно дорогую информацию (во всех смыслах). И хотя бы использование чего-то типа RAID (не 0) необходимо.

Для своего сервера для sell-host приложений и бекапов, я остановился на TrueNAS scale, а раньше сидел на TrueNAS core (aka FreeNAS) . TrueNas работает с ZFS эта файловая система умеет в очень удобные штуки типа снепшотов и software RAID из коробки, а TrueNas имеет удобный UI что бы все это использовать. Можно даже настроить регулярный бекап снепшотов на другой сервер, тогда даже физическое уничтожение основного сервера не приведет к потере данных (но это конечно экстремальный сценарий).

Для своего сервера я использую RAIDZ2 с 4мя дисками (еще ECC память, но кажется RAID сильно важнее). В будущем планирую настроить снепшоты на другой бекап сервак без активных приложений в другой локации. Но этот подход предполагает что содержимое этого сервера будет со мной и через несколько десятков лет. Это звучит пафосно, но часть данных у меня уже проживают свой второй десяток (те что пережили битые sd карты, сломанные харды и поцарапанные DVD/CD диски).

Из других плюсов TrueNas, это возможность поставить одной кнопкой популярные приложения(типа immich/plex/jellyfin и.т.д.). Так же можно подключить сторонний источник приложений TrueCharts, там их еще больше.

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

@palsol, да, я эту тему даже не упомянул, каюсь. Спасибо тебе за дополнения.

Я честно raid недолюбливаю, мне оно как-то дороговато кажется, да и точки отказа общие. Типа любые физ проблемы с сервером типа молнии или потопа и никакой рейд уже не поможет особо.

Мне проще важные данные бэкапить, с чем просто замечательно справляется syncthing. БД vaultwarden резервная у меня даже на мобильник синкается (благо она шифрованная by design), крупные вещи типа конфигов докера и другого тоже уже на лэптопы идут, там пара сотен гигов. Ну фоточки и на мобильнике, и на сервере, и на лэптопе, очень даж удобно и надёжно.

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

@grbit, Ты описываешь независимые события, устранение точки отказа в дисках снижает общую вероятность что данные потеряются. Про сенпшоты и отдельный сервер я тоже упомянул. (Но возможно это реально оверкилл когда данных не так много и их можно синкать полностью между всеми девайсами).

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

@grbit, RAID, конечно, можно недолюбливать, но не всегда речь только о защите данных. Это один из способов расширить сторадж, не разбивая свои данные на разные диски вручную.

Впрочем, есть и альтернативные варианты.
Рейд у того же https://unraid.net/ работает на файловом, а не блочном уровне (если добавить диск для контроля четности).

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

@palsol, ZFS ставится без проблем и на убунту и на дебиане, сам держу всё в пуле на raidz1-0. Блин, короче придётся свой пост писать про свой сервак :)

@grbit я бы ещё добавил Homelab в коллекционные теги поста

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

@Frey, Да ставится конечно, я просто решил уже слегка описать свой путь и мотивацию, может кто-то захочет так.) Целый пост мне писать лень.

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

@palsol, https://www.raidisnotabackup.com/
Шучу, конечно. Все мы это понимаем.

Хотел бы добавить, что ECC память достаточно важна для ZFS, на эту тему было очень много топиков на реддитах и прочих форумах, включая форум трунаса.

Cубъективно, RAIDZ2 с 4мя дисками не имеет смысла. Отказ двух дисков сразу маловероятен в домашнем использовании, плюс вы, по сути, потеряли емкость половины массива. Иными словами, RAID10 дал бы столько же места, но мог бы быть (в теории) быстрее и имел бы возможность (условную) расширения, чего до сих пор, емнип, не позволяет TrueNAS/ZFS на RAIDz1/z2.

А еще у меня личный негативный опыт с приложениями в TrueNAS, особенно с коммунити TrueCharts. Я бы избегал их до последнего. Под капотом Kubernetes, который ломался от каждого чиха. То отвалится какое-то приложение (потому что кто-то из девелоперов апгрейднул чарт), то сломаются все разом после апгрейда самого TrueNAS Scale, то не запустятся по какой-нибудь странной причине после ребута сервака.
TrueCharts долго не поддерживали последний релиз Scale, а с выходом 24.04 наоборот отказались от поддержки ранних версий (и их можно понять).
Со всем этим, конечно, можно жить, но иногда не очень хочется.

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

@nordkisa,
Соблазн выбрать raid10 был большой, но я решил что верю в то что 2 диска могут умереть, а скорость мне не так важна(в моих юзкейсах arc и l2arc хорошо работают). Я использую 22тб диски говорят что с ними все менее надежно.

Мой план в будущем это задеградировать raidz2 в raidz1, и заюзать освободившийся диск в бекап хранилище. (Вроде как есть способы это сделать)

Про Trucharts тоже прихожу к мысли что не надо на них сильно полагаться, а что с приложениями TrueNAS не так?

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

@palsol, в десятом рейде, в принципе, тоже (условно) два диска может умереть :)

Насколько я помню, по статистике нет четкой зависимости количества сдохших дисков от их объема.
У меня 22-терабайтники тоже есть - все HC570. один дома для бакапов с основного массива, 4 штуки в десятом рейде на тестовом серваке, ни к одному вопросов нет пока, холодные, тихие, довольно быстрые.
Еще 8 штук ждут своего места в NAS'e под бакапы.

Субъективно, вопрос выбора RAID10 vs RAID5 vs RAID6 чаще всего упирается в жадность и в скорость ребилда при проблемах.

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

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

Вот как ты во время, я как раз после очередного переезда начал об этом задумываться. Но я больше железячник, поэтому пару ноутбуков и пара плат у меня под рукой есть, а вот как эту зрень правильно настроить я точно не знаю, поэтому если ты напишеь продолжения с Хау ту - это будет круто! Я и так узнал много нового софта для сервера)) (кроме разве что Линукса, с него и пишу)))

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

А почему хочешь пересесть на OwnCloud с NextCloud? Там же плагинов меньше.

Торгану своим конфигом: https://github.com/shaman007/home-k3s

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

@AndreyBondarenko, OwnCloud переписали на Go. Мне это ближе и я это считаю более безопасным. Плагины мне особо не нужны, быстрого и надёжного облака мне хватит.

Вот это конфиг... Я конечно слушал что люде делают кубер кластеры на малинках, но in-person впервые с таким человеком общаюсь)

Minecraft for resource consumption

Лол)

Bitwarden self-hosted. Beware of extreme memory usage!

Кстати Vaultwarden у меня отлично работает, стабильно и предсказуемо. Я вот правда пошёл проверить потребление ресурсов и слегка прифигел с того что маленький бинарник на Rust отъел 128мб. После рестарта стало 6мб. Течёт похоже хвалёный Rust)

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

@grbit,

OwnCloud переписали на Go

Это хорошо хотя бы потому, что на PHP он такой медленный, что просто пиздец какой-то!

делают кубер кластеры на малинках

тут двойная польза: изучить кубер и как контейнеризация должна работать + я могу полностью все восстановить за 2-3 часа из бекапа при любой катастрофе.

Течёт похоже хвалёный Rust

Скорее всего агрессивно кеширует.

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

@AndreyBondarenko,

Скорее всего агрессивно кеширует.

Хз-хз, чего там кэшировать-то на 120 мегабайт?
Да и в документации ничего об этом
https://github.com/dani-garcia/vaultwarden/wiki/Configuration-overview
https://rocket.rs/guide/v0.5/configuration

В конфиг файле только кэширование иконок вижу https://github.com/dani-garcia/vaultwarden/blob/main/src/config.rs

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

@AndreyBondarenko, А зачем менять traefik на nginx+certmnager?

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

@nett00n, у меня не получилось сделать так, чтобы Traefik делал безусловный редирект с http на https.

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

@AndreyBondarenko,

вот эти две строки

      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.web.http.redirections.entrypoint.to=websecure

в конфиге:

---
version: "3"
services:
  app:
    command:
      - --api.insecure=true
      - --certificatesResolvers.letsencrypt-cloudflare-dns-challenge.acme.dnschallenge.provider=cloudflare
      - --certificatesResolvers.letsencrypt-cloudflare-dns-challenge.acme.dnschallenge=true
      - --certificatesResolvers.letsencrypt-cloudflare-dns-challenge.acme.email=${CLOUDFLARE_EMAIL}
      - --certificatesResolvers.letsencrypt-cloudflare-dns-challenge.acme.storage=/letsencrypt/acme.json
      - --certificatesResolvers.letsencrypt-http-challenge.acme.email=${CLOUDFLARE_EMAIL}
      - --certificatesResolvers.letsencrypt-http-challenge.acme.httpChallenge.entryPoint=web
      - --certificatesResolvers.letsencrypt-http-challenge.acme.httpChallenge=true
      - --certificatesResolvers.letsencrypt-http-challenge.acme.storage=/letsencrypt/acme.json
      - --certificatesResolvers.letsencrypt-http-challenge.acme.storage=/letsencrypt/acme.json
      - --certificatesResolvers.letsencrypt-http-challenge.acme.tlsChallenge=true
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.websecure.address=:443
      - --providers.docker.exposedbydefault=false
      - --providers.docker.network=traefik_default
      - --providers.docker=true
    image: "traefik:${TRAEFIK_VERSION:-latest}"
    labels:
      com.centurylinklabs.watchtower.enable: "true"
      traefik.enable: true
      traefik.http.middlewares.basic-auth-global.basicauth.users: $TRAEFIK_DASHBOARD_AUTH
      traefik.http.routers.traefik_https.entrypoints: websecure
      traefik.http.routers.traefik_https.middlewares: basic-auth-global
      traefik.http.routers.traefik_https.rule: Host(`${TRAEFIK_DASHBOARD_HOSTNAME}`)
      traefik.http.routers.traefik_https.service: api@internal
      traefik.http.routers.traefik_https.tls: true
      traefik.http.routers.traefik_https.tls.certresolver: "${TRAEFIK_CHALLENGE_TYPE}"
    logging:
      driver: "json-file"
      options:
        max-file: "3"
        max-size: "1m"
    ports:
      - "80:80"
      # - "8080:8080"
      - "443:443"
    restart: always
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "/data/letsencrypt:/letsencrypt"
    environment:
      CLOUDFLARE_DNS_API_TOKEN: ${CLOUDFLARE_DNS_API_TOKEN}
      CLOUDFLARE_EMAIL: ${CLOUDFLARE_EMAIL}
      TRAEFIK_CHALLENGE_TYPE: ${TRAEFIK_CHALLENGE_TYPE}
      TRAEFIK_DASHBOARD_AUTH: ${TRAEFIK_DASHBOARD_AUTH}
      TRAEFIK_DASHBOARD_HOSTNAME: ${TRAEFIK_DASHBOARD_HOSTNAME}
      TRAEFIK_VERSION: ${TRAEFIK_VERSION}
  Развернуть 1 комментарий

@nett00n, для тех, кто не любит конфиги ручками есть хорошая веб морда для nginx:
https://nginxproxymanager.com/

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

@nett00n, надо будет второй раз к этому снаряду подойти. Правда, у меня в nginx все работает, кроме source IP.

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

@AndreyBondarenko, Я ушел с nginx потому что надоело к нему конфиги писать. Traefik в этом плане как-то проще лично для меня.

  Развернуть 1 комментарий
Pannikinjuli YouTuber, создаю религию 7 мая в 14:11

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

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

@pannikinjuli, очень даже подходит.
Выткнула свой ноут/малинку из сети в старом месте, воткнула в новом, там всё то же самое и работает так же.

Единственное что нужно будет это в роутере поставить port-forwarding, но это правда 5 минут чтобы разобраться куда там в GUI это запихнули, да и всё.

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

@grbit, а если интернет мобильный, это что-то меняет?

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

@pannikinjuli,

  1. Будет МЕДЛЕННО. Зависит от конкретного инета, но даже самое плохое проводнок соединение лучше.
  2. Выше вероятность что твоё устройство будет за провайдерским NAT и придётся дополнительно настраивать какие-нибудь туннели типа того от Cloudflare или на арендованной VPS.
  Развернуть 1 комментарий

@pannikinjuli, делай из своей железяки роутер и тогда перетыкать будешь только аплинк от роутера провайдера. Если использовать туннели от cloudflare или tailscale, то ничего пробрасывать не придется, ибо они сами работают как клиенты для центрального сервера на стороне cloudflare/tailscale.
Затык может быть с Wifi. Либо иметь своё железо, либо использовать роутер от провайдера, отключая там NAT, DHCP, DNS. Не каждая коробка это позволит сделать.

Короче, если хочешь сохранять стабильную сеть при переездах, проще купить свой роутер. Есть компактные коробочки как раз для таких случаев.

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

Люди, не делайте того что написал автор, "астанвитесь"! Я сам начинал с мини-ПК и старых ноутбуков, а закончилось это (или ещё не закончилось) ящиком размером с хорошую микроволновку под завязку набитым жесткими дисками. )))
А если серьезно то "хостю" у себя:

  • Самба-шару для домашнего использования
  • Nextcloud
  • Deluge (торрент-клиент)
  • Torrserver - для просмотра торентов на смарт-тв
  • Plex
  • Home Assistant (умный дом) и всякое что к нему относится (node-red, MQTT итп),
  • Zone minder - видео-наблюдение
  • RustDesk - селфхостед опенсорнсный аналог радмина/тимвьювера

Ну всякое рабочее типа gitlab, dvc итп...

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

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

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

@Bonarahma, интересно почему Deluge, а не qBittorrent?
Я агитировать не буду, сам сравнивал типа лет 7 назад, с тех пор просто всегда qBittorrent везде использую.

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

@grbit, а почему qBottorent, а не Transmission?

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

@vnkr, Transmission очень долгое время не умел качать торренты последовательно. Например если я хочу сразу начать смотретьк какое-нибудь 4к кинцо, qBittorrent может начать его скачивать последовательно, чтобы я смотрел прям счас пока оно ещё не скачалось полностью.

В плане менеджмента торрентов я не уверен что у Transmission есть нужные настройки, типа в нужную папочку положить автоматически, раздавать только до определённого ратио и т.д.

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

@grbit, я на него переходил во времена FreeBSD 4 и переходил с Transmission. Тогда в сравнении он мне показался глотком свежего воздуха. qBittorrent Тогда если и был то я про него не знал. С тех пор к этому вопросу не возвращался - меня всё устраивает.

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

@Bonarahma, а зачем вам растдеск на сервере? А если есть графика, то на Wayland он не работает же, или нет?

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

@aryadovoy, не в том смысле что я сервером через него управляю, а в том что у него есть серверная часть (чтобы NATы пробивать) вот эту серверную часть я у себя на сервере держу.
ps Сам про wayland ничего не скажу, но на сайте растдеска заявлена поддержка в экспериментальном режиме.

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

@Bonarahma,

в эксперементальном режиме

В двух словах про весь мой селфхостинг.

  Развернуть 1 комментарий
Дмитрий Логвиненко Data Engineer и программист странных вещей 8 мая в 16:00

Крутой пост! Спасибо за кучу идей «что бы еще поставить».

Когда-то начинал с дремучего нетбука на Atom N550 под брендом DNS, обвешанного внешними жёсткими в пластмассовых коробках (aka надёргал по всяким углам).

(Если будете плохо себя вести, Дед Мороз принесёт вам его вместо подарка.)

На нём как-то по историческим причинам завёлся https://www.openmediavault.org (это такой Debian со всякими обвесами), шара для фоток, докеры, Plex для мультов детям, торренты — всё как у людей, в общем, и оно даже кое-как работало.

Время шло, зарплата запросы росли, я-таки собрался с духом и собрал себе что-то более похожее на NAS в приличном корпусе и с новыми дисками. И Celeron'ом.

OMV, как и другие сервисы, перетащил с собой. Что сейчас у меня крутится:

  • CouchDB — чтобы работала синхронизация Obsidian без iCloud (на рабочей тачке отключен) и Syncthing (на iPhone не работает).
  • Gitea — синхронизирую скудные гитхабы и не только + раньше, когда упарывался по org-mode использовал его в качестве синкалки.
  • HomeAss (с Zigbee-свистком) — для моей пары розеток с гирляндами, термометров и сигналить, что стиралка докрутилась. Из пушки по воробьям, конечно, но когда-нибудь я разберусь с его настройкой.
  • Immich — смотрелка (для старого и смонтированного в него) и бэкапилка (с мобилок) фоток. Нашёл рекомендацию на неком vas3k.club, попробовал, понравилось. Очень активно пилится, обновляться нужно каждую неделю.
  • Jellyfin (кандидат на удаление) — я честно пытался им воспользоваться им. Но после Plex'a это было мазохизмом, особенно мучения с его попытками сматчить кинцо с медиабазами. В итоге расщедрился еще раз и купил лайфтайм Plex. (Ребята из Plex, деньги за рекламу можете занести в любое удобное время).
  • Miniflux — собиралка и читалка RSS, блеск и нищета. Когда-то пользовался божественным Google Reader, с него съехал на Tiny Tiny RSS, который лагал, выглядел так себе, а создатель хамил в тикетах (не мне). Поиски привели меня к этому минималистичному товарищу, но, наверное, еще продолжаются. Не знаю. Сомнения. Не хватает дерева на десктопе.
  • Nextcloud — потушен, чё-то не разобрался я с ним. В задумке было организовать что-то а-ля Google Drive, чтобы иметь нужные файлики под рукой, но всё руки не дойдут.
  • Organice — онлайн-редактор для org-файлов, с синком через Dropbox. Немножко шакалил файлики, поэтому я его немножко невзлюбил.
  • Plex — ну тут понятно, хостинг для медиафайлов, которые каким-то образом оказались на ваших дисках. Вполне работает и в бесплатном виде.
  • qBittorrent — качать дистрибутивы Ubuntu, зачем же еще.
  • Reproxy — reverse-proxy от Umputun'а, чтобы делать сервисам красивые SSL'ные URL'ы. Умеет доставать инфу из Docker'а.
  • Syncthing — всё понятно, синкать Android было почти шикарно (система иногда его прибивала всё-таки), а за iPhone обидно.
  • Viewtube (кандидат на удаление) — хотел сделать детям white list для YouTube, почему-то выбрал его. Но с возложенными на него обязанностями он не справился (много багов, не совместимых с моими хотелками).

Это только то, что в Docker. Помимо это непосредственно в OMV болтаются сервисы из его репозитория (ничего внешнего на голую систему не ставлю): BorgBackup, File Browser, Locate, NFS, UPS. Ну и сам OMV следит, например, за SMART дисков и температурой присылает алерты в случае чего. Записываю с UPS, когда мигал свет и бодаюсь с энергосетями, ахаха.

RAID1 (ни железный, ни софтверный — в OMV можно натыкать LVM, ZFS, mdadm) делать не стал — ограничился периодическим rsync на соседний диск. Про silent corruption знаю (нужно завести SnapRAID хотя бы на хранение хэшей с периодческой проверкой). Нет, за пределами NAS или дома тоже не бэкаплю.

Из хотелок: проц получше (хз, почему я уцепился за Celeron без кулера), какую-нибудь видюшку, чтобы работал hardware-декодинг в Plex и пошустрее вертелся ML в Immich.

К тому же разыскивается self-hosted-читалка для PDF, DJVU и более книжных форматов с разделением доступа, ну и чтобы выглядела прилично, в т. ч. на мобилке.

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

@dmlogv, про Jellyfin удвою, тоже пытался переехать с Plex, тоже теперь имею lifetime plex.

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

@grbit а в Нидерландах можно безнаказанно хостить торрент клиенты которые будут так же на раздаче стоять?

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

@ryhor, выходит что так. Тут как-то не штрафуют частных лиц. Но формально нельзя, так что на свой страх и риск всё.

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

Прилинкую пост https://vas3k.club/post/2193574/ почему пришел к схд коробочному дому(могу, умею, практикую ceph на 10pb). Спойлер: на работе веселухи хватает и согласен с ограничениями

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

Спасибо за статью, было полезно почитать, особенно про апки.

RaspberyPi и аналоги покатят, но не так удобно (arm вместо x86) и не так мощно/солидно.

это правда)

Для себя нашел ZimaBoard (который х86) в качестве домашнего сервера. Плюс он из коробки идет с CasaOS. Правда цена в 200$ немного кусается, но то уже такое)

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

Спасибо за статью! Интересно было узнать про Caddy, надо будет попробовать...

Для того чтобы ваш Radarr не качал вам camRip из кинотеатра на индийском языке с бенгальскими субтитрами, вы можете настроить систему скоринга для торрентов. Вроде бы простенько, типа отметил качество и всё. Но на деле как-то не оч выходит и приходится много докручивать руками.

Есть коммьюнити гайд по настройке Sonarr, Radarr: Trash-guides. С его помощью можно точнее настроить логику поиска релизов под желаемое качество. Как по мне, документацая довольно запутаная, но есть CLI тула (Recyclarr), которая позволяет импортировать необходимые настройки для этого подхода в полу-автоматическом режиме. Если пару дней поразбираться и поэкспериментировать, результат получается сильно лучше чем Quality Profiles, которые используются из коробки.
Ну, и еще имеет смысл получить доступ к приватным торрент-трекерам, на которых качество релизов, как правило, выше.

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

@StanislauLiamniou, Quality Profiles из коробки просто никакущие. Мне повезло всё нормально без гайдов настроить, но просто по человечески обидно что интерфейс нормальный к этому не приделали. Там ведь по итогу нет никакой высшей математики, всё довольно просто, можно сделать сильно доступнее для пользователей, но пока не доработали.

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

@grbit, это да, не user-friendly experience... Но что поделать, opensource 🤷

  Развернуть 1 комментарий
  • Управление. Не пользуюсь CasaOS/portainer/yacht, а предпочитаю писать docker-compose файлы самостоятельно, так что мой выбор dockge, и то только на этапе прототипирования, потом всё загоняется в ansible playbook.
  • Reverse proxy. Traefik сам менеджит сертификаты, маршруты, достаточно просто повесить пачку флагов на контейнер
  • *Arr downloaders:
    • sonarr (сериалы)
    • radarr (кино)
    • prowlarr (аггрегация торрент-сорцев)
    • bazarr (субтитры
    • скриптик на питоне написанный при помощи chatgpt, который сохраняет список лайкнутой музыки на спотифае и качает при помощи spotdl бэкап коллекции
    • rflood для торрентов
  • *Arr streamers:
  • envlinks и homepage как домашняя страница. Не нравятся оба
  • piHole для нарезания рекламы
  • nextcloud для webdav хранилища, по большей части
  • free-games-claimer (в докере не работает) для пылесосинга игр в GOG и EGS
  • rss-bridge превращает социальные сети в rss
  • https://changedetection.io то же самое, но для всего остального
  • freshrss как ридер rss
  • n8n аналог ifttt
  • vaultwarden паролехранилка, совместимая с протоколом bitwarden
  • MailU да-да, я упоролся и сам храню свою почту
  • uptime-kuma для базового мониторинга
  • yopass patebin для секретов
  • immich свой google-photo
  • castopod для размещения подкаста, который я так и не начал
  Развернуть 1 комментарий

@nett00n, не первый раз встречаю упоминание Ansible. Для чего используется? Поставить докер и то, что не ставится в докер? Казалось бы, если всё в докере, хватит docker compose?

Также вопрос: а как хранятся конфиги? Я-то привык, что конфиги в текстовых файлах и загонять всё в git, но у Home Assistant и всех этих *arr'ов конфигурация через GUI, а хранят они какие-то странные файлы, бинари, базы данных, кишки и все вперемешку. Просто бэкапится? А версии?

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

@aemarkov, Ansible - это про управление серверами и сервисами. Набор текстовых файлов (храним в гит), который описывает желаемое конечное состояние типа:
Сервер на дебиане
Статический айпи
На нем стоит докер
В докере запущены вот эти стэки (через компоуз)
Все пакеты обновлены

Когда это все описано можно прогонять ранбук (файл с инструкциями) периодически чтобы, например, обновить сервак. А можно восстановить конфиг на новом сервере в один заход.
Это имеет смысл только когда серверов много по большому счету.

Бекап содержимого контейнеров и их конфига - это отдельная история.

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

@aemarkov,

  1. Ansible.

    1. В первую очередь я использую его для того, чтоб всё мою окружение было одинаковым. На всех серверах одни и те же пользователи, один и тот же шел, одинаковые конфиги, на всех серверах в authorized_keys лежат все мои публичные ключи, установлены те утилиты, которые мне могут понадобиться
    2. У меня есть ряд stateless сервисов, например, у меня размещены VPN-серверы для моих друзей. Иногда мне нужно, например, быстро перекинуть их в другую страну или поднять новый сервер, для этого я просто указываю, что ещё и на сервере "дельта" надо запустить такой контейнер, прям в конфиг файле, запускаю плэйбук и готово, все тихенькор и незаметно переехали
    3. Может мне надо поднять копию какого-то из сервисов, ну к примеру у меня есть vaultwarden на домене vaultwarden.example.com. Я говорю, что на сервере delta мне тоже он нужен и он автоматически поднимется на vaultwarden.delta.example.com, не ломая при этом существующий
  2. Как хранить конфиги.
    Так как у меня почти всё размещается в докере, то на каждом сервере докер-конфиги размещаются в /opt/stacks, медиафайлы, типа того же кино и сериалов в /media, а все базы данных, конфиги и прочее в /data.
    Потеря первых вообще ни на что не влияет, так как они собираются ансиблом, если я запустил решение стабильно, а остальные штуки можно как угодно бэкапить/синхронизировать в файловойм режиме.
    Версионаирование мне обычно не нужно, но можно решить на уровне файловой системы, типа снэпшотами LVM или ZFS

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

Этот тред был бы неполным без https://awesome-selfhosted.net/

  Развернуть 1 комментарий
Миша Топорков Городитель бэкендов 11 мая в 11:21

Автор, обязательно глянь в сторону Jellyseer - это компаньон-сервис для Jellyfin, который даёт нормальный интерфейс над Sonarr/Radarr чтобы ты и твои друзья могли заказывать фильмы и сериалы

Из классного - можно настроить авторизацию по аккаунтам из Jellyfin и правила для "заказа" контента, то есть можно например настроить для себя авто-согласование, а для друзей - чтобы они заказывали и админ после этого "ОКал"

Я держу Jellyseer+Jellyfin для себя и пары друзей, и это очень удобно - они сами закидывают что хотят посмотреть и оно автоматом качатеся без моего участия

  Развернуть 1 комментарий
Roman Kirillov Гуртовщик мышей и погонщик котов 13 мая в 09:38

Из многого названного только Nextcloud вызывает у меня глубокое внутреннее раздражение. Я пользуюсь им уже лет 5, и каждые пару лет начинается свистопляска с "эта версия end of life, вам нужно установить новую, вероятно с нуля, и нет, на этой версии Debian оно не заведется, потому что версии PHP несовместимы". Разрываюсь между "перенести все на SyncThing и забыть" и "заплатить за Dropbox и забыть".

Проблема с self-hosted не в том, что это надо настроить - а в том, что это надо поддерживать, и если первое - по приколу и интересно, то второе - это неоплачиваемая работа, на которую нет ни времени, ни желания.

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

@sgzmd, согласен на все сто.

Вся надежда на ownCloud, Go в плане деплоя просто сказочный. Просто берёшь бинарник и запускаешь где хочешь.

Надо бы наверное обновить статью как опробую как следует.

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

@grbit, Только настраивать все опять :( и приложение для Андроида у него кондовое

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

большое спасибо за пост, очень вдохновляет (продолжать) пытаться самому в селф-хостинг🫶

вопрос: я делал несколько подходов к тому чтобы поставить приложения через portainer или просто docker-compose, и каждый раз там была тысяча каких-то подводных камней, через которые без знаний этих инструментов у меня продраться не получилось. Со стороны, я представлял себе portainer как такой AppStore с контейнерами, которые можно скачать и они магически начнут работать, только учётку заведи. Вместо этого я час пытался привязать нужные порты и разделы для каждого контейнера, прописать какие-то трёхслойные конфиги в traeffik, и в итоге опять сдался.

что я делаю не так?😁 есть ли какие-то готовые конфиги, которые накатят мне нужные порты на чистую wsl2?

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

@marinegor, Важная делать про WSL2: По-умолчанию, порты опубликованные из WSL2 будут доступны только на ПК с этим WSL.

Кажется, мне надо написать статью "как не бояться docker-compose", потому что я активно использую именно связку docker-compose и traefik.

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

Вы оба (вместе с соавтором) меня опередили, я хотел написать развёрнутый пост про селфхостинг, поскольку занимаюсь этим мозгодрочем когнитивной гимнастикой с 2011 года, ровно когда сподобился арендовать свой первый VPS. Напишу тогда в комментарии развёрнуто, что, как и зачем.

  • FSMQ — самописный менеджер очередей с фронтендом по протоколу HTTP и бэкендом на файловой системе. Не масштабируется, но мне оно и нахер не надо: системные компоненты программировать гораздо проще, когда scale == 1. Особенность FSMQ — любая операция проводится по одноразовым токенам, которые надо запрашивать по известным токенам. Это некоторый оверхед, который, однако, позволяет посылать мессаджи в очередь из небезопасных окружений. Я часто посылал себе уведомления в Telegram по завершении очень долгих бэкапов MySQL в продакшне. Это крайне удобно, до сих пор пользуюсь. В остольном же FSMQ является диспетчером сообщений примерно для всего в моей инфраструктуре: для TODO-листов, для списков "Read Later" и "Wishlist", для отправки ручных метрик в графану. Очень много всякой фоновой фигни отправляется в FSMQ в автоматическом режиме, например healthchecks с домашнего железа.
  • DAFUQ — примитивный сервер blackbox-мониторинга, построенный на принципах Nagios. Это тупая запускалка скриптов по расписанию, если хотите. В момент смены exit code скрипта генерируется событие, которая запускает нотифаер с определёнными переменными окружения. А дальше сообщения отправляются либо в Telegram, либо в каналы Gotify, настроенные по рангу severity. Агент мониторинга работает как часы и за пять лет эксплуатации ни разу не подводил. Я его раскатал вместе с конфигами на все свои тачки. В последнем релизе я добавил возможность relaying, то есть результаты проверки можно форвардить на другие сервера и там уже показывать результаты на дашборде Grafana через встроенный HTTP API. К сожалению в dafuq чаще всего срабатывает алерт, настроенный на API https://alerts.in.ua, сигнализирующий о ракетных атаках в Украине. Я настроил мониторинг на Запорожскую область, во время срабатывания сигналов бросаю все дела и готовлюсь помогать семье чем могу.
  • Gotify — простой сервер push-уведомлений, есть клиент для Android, можно настраивать разные каналы алертов. У меня их два: для Warnings и Criticals, и для OK. На оба канала настроены звуки из Super Mario. Сервер gotify живёт на бесплатном инстансе GCP и доступен даже тогда, когда основная инфраструктура ложится брюхом кверху.
  • Grafana — моя любимая игрушка, в представлении не нуждается. Помимо обычных графиков и дашбордов для мониторинга серверов, у меня есть и куча особенных: дашборд с доморощенной веб-аналитикой всех моих вебсайтов, дашборд с мониторингом состояния моего здоровья, дашборд с расходами по уязвимым статьям, а также дашборд с burndown-chart персонального спринта. Об этом всём можно написать отдельный пост и я как-нибудь соберусь это сделать.
  • Vaultwarden — было выше, однако я использую его не для хранения паролей, а скорее как замену HashiCorp Vault. С помощью некоторой обвязки костылей и консольного клиента я сделал систему получения секретов для всех своих тачек. Даже бэкенд для podman написал, который шифрует секреты контейнеров с помощью уже имеющейся пары ssh-ключей. Тот ещё изврат, особенно для scale == 1, но это была отличная ментальная гимнастика.
  • Podsync — преобразователь каналов и плейлистов на YouTube в настоящие подкаст-фиды. Использую для прослушивания политоты, sci-fi и всратых микстейпов.
  • Drone.io — CI-платформа для всех моих проектов. Жизнь любого селфхостеда в моей инфраструктуре начинается отсюда. У меня даже есть футболка Drone. Ходят слухи, что Harness собирается закатывать эту платформу и переделать её в комбинированный репо-хостинг вроде гитлаба. Случится такое — перейду на Woodpecker CI.
  • Gitea — мой персональный Git-хостинг, где я делаю свои тёмные делишки. Помимо всего прочего, использую его как OIDC-провайдер для аутентификации на своих внутренних сервисах и бета-версиях сайтов.
  • Vouch proxy — а это, собственно, прокладка между NGINX и Gitea для аутентификации. Работает без запинки на двух доменах сразу, жрать не просит.
  • Wikmd — самый простой вики-движок, который я смог найти. Можно писать странички в Markdown, поддерживает синхронизацию через Git. Очень удобно.
  • Kanboard — скажу честно, я очень любил трелло, но после того, как их купил Atlassian, он стал чаще бесить: всё больше фич становилось платными, всё больше попапов вылезало с предложением их купить. Адблок тупо не справлялся. В итоге я плюнул на это всё и перешёл на уродливый, но функциональный Kanboard, который никто и никогда у меня не отберёт. Половина функциональности в моём сетапе реализована через вебхуки. Костыльно, но работает.
  • Radicale — сервер CalDAV и CardDAV. Держу там все свои контакты, календари и тудушки.

и много-много всякой мелкой одноразовой попиздоты, перечеслять которую я просто заебусь. Как-нибудь про всё это напишу, когда настроение будет.

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

@rcmd, жду пост про графану. Все никак не осилю в нее вникнуть, а дашборды люблю.

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

@rcmd, у тебя уже больше похоже на self-development, столько всего самопального накручено.

Будет очень приятно побыть соавтором/рецензентом твои статей и пригласить тебя в соавторы/рецензенты своих. Что скажешь?

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

@rcmd, о, не знал что и ты туда же.

У меня из самопального дашборда красивенькая
https://github.com/AngryJKirk/navigation-dashboard

супер простая тулза для аудита докер портов
https://github.com/AngryJKirk/docker_exposed_ports

дискорд бот для слушанья музыки который я сделал для друзей
https://github.com/AngryJKirk/diskovodik

ну и еще штук 5 телеграм ботов для клуба и друзей

все закрыто Caddy с кастомным сервисом авторизации. Авторизацию очень удобно делать и харденить когда она заточена под единственного пользователя

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

@rcmd, а каким юаем пользуешься для radicale? Я что-то нашел только две древние веб-аппки (inf и agendav), и они мне как-то не нравятся. Календари - одно из последних нерешенных проблем в моём селф-хостинге)

  Развернуть 1 комментарий
Владимир Галанин Переводчик и преподаватель английского 13 мая в 17:41

Огромное спасибо за Radarr, Prowlarr и Sonarr. Очень мощные штуки. И кстати, у кого-нибудь есть инвайт на приватный индексер торрентов?)

  Развернуть 1 комментарий
Иван Кондратьев Backend, PHP-разработчик 13 мая в 19:04

Selfhosted это такой способ косплеить сисадмина.

Я держу всё в докере, в папочке с кучей docker-compose файлов. Управляю этим всем при помощи VSCode подключившись по SSH.

Докину ещё пару сервисов:

  • urBackup - Дико удобное решение для бекапов всего. Умеет бекапить разделы на диске целиком или только выбранные папки. Держит бекапы заданное количество дней. Есть клиенты под Windows и Linux.
  • Frigate - Видеорегистратор для камер с распознаванием объектов и интеграцией в Home Assistant
  • go2rtc - В добавок к frigate - роутинг rtsp потоков, захват видео с usb камеры и воспроизведение этого всего через WebRTC с очень низкой задержкой. В моих тестах с недорогой IP-камерой получалось около 300мс задержка.
  • n8n - Офигенная no-code штука для автоматизации всего. Можно очень мышкой накидать парсер меню доставки еды в Гугл таблицы или сделать уведомление о появлении нового объявления на авито.
  • Plausible - очень простой аналог Google Analytics.

Ещё есть пара сомнительных решений:

  • Виртуалка с OpenWRT как основной роутер. Т.е. у меня буквально кабель от провайдера воткнут в сервер и сетевуха проброшена в виртуалку. А вторая сетевуха воткнута в свитч. Вроде как такое решение работает, но я бы не советовал повторять.
  • Klipper и весь его стек в docker. Это такая прошивка для 3D принтера, которая переносит тяжелые вычисления с микроконтроллера на полноценный компьютер. Только обычно klipper ставят на какой то одноплатник, который живет внутри принтера.
  Развернуть 1 комментарий

@ivanik, интересно про frigate. А у него есть клиент, чтобы на мобилке можно было камеры смотреть?

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

@Bonarahma, Клиента под мобилки нет. Только через браузер. С телефона не очень удобно пользоваться, не очень адаптирован.

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

@ivanik, спасибо. Придётся и дальше сидеть на тёплом LAMPовом ZoneMinder :(

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

А не пробовал Jackett вместо Prowlarr? Я не знал, что есть "официальный" компаньон для Radarr и Sonarr для индексации торрентов. Вот интересно было бы сравнить.

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

@int02h, не даж не слышал.
Я ими в итоге не пользуюсь почти. Редко когда чего-то именно жду, обычно напрямую качаю

  Развернуть 1 комментарий
Айнур Саяпов Фантазер своих идей 16 мая в 07:24

Я из этих кому было просто по кайфу почитать, спасибо

  Развернуть 1 комментарий
Hakim Troyanov Тревел-евангелист 18 мая в 17:31

Автору большое спасибо за прикладную статью.
Комментаторам — за комментарии, в них тоже гора полезного.
Задумался над тем, как применить кое-что к своему сетапу и переколбасить все с айпишников на доменные имена, раскурив, в том числе, наконец и Tailscale

How to в продолжение, конечно, вдохновит еще больше. Сел ждать :)

  Развернуть 1 комментарий
Kirill Snezhko Вращатель Деревьев 20 мая в 17:21

Насчет Fawkes

Там команда авторов написала статью, где показала что "data poisoning" уже не защищает:
DATA POISONING WON’T SAVE YOU FROM FACIAL RECOGNITION

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

@argz, да, увы и не защищало толком, только на короткий промежуток времени. С текущей скоростью развития нейросеток им нужно новые версии каждый месяц выкатывать, при этом старые изображения кто-то должен переобрабатывать.
Строго говоря не секурно, да.

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

@grbit, а так как старые уже давным-давно на чужих серверах, то переобработать не получится :(

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

Очень своевременный пост. В воскресенье приехала pi4.

  • побаловался с pihole решил сравнить с AdGuard. - пока радости не ощущаю, за пару дней pihole блочил 1% от общего трафика что кажется не очень реалистично, ощущение что большая часть девайсов и программ плевали на днс с роутера

  • homebridge порадовал - наконец подружил yeelight лампошку с хоумкитом

  • dockge вжрал 400 оперативы в простое и был выключен до надобности

  • home-assistant помог вытащить ID для yeelight лампы. с apple-tv и homepod дружить не захотел. подвязка девайсов от xiaomi/aqara выглядит пыточно. - был отложен до лучших времен

  • tailscale встал и поехал. remote ssh на pi ходит - уже хорошо.

в планах посмотреть на

осталось непонятно:

  • что поставить для мониторинга?

хочется смотреть красивые графики температуры/использования проца/оперативки за день/неделю, но не хочется чтобы все ресурсы этот мониторинг и выжирал

  • как оптимизировать работу системы? (все в докер / все из докера / алерты на температуру/память?)

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

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

@ptrpl4, Есть мнение что для такого количества задач нужно что-то более серьезное чем Pi. У меня все крутится на домашнем самособранном сервере с i5, 128gb RAM и 8x4TB HDD, и то DNS перенес в облако, потому что pihole/adguard временами подтормаживали всю сеть

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

@sgzmd, есть мысль что дело не в мощности машины, как будто pihole и adguard не должны особо много потреблять и им даже малинки хватить должно...

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

@grbit, Они немного потребляют...в среднем. А вот когда 50 устройств в сети и пиковое использование тогда DNS начинает тормозить всю сеть. Я долго пытался найти где тормоза, и в итоге методом исключения нашел паразита

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

@ptrpl4,

что поставить для мониторинга?

Графана это дефолт солюшн. Я правда хз как по ресурсам. Из самого экономного что я знаю есть telegraf, но ему собранные метрики надо куда-то класть потом.

Про оптимизацию мне не очень понятно какая цель. Звучит как "надо сделать заебись", только не понятно что именно надо сделать заебись.

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

@ptrpl4, По моему опыту Home Assistant очень даже дружит с Homekit. И Homebridge с ним не нужен.

А как ты Aqara добавлял? Я пробовал через Zigbee2MQTT и через родной Aqara Hub как Matter девайсы. В обоих случаях все работает норм.

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

@ptrpl4,

ощущение что большая часть девайсов и программ плевали на днс с роутера

Емнип гугловый QUIC и DNS over TLS, встроенные прямо в прикладу, как раз здорово "помогают" авторам приложений обоити баннерорезки

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

😎

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

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


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