Files
Mobil_Tag/UBUNTU_SETUP.md
T

2.9 KiB

Ubuntu-Server Setup für Mobile Tag

Diese Anleitung zeigt, wie du Node.js neben PHP auf einem Ubuntu-Server installierst und das Mobile Tag Backend betreibst.

1. Node.js installieren (Methode A: NodeSource)

# System aktualisieren
sudo apt update && sudo apt upgrade -y

# NodeSource Repository für Node.js 20 hinzufügen
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# Node.js + npm installieren
sudo apt-get install -y nodejs

# Version prüfen
node -v
npm -v

Alternative: Node.js mit nvm installieren (empfohlen)

# nvm installieren
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# nvm in aktueller Session verfügbar machen
source ~/.bashrc

# Node.js 20 installieren
nvm install 20
nvm use 20
nvm alias default 20

# Version prüfen
node -v
npm -v

2. Projekt auf den Server kopieren

Per git clone, scp, rsync oder FTP in ein Verzeichnis wie /var/www/mobile-tag kopieren.

cd /var/www/mobile-tag

3. Abhängigkeiten installieren

npm run install:all

4. Build

npm run build

5. Server starten

Einfacher Start (für Tests)

cd server
npm start

Der Server läuft dann auf Port 3001.

Produktiver Start mit PM2 (empfohlen)

# PM2 global installieren
sudo npm install -g pm2

# Server als Dienst starten
cd /var/www/mobile-tag/server
pm2 start dist/index.js --name mobile-tag-server

# PM2 so konfigurieren, dass es nach Neustart automatisch startet
pm2 save
pm2 startup
# → Den ausgegebenen Befehl kopieren und ausführen

6. Reverse Proxy mit Nginx (empfohlen)

Damit das Backend über HTTPS und Port 443 erreichbar ist, kannst du Nginx als Reverse Proxy nutzen:

server {
    listen 80;
    server_name api.dein-domain.de;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Anschließend Let's Encrypt für HTTPS einrichten:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d api.dein-domain.de

7. Frontend deployen

Das Frontend (client/dist nach npm run build) kannst du wie gewohnt über deinen PHP-Webserver ausliefern.

Im Client muss die Server-URL angepasst werden (client/.env):

VITE_SERVER_URL=https://api.dein-domain.de

8. Firewall

Falls UFW aktiv ist, Port 3001 nur für den internen Reverse Proxy freigeben (oder für Tests direkt):

sudo ufw allow 3001/tcp

Bei Verwendung von Nginx Reverse Proxy ist das nicht nötig.

Wichtige Hinweise

  • Das Backend braucht Node.js, da PHP keine WebSocket-Verbindungen für Echtzeit-Spiele halten kann.
  • Dein PHP-Server kann weiterhin parallel laufen.
  • Für HTTPS ist Let's Encrypt empfohlen, da Kamera/GPS/Orientierung in Browsern HTTPS erfordern.