Self Hosting
Около полутора лет я увлекаюсь self-hosting’ом. Эдакий сознательный отказ от пользования сервисами в Интернете в пользу домашних. Своеобразный неолуддизм, местами неудобно, местами жую кактус, но очень нравится.
Причины
- Конфиденциальность. Не то чтобы мне было что скрывать, но и распространять всю информацию о себе сервисам, которые в любой момент в одностороннем порядке поменяют политику конфиденциальности и начнут если и не торговать этой информацией, то использовать её для обучения своей ИИшечки, а потом я буду смотреть на своё, чутка размытое лицо в какой-нибудь рекламе? Вообще не то что я хотел бы. Да и спокойнее как-то, имея хоть какой-то контроль.
- Большая устойчивость к enshittification. Если не обновлять работающее ПО - оно не испортится! Если оно крутится в закрытом контуре и не торчит мордой в Интернет, то устаревшие версии - уже не такая большая проблема. А привычки важнее (потенциального) удобства (для новых пользователей).
- Оно работает без интернета. Мир странный, всё меняется, все друг друга блокируют во все стороны (и страны софт, и софт страны), в публичных реестрах программного обеспечения малварь, включающаяся по GeoIP попадается, угрозы настолько страшными бывают, что аж возбуждаешься и противодействуешь им по полной, ЕВПОЧЯ. А дома всё работает.
- Это весело. Ну, по своему весело. Это как в волге в гараже копаться. Или буханку пересобирать. Или мебель собирать.
Чем пользуюсь
Файлопомойка
Всё так же, SSD на 120гб под систему, RAID1 из двух HDD на 2Тб под долгосрочное хранение и бэкапы. Недавно проапгрейдил до 32гб оперативной памяти, чтобы не думать о ней. Для разворачивания сервисов использую LXC, Docker тащить не хочется как слишком сложную штуку, но в последнее время подумываю о том, что контейнеры уж больно много весят и хотелось бы иметь что-то типа базового образа и файловой системой, которая будет хранить только слепки поверх него.
Свой УЦ на bash
Прям вот по красоте захотелось сделать выдачу сертификатов, корневой в сейфе на флэшке зашифрованный, промежуточные и всё такое. Оказалось сравнительно удобно, у меня не так много устройств, на которые корневой + промежуточный потребовалось добавить, зато теперь везде красивый замочек.
Сервер World of Warcraft Trinity Core
Ради него, собственно, проапгрейдил оперативку с 4 до 32гб. Не то чтобы ему оно сильно нужно было, хватило бы и 8гб, но пусть будет. Недавно меня пробила ностальгия и захотелось в соло побегать по квестам. Сделал хранителя мудрости восточных королевств и Калимдора, дальше начался уже прям сильный дисбаланс для одиночной игры. Я пытался играть без читов и самостоятельно добывать экипировку, без .additem, но дальше некроситета и глубин чёрной горы уже тяжело. Да и в конце ГЧГ боссы уже начинают игнорировать контроль и их тоже пришлось побеждать с читами. И в итоге пока забросил - с читами скучно, без читов тяжело, а пропускать огненные недра не хочется.
Git-хостинг Forgejo
Использую его как эдакую файловую помойку второго уровня, для синхронизации заметок, бэкапа своих наработок итд. Какое-то время даже сохранения от игр бэкапил туда, пока не понял, что всё это лежит на SSD, а перемещать на HDD их не хочется. Веб-интерфейсом особо не пользуюсь.
Личные заметки тоже живут здесь. Я давно веду дневничок в Obsidian и не хотел бы его ни терять, ни выкладывать в Интернет.
Grafana + InfluxDB
Храню там что попало, если за чем-то надо наблюдать. Температура тёплого пола, число активных сессий на роутере, какое-то время потери пакетов отслеживал, пока с сеткой разбирался. Собираю с помощью bash прямо в контейнере. Потеряются данные - и хер с ними. Много места не занимает, бигдаты у меня нет.
Mosquitto и Mqtt-Automator
Самопальный умный дом из говна и палок питона. Я пока использую для умного дома только Wi-Fi устройства, поэтому всё легко работает в контейнере. Управляю рекуператорами, тёплым полом и стеной (а-ля скрытый полотенцесушитель), светильниками. Недавно удалось взломать бойлер (и в итоге переломал весь умный дом, но релиза с этим я не выкатывал ещё).
Сетевой клипборд (bepasty)
В какой-то момент мне осточертело обмениваться текстом и мелкими файликами между компом и телефоном через телеграмм. Ну серьёзно, что за бред, до чего нас довели технологии, что в чужое облако файл загрузить проще, чем по Bluetooth передать (который есть и у компа и у телефона).
NTP
Использую chrony. В LXC завести не получилось, при попытке сделать привилегированный unconfined контейнер, у которого будут права двигать хардварные часы хост-системы - зависали все LXC, а без этого сам NTP отдавал кривое время, сдвинутое аж на 15 минут вбок. Установил его в корень файлопомойки, не жалею, всё равно +/- штатное ПО. DHCP-сервер отдаёт адрес файлопомойки в качестве NTP-сервера, поэтому единственное устройство в доме, у которого едет время - это духовой шкаф без Wi-Fi.
PostgreSQL
Не используется ни одним сервисом, крутится просто чтобы я легко мог в любой момент потыкаться и проверить что-то. Ну, я люблю PostgreSQL и дохрена с ним работаю, поэтому в свободное время он мне иногда тоже нужен.
RSS-прокси
Какое-то время любил подумскроллить, но на телефонном RSS-клиенте не было хороших возможностей фильтрации. Написал свой RSS-прокси (изначально он был источником данных для поиска эпитетов).
Telegram-бот
Иногда я езжу за продуктами и мне нужно отмечать, что я купил, а что нет, при этом список продуктов определяю не я. В общем я сделал себе на aiogram телеграм-бота, который умеет разбивать сообщения вида:
Если есть желтых помидор, два огурца, четыре банана, один лимон и 100 грамм хорошего сыра
на несколько сообщений вида:
- если есть желтых помидор
- 2 огурца
- 4 банана
- 1 лимон
- 100 грамм хорошего сыра
которые по мере “выполнения” можно или отмечать или удалять.
Нейронки
После долгой фазы отрицания я таки смирился с curl | sh
для установки ollama и запустил дома deepseek r1. Не волшебная палочка, но иногда помогает по мелочи с работой. Хорошо справляется с задачами вроде “сгенерируй мне скрипт для … тз которое пишешь минут пять …”. Получается нерабочее говно, но пока он генерирует его - можно сделать небольшое дело по дому, посудомойку, например, разобрать. Допиливать потом, конечно часа два. Пытаться исправить скрипт с помощью нейросети смысла большого не имеет, у неё всё равно недостаточного контекста. В размерности 8b, к слову, с программированием гораздо лучше справляется opencoder. С его помощью иногда генерирую unit-тесты. Разумеется ему надо объяснить “используй pytest, не используй unittest.TestCase, вот тебе пример позитивного теста, проект использует X, Y и Z технологии, допиши по аналогии негативные”. Набор негативнх тест-кейсов, кстати, deepseek придумывает лучше.
В целом ollama норм, но у меня несколько непоняток есть относительно исполнения и производительности. Например ollama ps
показывает 100% GPU, но во время обсчёта ответа её процесс отжирает 8 потоков CPU из 16 прям под 100%. Зачем, почему, нахера - непонятно. Использую Nvidia RTX 4060 на 8гб и теперь подмывает проапгрейдиться до RTX 4060 Ti на 16гб, чтобы гонять 14b модели, но вот этот нюанс с пожиранием CPU бросает тень сомнения на то, что это поможет. Как в Linux внятно мониторить потребление VRAM я не знаю, использую какой-то Mission Control в flatpak, но возможно он врёт.
Заброшенное
- XMPP-сервер, хотел сделать семейный чатик, который хрен заблокируют, ибо работает тупо в локалке. И с мамой тоже, потому что наши домашние сети соединены VPN, который проходит через локальную сеть провайдера, не выходя наружу. Возможно даже не проходит через ТСПУ. Но что-то мне не зашло, поэтому мы всё ещё сидим в телеге. Стыдно-с.
- Сервер видеозвонков - galene. Не особо взлетело, у жены на телефоне почему-то подлагивал, на моём работало. Но в целом прикольный. Изначально хотел Jitsi, но он какой-то упоротый в плане потребления ресурсов, да и конфиг сложноватый, так что я его даже не запустил в итоге.
- Медиа-сервер. Тыкал plex, но упёрся в его ограничения, начал тыкать Kodi, но недотыкал. Когда-нибудь я таки пересмотрю Evangelion на телевизоре.
- Уборка. Мой старый трэкер регулярных действий, у которого есть буквально одна кнопка “сделал”. И она двигает дедлайн до следующего раза, запоминая, когда оно было сделано в последний раз. Не выкладывал в опенсорс.
В планах
- Dnsmasq. Хочу поковыряться и посмотреть насколько удобно через него можно управлять статическими DHCP-привязками и DNS-записями. В теории может оказаться что чуточку удобнее, чем в Mikrotik, на котором они сейчас живут.
- Yucca или аналог. Мне нужен видеорегистратор, любой ценой, но бесплатно. Плюс репликация видеозаписей по событиями ONVIF через Интернет (чтобы просто уничтожить локальный видеорегистратор было недостаточно, чтобы избавиться от улик).
- Почтовый сервер. Ну несолидно это, готовым пользоваться, самое время пердолиться со спамом.