# Server-Setup Anleitung für TaskMate Diese Anleitung erklärt Schritt für Schritt, wie Sie TaskMate auf Ihrem Linux-Server installieren. --- ## Voraussetzungen - Ein Linux-Server (Ubuntu 20.04/22.04 oder Debian empfohlen) - SSH-Zugang zu Ihrem Server - Root-Rechte oder sudo-Berechtigungen --- ## Schritt 1: Mit dem Server verbinden Öffnen Sie ein Terminal (Windows: PowerShell oder CMD) und verbinden Sie sich per SSH: ```bash ssh benutzername@ihre-server-ip ``` Ersetzen Sie `benutzername` mit Ihrem Benutzernamen und `ihre-server-ip` mit der IP-Adresse Ihres Servers. --- ## Schritt 2: System aktualisieren ```bash sudo apt update sudo apt upgrade -y ``` --- ## Schritt 3: Docker installieren ### 3.1 Erforderliche Pakete installieren ```bash sudo apt install -y ca-certificates curl gnupg lsb-release ``` ### 3.2 Docker GPG-Schlüssel hinzufügen ```bash sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ``` ### 3.3 Docker-Repository hinzufügen Für Ubuntu: ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` Für Debian: ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` ### 3.4 Docker installieren ```bash sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` ### 3.5 Docker für Ihren Benutzer aktivieren ```bash sudo usermod -aG docker $USER ``` **Wichtig:** Melden Sie sich ab und wieder an, damit diese Änderung wirksam wird: ```bash exit ``` Dann erneut verbinden mit SSH. ### 3.6 Docker testen ```bash docker --version docker compose version ``` --- ## Schritt 4: Projektdateien auf den Server übertragen ### Option A: Mit SCP (vom lokalen Computer) Öffnen Sie ein **neues** Terminal auf Ihrem lokalen Computer: ```bash scp -r C:\Users\hendr\Desktop\IntelSight\Projektablage\TaskMate benutzername@ihre-server-ip:~/ ``` ### Option B: Mit Git (falls vorhanden) Falls Sie die Dateien in einem Git-Repository haben: ```bash git clone ihr-repository-url ~/TaskMate ``` ### Option C: Mit FileZilla (grafisch) 1. Laden Sie FileZilla herunter: https://filezilla-project.org/ 2. Verbinden Sie sich: - Host: `sftp://ihre-server-ip` - Benutzername: Ihr Benutzername - Passwort: Ihr Passwort - Port: 22 3. Ziehen Sie den Ordner `TaskMate` in Ihr Home-Verzeichnis --- ## Schritt 5: Umgebungsvariablen konfigurieren Wechseln Sie in das Projektverzeichnis: ```bash cd ~/TaskMate ``` Erstellen Sie die Konfigurationsdatei: ```bash cp .env.example .env ``` Öffnen Sie die Datei zum Bearbeiten: ```bash nano .env ``` Ändern Sie folgende Werte: ```env # WICHTIG: Ändern Sie diese Werte! JWT_SECRET=IhrGeheimesPasswort123! SESSION_SECRET=EinAnderesGeheimesPasswort456! # Optional: Port ändern (Standard: 3000) PORT=3000 ``` **Tipp für sichere Passwörter:** ```bash openssl rand -base64 32 ``` Kopieren Sie diese generierten Passwörter in die .env-Datei. Speichern mit: `Ctrl + O`, `Enter`, `Ctrl + X` --- ## Schritt 6: Anwendung starten ### Erster Start (dauert einige Minuten) ```bash docker compose up -d ``` Die `-d` Option startet die Container im Hintergrund. ### Status prüfen ```bash docker compose ps ``` Sie sollten sehen, dass der Container "running" ist. ### Logs anzeigen ```bash docker compose logs -f ``` Mit `Ctrl + C` können Sie die Logs beenden. --- ## Schritt 7: Firewall konfigurieren (falls aktiv) ```bash sudo ufw allow 3000/tcp sudo ufw status ``` --- ## Schritt 8: Anwendung aufrufen Öffnen Sie in Ihrem Browser: ``` http://ihre-server-ip:3000 ``` ### Erste Anmeldung - Benutzername: `admin` - Passwort: `admin123` **WICHTIG:** Ändern Sie das Passwort sofort nach der ersten Anmeldung! --- ## Nützliche Befehle ### Anwendung stoppen ```bash docker compose stop ``` ### Anwendung neu starten ```bash docker compose restart ``` ### Anwendung komplett beenden und entfernen ```bash docker compose down ``` ### Logs anzeigen ```bash docker compose logs -f ``` ### Container-Status prüfen ```bash docker compose ps ``` ### Anwendung aktualisieren Falls Sie Änderungen am Code gemacht haben: ```bash docker compose down docker compose build --no-cache docker compose up -d ``` --- ## Automatischer Start beim Serverstart Um die Anwendung automatisch zu starten, wenn der Server neu startet: ```bash sudo systemctl enable docker ``` Docker Compose startet Container mit `restart: unless-stopped` automatisch. --- ## Backups Die Datenbank wird automatisch täglich gesichert. Die Backups finden Sie unter: ``` ~/TaskMate/backups/ ``` ### Manuelles Backup erstellen ```bash cp ~/TaskMate/data/database.sqlite ~/TaskMate/backups/backup_$(date +%Y%m%d).sqlite ``` ### Backup wiederherstellen ```bash docker compose stop cp ~/TaskMate/backups/backup_DATUM.sqlite ~/TaskMate/data/database.sqlite docker compose start ``` --- ## HTTPS mit SSL-Zertifikat (Optional, aber empfohlen) Für eine sichere Verbindung empfehlen wir die Einrichtung von HTTPS. ### Option A: Mit Nginx als Reverse Proxy 1. Nginx installieren: ```bash sudo apt install -y nginx ``` 2. Certbot für Let's Encrypt installieren: ```bash sudo apt install -y certbot python3-certbot-nginx ``` 3. Nginx-Konfiguration erstellen: ```bash sudo nano /etc/nginx/sites-available/taskmate ``` Inhalt: ```nginx server { listen 80; server_name ihre-domain.de; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; } } ``` 4. Konfiguration aktivieren: ```bash sudo ln -s /etc/nginx/sites-available/taskmate /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ``` 5. SSL-Zertifikat erstellen: ```bash sudo certbot --nginx -d ihre-domain.de ``` Folgen Sie den Anweisungen auf dem Bildschirm. --- ## Fehlerbehebung ### Container startet nicht 1. Prüfen Sie die Logs: ```bash docker compose logs ``` 2. Prüfen Sie, ob Port 3000 bereits verwendet wird: ```bash sudo lsof -i :3000 ``` 3. Falls ja, ändern Sie den Port in der `.env`-Datei. ### Verbindung nicht möglich 1. Prüfen Sie die Firewall: ```bash sudo ufw status ``` 2. Prüfen Sie, ob Docker läuft: ```bash sudo systemctl status docker ``` ### Datenbank-Fehler 1. Stoppen Sie die Anwendung: ```bash docker compose stop ``` 2. Prüfen Sie die Datenbankdatei: ```bash ls -la ~/TaskMate/data/ ``` 3. Falls beschädigt, stellen Sie ein Backup wieder her (siehe oben). --- ## Unterstützung Bei Problemen prüfen Sie: 1. Die Logs (`docker compose logs -f`) 2. Ob alle Container laufen (`docker compose ps`) 3. Die Firewall-Einstellungen 4. Die .env-Konfiguration --- ## Sicherheitshinweise 1. **Ändern Sie die Standard-Passwörter** sofort nach der Installation 2. **Halten Sie Docker aktuell**: `sudo apt update && sudo apt upgrade` 3. **Regelmäßige Backups** - Die automatischen Backups prüfen 4. **HTTPS verwenden** für Produktionsumgebungen 5. **Firewall konfigurieren** - Nur notwendige Ports öffnen