No description
  • Just 53.7%
  • Jinja 46.3%
Find a file
2026-06-15 13:30:26 +03:00
examples update vars example 2026-06-15 12:33:24 +03:00
roles/forgejo_pages create role and playbook with claude 2026-06-14 23:24:32 +03:00
.gitignore remove gitkeep 2026-06-15 13:16:09 +03:00
ansible.cfg add justfile 2026-06-15 13:30:26 +03:00
justfile add justfile 2026-06-15 13:30:26 +03:00
playbook.yml create role and playbook with claude 2026-06-14 23:24:32 +03:00
README.md add justfile 2026-06-15 13:30:26 +03:00
requirements.yml create role and playbook with claude 2026-06-14 23:24:32 +03:00

ansible-forgejo-pages

Переиспользуемая Ansible-роль для развёртывания pages-сервера Forgejo (ronmi/forgejo-pages) за реверс-прокси (по умолчанию Traefik). Раздаёт ветку репозитория как статический сайт: https://<hostname>/<user>/<repo>/.

Роль универсальная — ничего не захардкожено. Инвентори организован папкой, как в mash/MDAD: шаблоны лежат в examples/, их копируют в inventory/ и заполняют под себя.

Структура

ansible-forgejo-pages/
├── ansible.cfg                 # inventory = inventory/, roles_path = roles
├── justfile                    # рецепты just (roles / install-all / check / ...)
├── playbook.yml                # применяет роль к группе [pages]
├── requirements.yml            # community.docker
├── examples/                   # ШАБЛОНЫ — скопировать в inventory/
│   ├── hosts
│   └── host_vars/
│       └── myserver.example.com/
│           └── vars.yml
├── inventory/                  # ТВОЙ инвентори (создаётся копированием из examples/)
│   └── .gitkeep
└── roles/
    └── forgejo_pages/
        ├── defaults/main.yml   # все переменные + дефолты
        ├── tasks/main.yml      # проверки + деплой
        ├── templates/…         # docker-compose шаблон
        ├── meta/main.yml       # Galaxy-метаданные
        └── README.md           # справка по роли

Быстрый старт

# 1. зависимости на контроллере
just roles       # = ansible-galaxy collection install -r requirements.yml

# 2. СКОПИРОВАТЬ примеры в inventory/
cp examples/hosts inventory/hosts
cp -r examples/host_vars/myserver.example.com inventory/host_vars/<твой-host>

# 3. отредактировать под себя
$EDITOR inventory/hosts                              # сервер; имя хоста = имя папки в host_vars/
$EDITOR inventory/host_vars/<твой-host>/vars.yml     # hostname / forgejo_url / token
#    токен лучше зашифровать:
just encrypt-token 'ТВОЙ_ТОКЕН'

# 4. запуск — нужна vault-аутентификация (см. ниже)
just install-all --ask-vault-pass

Vault: токен зашифрован, поэтому при запуске нужен доступ к vault-паролю. Способы: передать --ask-vault-pass (как выше) либо --vault-password-file ~/.ansible-vault-pass; или — удобнее — раскомментировать vault_password_file в ansible.cfg, и тогда хватит just install-all. Не комбинируй --ask-vault-pass и --vault-password-file одновременно — ansible это запрещает.

Список рецептов — just без аргументов (roles, install-all, check, ping, encrypt-token). Синонимы: deps = roles; install = setup-all = install-all.

Имя хоста в inventory/hosts и имя папки в inventory/host_vars/ должны совпадать — это связывает сервер с его переменными (как в mash/MDAD).

Что нужно один раз на стороне Forgejo/DNS

  1. Токен Forgejo со scope read:repository.
  2. DNS-запись <hostname> → IP сервера.
  3. Реверс-прокси (Traefik) уже работает на сервере.

Обязательные переменные (в host_vars//vars.yml)

  • forgejo_pages_hostname — web-хост раздачи.
  • forgejo_pages_forgejo_url — URL Forgejo.
  • forgejo_pages_token — API-токен (read:repository).

Остальное — с дефолтами, см. roles/forgejo_pages/defaults/main.yml и roles/forgejo_pages/README.md. Если Traefik с другими именами сети/entrypoint/резолвера — подсмотри их docker inspect-ом (в README роли) и переопредели forgejo_pages_traefik_* в vars.yml.

Несколько серверов

Добавляй хосты в inventory/hosts и заводи для каждого свою папку inventory/host_vars/<host>/vars.yml — роль применится к каждому со своими значениями.

Без Traefik

forgejo_pages_traefik_enabled: false (+ при желании forgejo_pages_published_port) — и подключай свой прокси.

Проверка

В любом репозитории создай ветку static-pages с index.html, открой https://<hostname>/<user>/<repo>/index.html.