VPS Automation with Ansible - Trillium Notes & Gitea Setup
Dieses Ansible-Projekt automatisiert die Installation von Trillium Notes und Gitea auf einem VPS mit Docker, Nginx und SSL-Zertifikaten.
Voraussetzungen
- Poetry installiert (bereits erledigt)
- SSH-Zugang zum VPS mit Root-Rechten
- Domains müssen auf die VPS-IP zeigen (node.pm86.de, git.pm86.de)
Konfiguration
1. VPS-Verbindung konfigurieren
Editiere inventory/hosts.yml und setze:
ansible_host: Die IP-Adresse deines VPSansible_user: Der SSH-User (normalerweiseroot)ansible_ssh_private_key_file: Pfad zu deinem SSH-Key
2. Domains und E-Mail konfigurieren
Editiere inventory/hosts.yml:
trillium_domain: Domain für Trillium Notes (z.B.node.pm86.de)gitea_domain: Domain für Gitea (z.B.git.pm86.de)email: Deine E-Mail für SSL-Zertifikate
Verwendung
Komplette Installation (empfohlen)
poetry run ansible-playbook site.yml
Einzelne Komponenten installieren
# Nur Docker
poetry run ansible-playbook site.yml --tags docker
# Nur Nginx
poetry run ansible-playbook site.yml --tags nginx
# Nur SSL-Zertifikate
poetry run ansible-playbook site.yml --tags certbot
# Nur Trillium Notes
poetry run ansible-playbook site.yml --tags trillium
# Nur Gitea
poetry run ansible-playbook site.yml --tags gitea
Verbindung testen
poetry run ansible vps -m ping
Was wird installiert
- Docker & Docker Compose: Container-Plattform
- Nginx: Reverse Proxy mit SSL-Terminierung
- Certbot: Automatische SSL-Zertifikate (Let's Encrypt)
- Trillium Notes: Notiz-App in Docker-Container
- Gitea: Git-Server in Docker-Container
Nach der Installation
- Trillium Notes ist erreichbar unter:
https://node.pm86.de - Gitea ist erreichbar unter:
https://git.pm86.de - SSL-Zertifikate werden automatisch erneuert
- Alle Services starten automatisch beim Boot
- Logs:
journalctl -u trilliumfür Trilliumjournalctl -u giteafür Gitea
Service-Konfiguration
Trillium Notes
- Port: 8080 (intern), 80/443 (extern)
- Daten:
/opt/trillium/data - Config: Automatisch via Docker-Compose
- Erste Einrichtung: Direkt über Web-Interface
Gitea
- Port: 3000 (intern), 80/443 (extern)
- Daten:
/opt/gitea/data - Config:
/opt/gitea/config - Git Repos:
/opt/gitea/git - Erste Einrichtung: Über Web-Interface nach Deployment
- Admin: Erster User wird automatisch Admin
Troubleshooting
SSH-Verbindung testen
ssh -i ~/.ssh/id_rsa root@YOUR_VPS_IP
Services überprüfen
poetry run ansible vps -m systemd -a "name=docker state=started"
poetry run ansible vps -m systemd -a "name=nginx state=started"
Container Status
# Trillium Container
poetry run ansible vps -m shell -a "docker ps | grep trillium"
# Gitea Container
poetry run ansible vps -m shell -a "docker ps | grep gitea"
Dateistruktur
.
├── ansible.cfg # Ansible-Konfiguration
├── inventory/hosts.yml # VPS-Verbindungsdaten
├── group_vars/all/vars.yml # Globale Variablen
├── site.yml # Haupt-Playbook
├── playbooks/ # Einzelne Playbooks
│ ├── 01-install-docker.yml
│ ├── 02-install-nginx.yml
│ ├── 03-setup-certbot.yml
│ ├── 04-deploy-trillium.yml
│ ├── 05-deploy-gitea.yml
│ ├── 06-configure-gitea-nginx.yml
│ └── 07-setup-gitea-certbot.yml
└── templates/ # Konfigurations-Templates
├── nginx-site.conf.j2 # Trillium Nginx config
├── docker-compose.yml.j2 # Trillium Docker Compose
├── start-trillium.sh.j2 # Trillium startup script
├── trillium.service.j2 # Trillium systemd service
├── gitea-nginx-site.conf.j2 # Gitea Nginx config
├── gitea-docker-compose.yml.j2 # Gitea Docker Compose
├── start-gitea.sh.j2 # Gitea startup script
└── gitea.service.j2 # Gitea systemd service
Description
Languages
Jinja
100%