# 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 1. **Poetry installiert** (bereits erledigt) 2. **SSH-Zugang zum VPS** mit Root-Rechten 3. **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 VPS - `ansible_user`: Der SSH-User (normalerweise `root`) - `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) ```bash poetry run ansible-playbook site.yml ``` ### Einzelne Komponenten installieren ```bash # 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 ```bash poetry run ansible vps -m ping ``` ## Was wird installiert 1. **Docker & Docker Compose**: Container-Plattform 2. **Nginx**: Reverse Proxy mit SSL-Terminierung 3. **Certbot**: Automatische SSL-Zertifikate (Let's Encrypt) 4. **Trillium Notes**: Notiz-App in Docker-Container 5. **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 trillium` für Trillium - `journalctl -u gitea` fü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 ```bash ssh -i ~/.ssh/id_rsa root@YOUR_VPS_IP ``` ### Services überprüfen ```bash poetry run ansible vps -m systemd -a "name=docker state=started" poetry run ansible vps -m systemd -a "name=nginx state=started" ``` ### Container Status ```bash # 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 ```