av 6bb0d61183 caddyproxy: admin API закрыт на loopback, метрики вынесены на :2020
- `admin :2019` слушал всю web_proxy_network: любой контейнер мог POST-ом в
  /config/ переписать маршрутизацию и снять forward_auth. Теперь
  `admin localhost:2019`.
- Метрики для netdata отдаёт отдельный site-блок `http://:2020 { metrics
  /metrics }`, netdata скрейпит новый порт.
- Порт для метрик именно 2020, а не 2019, как предлагала задача: сайт на :2019
  перехватывает IPv6-петлю (admin висит только на IPv4), из-за чего
  `caddy reload` внутри контейнера возвращает 0 и молча ничего не применяет —
  проверено на caddy:2.11.4.
2026-08-22 17:44:08 +03:00
2026-01-02 19:44:35 +03:00
2025-12-16 19:43:40 +03:00
2025-11-28 18:30:23 +03:00
2026-01-02 19:18:07 +03:00
2026-01-02 19:18:07 +03:00
2026-01-02 19:25:50 +03:00
2026-02-22 18:41:29 +03:00
2026-01-05 21:00:32 +03:00

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>
S
Description
Config files for my personal virtual server
Readme
2.6 MiB
Languages
Python 93.4%
Shell 6.3%
Dockerfile 0.3%