626bac5303efbf95a88dbb1a64c7f8c066a6b99f
- выключены ML (52 MB и тренировка k-means по 13.7k измерений каждые 3 часа), network-viewer, debugfs и ioping; storage tiers 3 → 2, то есть максимум истории 3 месяца вместо 2 лет; apps.plugin обходит /proc раз в 30s вместо 10s, метрики групп процессов при этом сохранены - из /proc/net/dev отфильтрованы veth*, br-* и docker0 — 462 графика на 50 интерфейсов, из которых 43 безымянные veth докера. Побочный эффект: проверка имени в proc_net_dev.c идёт до netdev_rename_this_device(), поэтому теряется единственный смапленный cgroup_caddyproxy.net_eth0 - postgres перестал собирать метрики индексов (205 индексов × 2 графика); max_db_indexes задан внутри джоб, потому что на верхнем уровне файла go.d разбирает только confgroup.Default и молча игнорирует остальное Замер до: 13.7k метрик, 479 MiB, ~18% ядра. Ожидаемо после: ~11.8k метрик и ~310 MiB.
Pet Project Server
Настройки виртуального сервера для домашних проектов.
В этом проекте не самые оптимальные решения. Но они помогают мне поддерживать сервер для моих личных проектов уже много лет.
История и обоснования значимых решений — в ADR-записях
(docs/adr/): почему приняты те или иные изменения, а не только что сделано.
Требования
Установка
uv sync
cp ansible-vault-password-file.dist ansible-vault-password-file
uv run ansible-galaxy install --role-file requirements.yml
Структура
- Для каждого приложения создается свой пользователь.
- Для доступа используется ssh-ключ.
- Безопасность осуществляется с помощью
ufwиfail2ban. - Докер используется для запуска и изоляции приложений. Для загрузки образов настраивается Yandex Docker Registry.
- Выход во внешнюю сеть через proxy server Caddy.
- Чувствительные данные в secrets.yml зашифрованы с помощью Ansible Vault.
- Для мониторинга за сервером устанавливается netdata.
Настройка DNS
В организации Яндекс: https://admin.yandex.ru/domains/vakhrushev.me?action=set_dns&uid=46045840
Деплой приложений
Деплой приложения через ansible:
uv run ansible-playbook -i production.yml --diff playbook-gitea.yml
Или через таску invoke:
./inv pl -- gitea
Удаление приложения
uv run ansible-playbook -i production.yml --diff playbook-remove-user-and-app.yml --extra-vars user_name=<name>
Languages
Python
93.4%
Shell
6.3%
Dockerfile
0.3%