7c575747230e060d3ab8aa65d0a9f3eb24a427a6
- ansible 13.2.0 -> 14.3.1 (ansible-core 2.20.1 -> 2.21.3), ansible-lint 25.12.2 -> 26.8.0, invoke 2.2.1 -> 3.0.3, requests, croniter, yamllint, типы и транзитивные пакеты - ruff оставлен на 0.15: в 0.16 расширился набор правил по умолчанию, из-за чего в скриптах и tasks.py появляется 29 срабатываний; обновление вынесено в отдельный заход вместе с правкой кода - ansible-lint, pyrefly и yamllint на новых версиях проходят без замечаний
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.8%
Shell
5.9%
Dockerfile
0.3%