Ansible meta repo for c0ntora infrastructure
iptables hardening: SSH/HTTP/HTTPS/1194 UDP, admin networks (WG+ovpn), Docker-safe DROP rule, persist via netfilter-persistent. Signed-off-by: Nikki Claude <nikki.claude@avallon.pw> |
||
|---|---|---|
| .forgejo/workflows | ||
| group_vars | ||
| inventory | ||
| playbooks | ||
| roles | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .gitmodules | ||
| ansible.cfg | ||
| README.md | ||
ansible-meta-c0ntora
Ansible meta-repo for c0ntora.ru infrastructure. Roles are git submodules from c0ntora.etc org on forge.avallon.pw.
Hosts
| Host | IP | Role |
|---|---|---|
c0ntora-main |
— | main c0ntora server (bare-metal/VM) |
vm-c0ntora-router |
185.84.163.118 | nginx reverse proxy + WireGuard hub |
vm-kp3-mattermost |
10.174.80.241 | Mattermost + PostgreSQL (internal) |
Roles
| Role | Description |
|---|---|
nginx-router |
Dockerized nginx with certbot, conf.d, custom.d, trusted_networks |
mm |
Mattermost nginx vhost (WebSocket, TLS toggle) |
mm-deploy |
Mattermost + PostgreSQL docker-compose on backend VM |
docs |
Confluence nginx vhost (Synchrony WS, DAV, trusted_networks) |
contora |
c0ntora.ru main vhost + mp4 aliases (~40 entries) |
mojopaste |
Mojopaste nginx vhost (p.c0ntora.ru, paste.c0ntora.ru) |
privoxy |
Privoxy HTTP proxy docker-compose |
vpns |
VPN configs |
wg-s2c |
WireGuard site-to-client tunnel (router ↔ mm VM) |
Playbooks
playbooks/
setup-nginx-router.yml # deploy nginx-router role
setup-mm.yml # deploy mm nginx vhost
setup-docs.yml # deploy docs nginx vhost
setup-contora.yml # deploy contora vhost + mp4 aliases
setup-mojopaste.yml # deploy mojopaste vhost
setup-privoxy.yml # deploy privoxy
setup-vpns.yml # deploy vpn configs
setup-wg-s2c.yml # configure WireGuard s2c tunnel
deploy-mm.yml # deploy Mattermost + PG on backend VM
backup-mm.yml # backup Mattermost data
bootstrap-openbao-c0ntora.yml # bootstrap OpenBao secrets
Network topology
internet
└─ vm-c0ntora-router (185.84.163.118)
nginx-router (docker)
conf.d/: mm.conf, docs.conf, paste.conf, c0ntora.conf
custom.d/: trusted_networks.inc (Russian ISP CIDR allowlist)
WireGuard wg0: 10.9.0.1/24
└─ vm-kp3-mattermost: 10.9.0.3
Mattermost :8065
PostgreSQL 15
Secrets
Sensitive vars go in inventory/host_vars/<host>/vault.yml (ansible-vault).
See vault.yml.example for required keys.
Never commit: *.pem, *.key, letsencrypt/, certbot/conf/.
CI
Gitleaks secret scan runs on every push/PR via c0ntora.etc/devops reusable workflow.