Initial commit
Dieser Commit ist enthalten in:
398
SERVER_SETUP_ANLEITUNG.md
Normale Datei
398
SERVER_SETUP_ANLEITUNG.md
Normale Datei
@ -0,0 +1,398 @@
|
||||
# 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
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren