- Jinja 85.1%
- Just 14.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Add slovo_admin_user_username (required) and seed the admin user by username (ON CONFLICT (username) DO NOTHING) with a fail-fast guard when unset. Mirrors the backend auth login-by-username change. |
||
| docs | ||
| examples | ||
| group_vars/slovo_servers | ||
| roles | ||
| .gitignore | ||
| ansible.cfg | ||
| justfile | ||
| README.md | ||
| requirements.yml | ||
| setup.yml | ||
slovo-propovedi-playbook
Ansible playbook for deploying the slovo-propovedi-admin NestJS admin panel.
This playbook follows the matrix-docker-ansible-deploy pattern: every service runs in a Docker container managed by systemd, with Traefik as the reverse proxy in front of everything.
Features
- Backend (NestJS 10) — the slovo-propovedi-admin panel API
- Frontend (Svelte 5) — the admin panel web UI, served by nginx
- Docs (standalone) — self-hosted API documentation (Swagger UI) + OpenAPI spec
- PostgreSQL 18.4 — primary database
- MinIO — S3-compatible object storage
- Adminer — web-based database administration
- Traefik — reverse proxy with automatic Let's Encrypt certificates
- systemd-managed containers — each service runs as its own systemd unit
Prerequisites
- Ansible 2.16+ on the control machine
- just — the command runner used by the
justfile(see just). If you don't have it, you can run the rawansible-playbookcommands instead (see the note in the quick start below) - Docker on the target host
- Python 3 with the
bcryptmodule on the target host (required for admin user seeding) - git + docker buildx on the target host (required for building images from source — backend and docs)
- SSH access to git.lightnode.ru from the target host (required for cloning the backend and docs repositories)
Quick start
-
Clone this repository:
git clone <your-repo-url> slovo-propovedi-playbook cd slovo-propovedi-playbook -
Install the Galaxy roles:
just roles -
Create your configuration file:
mkdir -p inventory/host_vars/<your-host> cp examples/vars.yml inventory/host_vars/<your-host>/vars.ymlThen open
inventory/host_vars/<your-host>/vars.ymland fill in your domain names and secrets. -
Create your inventory file:
cp examples/hosts inventory/hostsThen edit
inventory/hostsand add your server to the[slovo_servers]group. -
Run the playbook to set everything up and start the services:
just setup-all -
Create the admin user (run separately, after the services are up):
just ensure-admin-user
Note
All commands above use
just(see thejustfile— runjustto list the available recipes). If you don't havejustinstalled, you can run the same steps with Ansible directly:ansible-galaxy install -r requirements.yml ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ansible-playbook -i inventory/hosts setup.yml --tags=ensure-slovo-users-created
Documentation
License
AGPL-3.0