139 lines
4.1 KiB
Markdown
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
|
|
```
|