Files
vps-ansible/README.md
2025-10-16 22:54:40 +02:00

139 lines
4.1 KiB
Markdown

# 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
```