# YourChat Deployment Scripts Diese Scripts ermöglichen das einfache Deployment von YourChat auf Ubuntu 22.04 Servern. ## Voraussetzungen - Ubuntu 22.04 LTS Server - Sudo-Rechte - Internetverbindung für Paket-Downloads ## Scripts Übersicht ### 1. `deploy.sh` - Vollständiges Deployment **Verwendung:** `./deploy/deploy.sh` Führt alle Deploy-Schritte automatisch aus: - Installation der Abhängigkeiten - Bauen der Anwendung - Installation als Systemdienst - Konfigurations-Setup ### 2. `install_dependencies.sh` - Abhängigkeiten installieren **Verwendung:** `./deploy/install_dependencies.sh` Installiert alle benötigten Pakete: - GCC-13 (als Standard-Compiler) - CMake, Build-Tools - OpenSSL, jsoncpp, pqxx - PostgreSQL (optional) ### 3. `build.sh` - Anwendung bauen **Verwendung:** `./deploy/build.sh` Baut die Anwendung mit aktiviertem Debug-Flag: - Erstellt `build/` Verzeichnis - Konfiguriert CMake mit `YC_DEBUG=ON` - Kompiliert mit allen verfügbaren CPU-Kernen ### 4. `install.sh` - Anwendung installieren **Verwendung:** `./deploy/install.sh` Installiert die Anwendung als Systemdienst: - Erstellt `/opt/yourchat/` Verzeichnis - Kopiert Binaries und Konfiguration - Erstellt systemd Service - Erstellt `yourchat` Benutzer - Aktiviert Service ### 5. `update_config.sh` - Konfiguration aktualisieren **Verwendung:** `./deploy/update_config.sh` Aktualisiert die Konfiguration sicher: - Überschreibt **keine** bestehenden Einträge - Ergänzt nur fehlende Konfigurationsoptionen - Erstellt automatisch Backups - Zeigt Änderungen an ### 6. `update.sh` - Anwendung aktualisieren **Verwendung:** `./deploy/update.sh` Für zukünftige Updates: - Stoppt Service - Baut neue Version - Aktualisiert Binaries - Aktualisiert Konfiguration - Startet Service neu ## Schnellstart 1. **Repository klonen/übertragen:** ```bash # Auf dem Ubuntu Server git clone cd YourChat ``` 2. **Vollständiges Deployment:** ```bash chmod +x deploy/*.sh ./deploy/deploy.sh ``` 3. **Service starten:** ```bash sudo systemctl start yourchat sudo systemctl status yourchat ``` ## Konfiguration Die Konfiguration wird unter `/opt/yourchat/config/chatconfig.json` installiert. **Wichtige Einstellungen:** - `server.port`: Port für den Chat-Server (Standard: 1235) - `database.*`: Datenbankverbindung - `rooms`: Vordefinierte Chat-Räume **Konfiguration bearbeiten:** ```bash sudo nano /opt/yourchat/config/chatconfig.json ``` ## Service-Verwaltung ```bash # Service starten sudo systemctl start yourchat # Service stoppen sudo systemctl stop yourchat # Service neu starten sudo systemctl restart yourchat # Status prüfen sudo systemctl status yourchat # Logs anzeigen sudo journalctl -u yourchat -f # Service deaktivieren (startet nicht automatisch) sudo systemctl disable yourchat ``` ## Firewall Falls eine Firewall aktiv ist, den Port freigeben: ```bash sudo ufw allow 1235/tcp ``` ## Troubleshooting ### Service startet nicht ```bash # Logs prüfen sudo journalctl -u yourchat -n 50 # Konfiguration prüfen sudo cat /opt/yourchat/config/chatconfig.json | python3 -m json.tool ``` ### Port bereits belegt ```bash # Prüfen welcher Prozess den Port verwendet sudo netstat -tlnp | grep 1235 # Port in Konfiguration ändern sudo nano /opt/yourchat/config/chatconfig.json ``` ### Berechtigungsprobleme ```bash # Berechtigungen korrigieren sudo chown -R yourchat:yourchat /opt/yourchat sudo chmod 755 /opt/yourchat sudo chmod 644 /opt/yourchat/config/chatconfig.json ``` ## Backup & Wiederherstellung ### Backup erstellen ```bash # Konfiguration sudo cp /opt/yourchat/config/chatconfig.json /backup/chatconfig.json.backup # Datenbank (falls lokal) sudo pg_dump yourchat > /backup/database.backup ``` ### Wiederherstellung ```bash # Konfiguration sudo cp /backup/chatconfig.json.backup /opt/yourchat/config/chatconfig.json sudo chown yourchat:yourchat /opt/yourchat/config/chatconfig.json # Service neu starten sudo systemctl restart yourchat ``` ## Updates Für zukünftige Updates: ```bash # Code aktualisieren git pull # Anwendung updaten ./deploy/update.sh ``` ## Sicherheit - Die Anwendung läuft als dedizierter `yourchat` Benutzer - Konfigurationsdateien haben restriktive Berechtigungen - Service startet nicht automatisch nach Reboot (kann mit `systemctl enable` aktiviert werden) - Logs werden über systemd journal verwaltet