2.9 KiB
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.