SELF-HOSTED // DEBIAN 13 // PANEL-AGNOSTIC

Bot Control selbst hosten

Das WeltEndzeit Bot Control Panel wird auf deinem eigenen vServer installiert. Die Anwendung besitzt keine feste öffentliche Interface-Domain. Du entscheidest selbst, ob das Panel später z. B. unter bot.example.org, example.org/bots/ oder einer anderen Adresse erreichbar ist.

Debian 13KeyHelpPleskcPanelApache/nginx

1. Wichtig: botzeug.weltendzeit.info ist nur die Downloadquelle

Die Adresse botzeug.weltendzeit.info/installer/ dient ausschließlich dazu, die Installationsdateien bereitzustellen. Das installierte Bot Control Panel wird nicht an diese Domain gebunden.

Beispiel:
Download des Installers: botzeug.weltendzeit.info/installer/
Dein installiertes Panel: beispielsweise music.example.org, botpanel.meinedomain.de oder meinedomain.de/botcontrol/.

Das Panel selbst lauscht standardmäßig nur auf 127.0.0.1:8787. Dein vorhandener Webserver oder dein Hosting-Panel übernimmt HTTPS und die öffentliche Domain.

2. Voraussetzungen

  • Debian 13
  • Root-Zugriff per SSH
  • Internetzugang vom Server
  • freie lokale TCP-Portnummer, standardmäßig 8787
  • FFmpeg wird vom Installer installiert
  • ausreichend Speicher für hochgeladene Musik
  • für öffentlichen Zugriff eine eigene Domain/Subdomain und HTTPS
Hosting-Panel: KeyHelp, Plesk oder cPanel dürfen bereits installiert sein. Der WeltEndzeit-Installer verändert deren Konfiguration nicht.

3. Installer beziehen

Die offiziellen Installationsdateien liegen auf der WeltEndzeit-Downloadseite:

https://botzeug.weltendzeit.info/installer/install-script.sh
https://botzeug.weltendzeit.info/installer/weltendzeit-botpanel.tar.gz

Diese URLs bestimmen nur, woher das Script und das Programmpaket heruntergeladen werden. Sie bestimmen nicht die spätere Panel-Adresse.

4. Debian 13 prüfen

cat /etc/os-release
uname -m
free -h
df -h

Optional ist vor der Installation ein Snapshot oder Backup des vServers sinnvoll.

5. Installation starten

Als root:

bash <(curl -fsSL https://botzeug.weltendzeit.info/installer/install-script.sh)

Der Installer führt kein vollständiges System-Upgrade aus und ändert keine Apache-, nginx-, KeyHelp-, Plesk- oder cPanel-Konfiguration.

Er richtet ausschließlich die für WeltEndzeit Bot Control benötigten Komponenten ein:

  • Linux-Systembenutzer weltendzeitbot
  • Anwendung unter /opt/weltendzeit-bots/
  • Konfiguration und Secrets unter /etc/weltendzeit-bots/
  • lokales Node.js 24 unterhalb der Anwendung
  • FFmpeg und notwendige Runtime-Pakete
  • systemd-Dienst weltendzeit-botpanel.service
  • Admin-Benutzer beim ersten Setup

Anderen internen Port verwenden

Ist 8787 bereits belegt, kann ein anderer Port gewählt werden:

WELTENDZEIT_PORT=8790 bash <(curl -fsSL https://botzeug.weltendzeit.info/installer/install-script.sh)

6. Interner Dienst

Standardmäßig läuft die Anwendung ausschließlich unter:

http://127.0.0.1:8787

Kontrollieren:

systemctl status weltendzeit-botpanel --no-pager -l
ss -ltnp | grep 8787
curl -I http://127.0.0.1:8787/
Absicht: 127.0.0.1 ist nur lokal erreichbar. Normalerweise wird Port 8787 nicht in der Firewall geöffnet.

7. Eigene Domain, Subdomain oder URL-Pfad

Jetzt legst du selbst fest, wo dein Panel erreichbar sein soll. Beispiele:

https://botpanel.example.org/
https://music.example.org/
https://example.org/bots/

Der bestehende Webserver übernimmt TLS/HTTPS und leitet Anfragen intern an 127.0.0.1:8787 weiter.

Welche Oberfläche dafür verwendet wird, hängt von deinem Server ab. Bei einem Hosting-Panel sollte bevorzugt dessen vorgesehene Funktion für zusätzliche Apache-/nginx-Direktiven oder Reverse Proxies verwendet werden, damit Updates des Panels die Einstellung nicht überschreiben.

8. KeyHelp

Der Installer ändert KeyHelp nicht. Lege deine gewünschte Domain oder Subdomain in KeyHelp selbst an, aktiviere HTTPS und ergänze anschließend einen Reverse Proxy über die dafür vorgesehenen zusätzlichen Webserver-Direktiven.

Beispiel: Panel auf einer eigenen Subdomain am Root

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8787/
ProxyPassReverse / http://127.0.0.1:8787/

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

Beispiel: Panel nur unter /bots/

ProxyPreserveHost On
ProxyPass /bots/ http://127.0.0.1:8787/
ProxyPassReverse /bots/ http://127.0.0.1:8787/

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

Danach Apache über den vom System vorgesehenen Weg prüfen und neu laden. Die vom Installer installierte Anwendung selbst bleibt unverändert.

9. Plesk

Auch Plesk wird nicht automatisch verändert. Erstelle die gewünschte Domain/Subdomain in Plesk und verwende die Plesk-eigenen Apache-/nginx-Einstellungen für den Reverse Proxy.

Typisches nginx-Prinzip für eine eigene Panel-Subdomain

location / {
    proxy_pass http://127.0.0.1:8787/;
    proxy_http_version 1.1;

    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_set_header X-Forwarded-Proto $scheme;
}
Hinweis: Verwende die von deiner Plesk-Version bereitgestellten Felder für zusätzliche Webserver-Direktiven. Generierte vHost-Dateien sollten nicht manuell überschrieben werden.

10. cPanel

WeltEndzeit Bot Control ist auch hier vom Control Panel entkoppelt: Das Programm läuft nur lokal auf einem TCP-Port. cPanel bzw. der von cPanel verwaltete Webserver übernimmt die öffentliche Domain.

Richte den Reverse Proxy über eine von deiner cPanel-/Webserver-Konfiguration unterstützte Include- oder Proxy-Funktion ein. Das technische Apache-Ziel bleibt:

http://127.0.0.1:8787/

Ein generisches Apache-Beispiel lautet:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8787/
ProxyPassReverse / http://127.0.0.1:8787/

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
Wichtig: Nicht direkt in automatisch generierte cPanel-vHost-Dateien schreiben, wenn deine Installation dafür eine persistente Include-/Konfigurationsfunktion bereitstellt.

11. Apache ohne Hosting-Panel

Bei einem selbst verwalteten Apache können die notwendigen Module aktiviert werden:

a2enmod proxy
a2enmod proxy_http
a2enmod headers

Beispiel für einen eigenen HTTPS-vHost:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8787/
ProxyPassReverse / http://127.0.0.1:8787/

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

Danach:

apache2ctl configtest
systemctl reload apache2

12. nginx ohne Hosting-Panel

location / {
    proxy_pass http://127.0.0.1:8787/;
    proxy_http_version 1.1;

    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_set_header X-Forwarded-Proto $scheme;
}

Der TLS-vHost und die Zertifikatsverwaltung bleiben Sache deiner vorhandenen nginx-Konfiguration.

13. Erster Login

Öffne anschließend genau die Domain oder den URL-Pfad, den du selbst für den Reverse Proxy eingerichtet hast. Es gibt keine von WeltEndzeit fest vorgegebene Interface-Adresse.

Melde dich mit dem während der Installation erstellten Administrator-Konto an.

14. Discord-Bot hinzufügen

Jeder Benutzer erstellt seine Discord-Anwendung selbst im Discord Developer Portal. WeltEndzeit Bot Control benötigt zum Hinzufügen nur den Bot-Token.

  1. Discord-Application selbst erstellen.
  2. Bot zur Application hinzufügen.
  3. Bot-Token erzeugen und sicher kopieren.
  4. Im WeltEndzeit-Panel Bot hinzufügen auswählen.
  5. Bot-Token einfügen.
  6. Das Panel liest Botname, Avatar und Application-ID aus.
  7. Mit dem erzeugten Einladungsbutton den Bot auf den gewünschten Discord-Server einladen.
Bot-Token niemals veröffentlichen. Ein Bot-Token ermöglicht die Anmeldung als dieser Bot und muss wie ein Passwort behandelt werden.

15. Service-Befehle

Status

systemctl status weltendzeit-botpanel --no-pager -l

Neustart

systemctl restart weltendzeit-botpanel

Live-Log

journalctl -u weltendzeit-botpanel -f

Letzte 100 Zeilen

journalctl -u weltendzeit-botpanel -n 100 --no-pager

16. Updates

Neue Versionen werden wieder über die WeltEndzeit-Downloadquelle bereitgestellt. Der Installationsbefehl kann erneut ausgeführt werden:

bash <(curl -fsSL https://botzeug.weltendzeit.info/installer/install-script.sh)

Persistente Daten unter /opt/weltendzeit-bots/data/ und Secrets unter /etc/weltendzeit-bots/ bleiben bei einem normalen Update erhalten.

Die selbst eingerichtete öffentliche Domain und die Reverse-Proxy-Konfiguration bleiben ebenfalls außerhalb des Installers und werden daher nicht überschrieben.

17. Fehlersuche

Interner Dienst nicht erreichbar

systemctl status weltendzeit-botpanel --no-pager -l
journalctl -u weltendzeit-botpanel -n 100 --no-pager
ss -ltnp | grep 8787
curl -I http://127.0.0.1:8787/

502 Bad Gateway

Der öffentliche Webserver ist erreichbar, kann aber den internen Dienst nicht erreichen. Prüfe zuerst, ob der systemd-Dienst läuft und ob der im Reverse Proxy konfigurierte Port dem installierten Port entspricht.

Login funktioniert über HTTP nicht

Das Panel ist standardmäßig für HTTPS ausgelegt. Die Session-Cookies sind als Secure konfiguriert. Für den normalen Betrieb deshalb eine HTTPS-Domain über den Reverse Proxy verwenden.

Port 8787 ist belegt

WELTENDZEIT_PORT=8790 bash <(curl -fsSL https://botzeug.weltendzeit.info/installer/install-script.sh)

Danach muss der Reverse Proxy natürlich auf denselben alternativen Port zeigen.

18. Sicherheitsregeln

  • keine Bot-Tokens öffentlich teilen
  • HTTPS für den öffentlichen Panel-Zugriff verwenden
  • internen App-Port nicht unnötig öffentlich öffnen
  • Hosting-Panel-Konfiguration über die dafür vorgesehenen Verwaltungswege ändern
  • keine automatisch generierten vHost-Dateien dauerhaft manuell überschreiben
  • regelmäßig Backups von /opt/weltendzeit-bots/data und /etc/weltendzeit-bots erstellen
  • /etc/weltendzeit-bots/master.key besonders sichern
Ergebnis: Das Bot Control Panel ist vollständig self-hosted und nicht an eine WeltEndzeit-Domain gebunden. WeltEndzeit stellt lediglich den Installer und die Updates bereit.