# Docker Installation Diese Anleitung erklärt, wie du das RMM-System mit Docker auf einem Linux-Server installierst. ## Voraussetzungen - Linux-Server (Debian 12 / Ubuntu 22.04 oder neuer empfohlen) - Mindestens 2 GB RAM, 10 GB freier Speicherplatz - Docker und Docker Compose installiert **Docker installieren** (falls noch nicht vorhanden): ```bash curl -fsSL https://get.docker.com | sh ``` Das war es. Docker Compose ist seit Docker 2.x automatisch dabei (`docker compose`). --- ## Installation ### Schritt 1 — Repository klonen ```bash git clone https://git.cynfo.net/christian/rmm2.git cd rmm2 git checkout release ``` --- ### Schritt 2 — Konfigurationsdatei anlegen ```bash cp .env.example .env ``` Öffne `.env` mit einem Texteditor und trage deine Werte ein: ```bash nano .env ``` Die Datei sieht so aus: ```env # IP-Adresse oder Hostname dieses Servers # (die Adresse über die du später im Browser das Frontend erreichst) BACKEND_HOST=192.168.1.100 # Port des Backends — 8443 ist der Standard, nur ändern wenn nötig BACKEND_PORT=8443 # Datenbank-Passwort — frei wählbar, wird nur intern verwendet DB_PASSWORD=einSicheresPasswort123 # JWT-Secret — langer zufälliger String, mindestens 32 Zeichen # Tipp: openssl rand -hex 32 JWT_SECRET=hierEinenLangenZufaelligenStringEintragen # API-Key — frei wählbar, wird vom Frontend und den Agents verwendet # Tipp: openssl rand -hex 16 API_KEY=hierEinenApiKeyEintragen ``` > **Wichtig:** `BACKEND_HOST` ist die IP-Adresse oder der Hostname des Servers auf dem > Docker läuft — nicht `localhost`. Der Browser muss diese Adresse erreichen können, > um mit dem Backend zu kommunizieren. --- ### Schritt 3 — Starten ```bash docker compose up -d ``` Beim ersten Start lädt Docker die benötigten Basis-Images (postgres, nginx etc.) und baut dann das Backend und das Frontend. Das dauert beim ersten Mal 3-5 Minuten. Danach läuft das System und startet automatisch nach einem Server-Reboot neu. --- ### Schritt 4 — Prüfen ob alles läuft ```bash docker compose ps ``` Die Ausgabe sollte so aussehen: ``` NAME STATUS PORTS rmm-db-1 Up (healthy) 5432/tcp rmm-backend-1 Up 0.0.0.0:8443->8443/tcp rmm-frontend-1 Up 0.0.0.0:80->80/tcp ``` Alle drei Services müssen `Up` zeigen. Wenn `db` noch `starting` zeigt, warte 20-30 Sekunden — die Datenbank braucht beim allerersten Start etwas länger. --- ### Schritt 5 — Erster Login Rufe das Frontend im Browser auf: ``` http:// ``` Beim ersten Start legt das Backend automatisch einen Admin-Account an. Die Zugangsdaten stehen im Backend-Log: ```bash docker compose logs backend | grep -i "admin\|password\|passwort" ``` --- ## Häufige Aufgaben ### Logs anschauen ```bash # Alle Services docker compose logs -f # Nur Backend docker compose logs -f backend # Nur die letzten 50 Zeilen docker compose logs --tail=50 backend ``` ### System stoppen und neu starten ```bash # Stoppen (Daten bleiben erhalten) docker compose down # Starten docker compose up -d # Neu starten (z.B. nach Konfigurationsänderung) docker compose restart backend ``` ### System aktualisieren Nach einem `git pull` musst du die Images neu bauen: ```bash git pull docker compose build docker compose up -d ``` ### Konfiguration ändern (`.env` wurde bearbeitet) ```bash # Nach Änderung von BACKEND_HOST, API_KEY etc.: docker compose up -d ``` Docker Compose erkennt automatisch, dass sich die ENV-Werte geändert haben und startet die betroffenen Container neu. --- ## Datensicherung Die Datenbank liegt in einem Docker Volume (`pgdata`). Um ein Backup zu erstellen: ```bash # Backup erstellen docker compose exec db pg_dump -U rmm rmm > rmm-backup-$(date +%Y%m%d).sql # Backup wiederherstellen docker compose exec -T db psql -U rmm rmm < rmm-backup-20260101.sql ``` --- ## Troubleshooting ### Backend startet nicht ```bash docker compose logs backend ``` Häufige Ursachen: - **Datenbank noch nicht bereit**: Warte 30 Sekunden, dann `docker compose restart backend` - **Port 8443 belegt**: Prüfe mit `ss -tlnp | grep 8443` was den Port belegt ### Frontend zeigt „Verbindung fehlgeschlagen" - Prüfe ob `BACKEND_HOST` in `.env` die richtige IP-Adresse ist - Prüfe ob Port 8443 in der Firewall freigegeben ist - Teste direkt: `curl -sk https://:8443/api/v1/health` ### Datenbank-Volume zurücksetzen (Achtung: löscht alle Daten) ```bash docker compose down -v # -v löscht auch Volumes docker compose up -d ``` --- ## Ports | Port | Service | Beschreibung | |------|---------|-------------| | 80 | Frontend | Web-Oberfläche (Browser) | | 8443 | Backend | REST-API + WebSocket (Agents + Frontend) | Port 80 und 8443 müssen von deinem Netzwerk erreichbar sein. Port 5432 (Datenbank) ist nur intern verfügbar.