Wie man Go-neb einrichtet (neueste Version). Hierbei handelt es sich um einen Chatbot, der Dienste wie den automatischen Versand von RSS-Newsfeeds, die Suche nach GIF-Bildern oder Informationen aus Wikipedia und viele andere Funktionalitäten zur Verfügung stellt. Der Chatbot ist einfach einzurichten und kann dann über den Messaging-Client Riot (Client für den Matrix-Server) verwendet werden.
Hinweis:
Ich habe beschlossen, dieses Tutorial zu aktualisieren, weil es eine neue Version des Chat-Bots Go-neb auf Github gibt. Die Installationsprozedur ist jetzt anders, weil der Chat-Bot jetzt ein Go-Modul ist. Die neue Version hat auch neue Dienste (Bots) und der Wikipedia-Bot wurde ebenfalls korrigiert.
In diesem Tutorial wird der Chat-Bot mit all seinen Anforderungen installiert. Hier wird Root verwendet. Es wird jedoch eine vorher laufende und konfigurierte Matrix-Server-Instanz benötigt. Die Installation von Matrix über "Prebuild Packages" wird empfohlen. Weitere Informationen zur Installation und Konfiguration von Matrix: https://github.com/matrix-org/synapse/blob/master/INSTALL.md
Installation von GO
Sie benötigen Go 1.14 oder eine neuere Version. Wenn diese Version bereits installiert und konfiguriert ist, kann dieser Abschnitt übersprungen werden. GO kann von dieser Website heruntergeladen werden. Bitte laden Sie die neueste Version für Linux herunter:
Sie können auch diese getesteten Skripte verwenden, die die neueste Golang-Version für Ihr Betriebssystem herunterladen:
https://github.com/udhos/update-golang
Fügen Sie dann einen Softlink zu Ihrer Go-Bin-Datei hinzu:
ln -s /usr/local/go1.14.2.linux-amd64/bin/go go
ln -s /usr/local/go1.14.2.linux-amd64/bin/gofmt gofmt
Stellen Sie dann die Pfade auf dem Betriebssystem ein (falls Sie das oben erwähnte Skript nicht verwendet haben). Die Pfade müssen auf den Ordner zeigen, in den GO heruntergeladen wurde.
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
Mit diesem Befehl können Sie überprüfen, ob GO jetzt aufgerufen wird, und Sie können alle eingestellten Pfade für GO anzeigen.
go env
Auch der Befehl "version" kann verwendet werden, um die Version von GO anzuzeigen.
Installation von go-neb
Gehen Sie nun zu Ihrem Home-Ordner-Pfad Ihrer "Golang"-Installation ("Go")
Wenn Sie als root eingeloggt sind (hier in diesem Beispiel verwendet), dann ist es dieser Ordner.
/root/go/src/
Es ist "Benutzername", dann "go/src". Sie können auch den Installationspfad von your go in "/usr/local" angeben.
Erstellen Sie diesen Ordnerpfad im Ordner "/root/go/src/" oder in Ihrem go home Ordner.
mkdir -p "github.com/matrix-org"
Wechseln Sie zu dem neu erstellten Ordner "github.com/matrix-org".
cd github.com/matrix-org
Und dann das Go-neb Github-Repository klonen:
git clone https://github.com/matrix-org/go-neb
Wechseln Sie zurück zum Ordner "github.com".
cd ..
Führen Sie nun den folgenden Schritt aus.
Erstellen Sie diese Ordner:
mkdir -p "lib/pq"
mkdir -p "matrix-org/dugong"
mkdir -p "matrix-org/util"
mkdir -p "mattn/go-sqlite3"
mkdir -p "prometheus/client_golang"
mkdir -p "sirupsen/logrus"
Klonen Sie dieses Github-Repository "https://github.com/lib/pq.git" in den erstellten Ordner:
git clone https://github.com/lib/pq.git lib/pq/
Klonen Sie dieses Github-Repository "https://github.com/matrix-org/dugong" in den erstellten Ordner:
git clone https://github.com/matrix-org/dugong matrix-org/dugong
Klonen Sie dieses Github-Repository "https://github.com/matrix-org/util" in den erstellten Ordner:
git clone https://github.com/matrix-org/util matrix-org/util
Klonen Sie dieses Github-Repository "https://github.com/mattn/go-sqlite3" in den erstellten Ordner:
git clone https://github.com/mattn/go-sqlite3 mattn/go-sqlite3
Klonen Sie dieses Github-Repository "https://github.com/prometheus/client_golang" in den erstellten Ordner:
git clone https://github.com/prometheus/client_golang prometheus/client_golang
Klonen Sie dieses Github-Repository "https://github.com/sirupsen/logrus" in den erstellten Ordner:
git clone https://github.com/sirupsen/logrus sirupsen/logrus
Wechseln Sie zu Ihrem Go-neb-Ordner.
cd matrix-org/go-neb
Jetzt können Sie Ihren Go-neb-Chat-Bot bauen.
go build github.com/matrix-org/go-neb
Dies kann einige Zeit in Anspruch nehmen. Sie können in der Zwischenzeit sich einen Kaffee gönnen :D
Wenn der Bauprozess abgeschlossen war, dann finden Sie die Binärdatei (Name: "go-neb") Ihres Chat-Bots in diesem Ordner:
~/go/src/github.com/matrix-org/go-neb
Bitte erstellen Sie einen Ordner "bin" und verschieben Sie diese Binärdatei in den erstellten Ordner "bin".
mkdir bin && mv go-neb bin/
Kopieren Sie den vollständigen "go-neb"-Ordner in einen Ordner, in dem Sie Ihre Anwendungen speichern:
cp ~/go/src/github.com/matrix-org/go-neb /opt/ -R
Konfiguration von go-neb
Nun müssen Sie einen Benutzer (go-neb) für den Chatbot anlegen, der keine Sudo-Rechte hat und mit dem Home-Verzeichnis /opt/go-neb verwendet werden kann
Erstellen Sie die Gruppe go-neb und fügen Sie den Benutzer go-neb zu dieser Gruppe hinzu. Vergessen Sie nicht, dem jetzt erstellten Benutzer go-neb Zugriffsrechte auf den Ordner des Programms go-neb zu erteilen.
chown -R go-neb:go-neb /opt/go-neb
Erstellen Sie in Matrix einen neuen Benutzer für den Chatbot. Hier hat der Bot den Namen "bot".
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448
Go-neb kann direkt mit diesem Befehl ausgeführt werden:
BIND_ADDRESS=:4050 DATABASE_TYPE=sqlite3 DATABASE_URL=go-neb.db?_busy_timeout=5000 BASE_URL=http://localhost:4050 bin/go-neb
Hier wird jedoch ein Systemdienst für dieses Programm für den produktiven Einsatz angelegt.
vim /etc/systemd/system/go-neb.service
[Unit]
Description=Go-neb bot for matrix-synapse server
After=network.target
[Service]
WorkingDirectory=/opt/go-neb
ExecStart=/opt/go-neb/bin/go-neb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=go-neb
User=go-neb
Group=go-neb
Environment=BIND_ADDRESS=localhost:4050 DATABASE_TYPE=sqlite3 DATABASE_URL=db/go-neb.db?_busy_timeout=5000 BASE_URL=http://localhost:4050 CONFIG_FILE=config.yaml
Restart=always
RestartSec=10
StartLimitInterval=900
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
Erstellen Sie einen Ordner für die Datenbank des Chat-Bots.
mkdir /opt/go-neb/db
Konfigurieren Sie nun die Einstellungen des Chatbots go-neb. Die Konfigurationsdatei muss kopiert werden und kann dann nach Ihren Bedürfnissen angepasst werden.
cp config.sample.yaml config.yaml
Der Chat-Bot wird in diesem Abschnitt t eingerichtet. Für den Chat-Bot können mehrere Benutzer (Clients) verwendet werden. Hier wird nur ein Benutzer eingerichtet. Bitte geben Sie das in der Matrix-Konfiguration definierte AccessToken ein. UserID entspricht dem Benutzerkonto im Matrix-Server.
clients:
- UserID: "@bot:localhost"
AccessToken: "XXXXXXXXXXX"
HomeserverURL: "http://localhost:8448"
Sync: true
AutoJoinRooms: true
DisplayName: "Go-NEB Chatbot"
Die Funktionen des Chatbots können in diesem Abschnitt "Dienste" eingerichtet werden. Sie können hier auch Ihre eigenen Dienste hinzufügen. Neue Api-Schlüssel müssen erstellt werden. Die API-Schlüssel in der Konfiguration funktionieren nicht. Sie müssen Ihre API-Schlüssel erstellen.
# The list of services which Go-NEB is aware of.
# Delete or modify this list as appropriate.
# See the docs for /configureService for the full list of options:
# https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/api/index.html#ConfigureServiceRequest
services:
- ID: "giphy_service"
Type: "giphy"
UserID: "@goneb:localhost" # requires a Syncing client
Config:
api_key: "XXXX"
use_downsized: false
Aktivieren und starten Sie nun den neu erstellten Dienst.
systemctl enable go-neb
systemctl start go-neb
Fehlerbehebung
Wenn Sie die folgende Fehlermeldung "start-limit-hit" erhalten:
Apr 05 19:28:02 myserver systemd[1]: Failed to start Go-neb Bot For Synapse-Matrix server.
Apr 05 19:28:02 myserver systemd[1]: go-neb.service: Failed with result 'start-limit-hit'.
Lösung: Setzen Sie Ihren Dienst mit diesem Befehl zurück.
systemctl reset-failed go-neb
Weitere Informationen
Es gibt andere Einstellungen als die hier erwähnten. Die Funktionalität von Go-neb kann auch durch selbst programmierte Dienste erweitert werden. Für den Dienst guggy gibt es seitens des Betreibers keine API-Schlüssel mehr.
Weitere Informationen über Go-neb und die Go-neb-API finden Sie auf dieser Website: https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/
Github-Seite von Go-neb (enthält auch Dokumentation): https://github.com/matrix-org/go-neb