Перейти к основному содержимому

Моя домашняя лаборатория

·585 слов·3 минут

На правах части резюме и просто понтов ради описываю свою домашнюю лабораторию.

Что у меня есть

  • Этот сайт (Hugo + CI на GitHub, который собирает и раскатывает на сервер);
  • Nextcloud (своё облако, календари, задачи, синхронизация контактов);
  • VaultWarden (опенсорсный сервер для менеджера паролей и ключей BitWarden);
  • TeamTalk5 (не обращайте внимания, это очень непопулярная история);
  • Gitea (self-hosted альтернатива GitHub);
  • NVDARemoteServer (для удалённого управления компьютерами со скринридером NVDA);
  • HeadScale (см. ниже про сеть);
  • Более десятка Telegram-ботов на Python и Go (часть написал сам);

Мониторинг

Со всего зоопарка серверов собираются метрики при помощи node-exporter, а также подключён сбор метрик из caddy для серверов, где крутятся сайты.

Данные собираются Prometheus, рядом с которым работает AlertManager с отправкой алертов в Telegram, а также Grafana, которой я пользуюсь достаточно редко, так как дашборды - штука визуальная и для незрячего девопса не сильно полезная.

Также, для централизованного сбора логов на всех серверах подняты promtail, а loki на центральном сервере всё это собирает и, конечно же, общается с AlertManager.

Мониторинг пока без репликации, но когда-нибудь я и до этого дозрею.

Docker пока не мониторится вообще, и это плохо. Планирую заняться этим в ближайшее время. Только недавно перевёз большинство сервисов в docker compose проекты, и ещё не дошёл до мониторинга.

Сеть

Все серверы связаны в сеть при помощи tailscale, где вместо проприетарного координатора используется его self-hosted-замена в виде HeadScale.

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

Остальных деталей не расскажу, ибо могут прийти и сделать “атата”, но, как вы понимаете, алерты в Telegram с российских серверов тоже надо было доставлять, и пришлось искать решения.

Бэкапы, куда же без них

Я, к сожалению, тот человек, который “уже делает бэкапы”.

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

Уведомления об успешных бэкапах, также, как и об ошибках, отсылаются в Telegram.

По технологиям - borgbackup + borgmatic + ansible playbook для настройки и будущего обновления всего этого при необходимости (включая конфиги).

Как я всем этим управляю

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

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

Что по технологиям в целом

  • docker (достаточно активно);
  • NFTables (потому что очень люблю его синтаксис и удобство. Но дружить его с docker надо уметь);
  • bash (очень активно, почти каждый день, сами понимаете, надо);
  • ansible (см. выше. Пока не везде и не всегда);

До более серьёзных технологий вроде k8s ещё не дорос, да и не уверен, что на моих масштабах это реально нужно.

Планы

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

А я всего лишь админ-одиночка, поэтому вот:

  • Полноценно овладеть Ansible и в идеале добиться того, чтобы всё и на всех серверах подчинялось идее infrastructure as code;
  • Донастроить мониторинг и определиться с тем, какие именно метрики мне нужны, а какие можно и выкинуть (только место занимают);
  • Перенести большинство репозиториев на свой Gitea, а GitHub оставить как зеркало, например для резюме (решение не без нюансов, ибо если можно не платить за GitHub Actions и деплоить оттуда, то почему бы и нет);
  • Поднять свой стек для музыки (а то цензура на российских площадках достала, а Яндекс Музыка позволяет загрузить только до 10_000 своих треков);
  • Научиться поднимать php-сайты в Docker (у больших проектов есть готовые образы, но почему бы не попробовать сделать всё самому).
Кирилл Белоусов
Автор
Кирилл Белоусов
Также известен как cyrmax. Пишу код, тестирую, автоматизирую инфраструктуру и помогаю делать цифровые продукты доступнее.