No description
  • Jinja 85.1%
  • Just 14.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
egoreast 52b97575a2 feat(admin-user): login by username
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.
2026-08-06 10:28:47 +03:00
docs feat(admin-user): login by username 2026-08-06 10:28:47 +03:00
examples feat(admin-user): login by username 2026-08-06 10:28:47 +03:00
group_vars/slovo_servers refactor: rename slovo-swagger role to slovo-docs 2026-08-06 10:28:34 +03:00
roles refactor: rename slovo-swagger role to slovo-docs 2026-08-06 10:28:34 +03:00
.gitignore init commit with all settings 2026-08-02 18:54:35 +03:00
ansible.cfg add: ansible.cfg with sensible defaults for the playbook 2026-08-03 17:16:35 +03:00
justfile refactor: rename slovo-swagger role to slovo-docs 2026-08-06 10:28:34 +03:00
README.md refactor: rename slovo-swagger role to slovo-docs 2026-08-06 10:28:34 +03:00
requirements.yml init commit with all settings 2026-08-02 18:54:35 +03:00
setup.yml refactor: rename slovo-swagger role to slovo-docs 2026-08-06 10:28:34 +03:00

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 raw ansible-playbook commands instead (see the note in the quick start below)
  • Docker on the target host
  • Python 3 with the bcrypt module 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

  1. Clone this repository:

    git clone <your-repo-url> slovo-propovedi-playbook
    cd slovo-propovedi-playbook
    
  2. Install the Galaxy roles:

    just roles
    
  3. Create your configuration file:

    mkdir -p inventory/host_vars/<your-host>
    cp examples/vars.yml inventory/host_vars/<your-host>/vars.yml
    

    Then open inventory/host_vars/<your-host>/vars.yml and fill in your domain names and secrets.

  4. Create your inventory file:

    cp examples/hosts inventory/hosts
    

    Then edit inventory/hosts and add your server to the [slovo_servers] group.

  5. Run the playbook to set everything up and start the services:

    just setup-all
    
  6. Create the admin user (run separately, after the services are up):

    just ensure-admin-user
    

Note

All commands above use just (see the justfile — run just to list the available recipes). If you don't have just installed, 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