Cómo configurar Go-neb (última versión). Se trata de un chatbot (bot de chat) que proporciona servicios como el envío automático de fuentes de noticias RSS, la búsqueda de imágenes GIF o información de Wikipedia y muchas otras funcionalidades. El chatbot es fácil de configurar y puede ser utilizado a través del cliente de mensajería Riot (cliente para el servidor de matriz).
Aviso:
Decidí actualizar este tutorial porque hay una nueva versión del robot de chat Go-neb en Github. El procedimiento de instalación es ahora diferente, porque el chat bot es ahora un módulo Go. La nueva versión tiene también nuevos servicios (bots) y el bot de wikipedia también fue arreglado.
En este tutorial el chat bot se instala con todos sus requisitos. Aquí se utiliza Root. Sin embargo, se requiere una instancia del Servidor Matrix previamente ejecutada y configurada. Se recomienda la instalación de Matrix a través de "Paquetes Preconstruidos". Más información sobre la instalación y configuración de Matrix: https://github.com/matrix-org/synapse/blob/master/INSTALL.md
Instalación del GO
Necesitas tener Go 1.14 o una versión más reciente. Si esa versión ya está instalada y configurada, esta sección puede saltarse. GO puede ser descargado desde este sitio web. Por favor, descargue la última versión para Linux:
También puedes usar este script probado que descarga la última versión de Golang para tu sistema operativo:
https://github.com/udhos/update-golang
Luego, agrega un enlace suave a tu archivo binario de Go:
ln -s /usr/local/go1.14.2.linux-amd64/bin/go go
ln -s /usr/local/go1.14.2.linux-amd64/bin/gofmt gofmt
Luego establezca las rutas en el sistema operativo (si no usó el guión mencionado anteriormente). Las rutas deben apuntar a la carpeta donde se descargó GO.
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
Con este comando puedes comprobar si el GO se llama ahora y puedes mostrar todos los caminos establecidos para el GO.
go env
También se puede usar el comando "versión" para mostrar la versión del GO.
Instalación de go-neb
Ahora ve a la ruta de tu carpeta de inicio de tu instalación "Golang" ("Go")
Si está conectado como root (usado aquí en este ejemplo), entonces es esta carpeta.
/root/go/src/
Es "nombre de usuario" y luego "go/src". También puedes ir a la ruta de instalación de tu go en "/usr/local".
Crea esta ruta en la carpeta "/root/go/src/" o en tu carpeta de inicio de go.
mkdir -p "github.com/matrix-org"
Cambiar a la nueva carpeta creada "github.com/matrix-org"
cd github.com/matrix-org
Y luego clonar el depósito de go-neb Github:
git clone https://github.com/matrix-org/go-neb
Vuelve a la carpeta "github.com"
cd ..
Ahora, haz el siguiente paso.
Cree estas carpetas:
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"
Clonar este repositorio Github "https://github.com/lib/pq.git" en la carpeta creada:
git clone https://github.com/lib/pq.git lib/pq/
Clonar este repositorio Github "https://github.com/matrix-org/dugong" en la carpeta creada:
git clone https://github.com/matrix-org/dugong matrix-org/dugong
Clonar este repositorio Github "https://github.com/matrix-org/util" en la carpeta creada:
git clone https://github.com/matrix-org/util matrix-org/util
Clonar este repositorio Github "https://github.com/mattn/go-sqlite3" en la carpeta creada:
git clone https://github.com/mattn/go-sqlite3 mattn/go-sqlite3
Clonar este repositorio Github "https://github.com/prometheus/client_golang" en la carpeta creada:
git clone https://github.com/prometheus/client_golang prometheus/client_golang
Clonar este repositorio Github "https://github.com/sirupsen/logrus" en la carpeta creada:
git clone https://github.com/sirupsen/logrus sirupsen/logrus
Cambie a su carpeta go-neb.
cd matrix-org/go-neb
Ahora, puedes construir tu robot de chat go-neb.
go build github.com/matrix-org/go-neb
Esto puede llevar algo de tiempo. Puedes ir a tomar un café mientras tanto.
Si el proceso de construcción se hizo, entonces puedes encontrar el archivo binario (nombre: "go-neb") de tu bot de chat en esta carpeta:
~/go/src/github.com/matrix-org/go-neb
Por favor, crea una carpeta "bin" y mueve ese archivo binario a la carpeta creada "bin".
mkdir bin && mv go-neb bin/
Copie la carpeta completa de "go-neb" en una carpeta donde guarde sus aplicaciones:
cp ~/go/src/github.com/matrix-org/go-neb /opt/ -R
Configuración del go-neb
Ahora tienes que crear un usuario (go-neb) para el chatbot, que no tiene derechos de Sudo y puede ser usado con el directorio de inicio /opt/go-neb
Crea el go-neb del grupo y añade el go-neb del usuario a este grupo. No olvides dar derechos de acceso a la carpeta del programa go-neb para el usuario go-neb ahora creado.
chown -R go-neb:go-neb /opt/go-neb
Crear un nuevo usuario en Matrix para el chatbot. Aquí el bot del usuario se usa para el go-neb.
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448
Go-neb puede ser ejecutado directamente usando este comando:
BIND_ADDRESS=:4050 DATABASE_TYPE=sqlite3 DATABASE_URL=go-neb.db?_busy_timeout=5000 BASE_URL=http://localhost:4050 bin/go-neb
Aquí, sin embargo, se crea un servicio de sistema para este programa para su uso en la producción.
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
Crear una carpeta para la base de datos del robot del chat.
mkdir /opt/go-neb/db
Ahora configura los ajustes del chatbot go-neb. El archivo de configuración debe ser copiado y luego puede ser personalizado de acuerdo a sus necesidades.
cp config.sample.yaml config.yaml
El bot de chat está configurado en esta sección. Se pueden utilizar varios usuarios (clientes) para el bot de chat. Aquí sólo se configura un usuario. Por favor, introduzca el AccessToken definido en la configuración de Matrix. La ID de usuario corresponde a la cuenta de usuario en el servidor Matrix.
clients:
- UserID: "@bot:localhost"
AccessToken: "XXXXXXXXXXX"
HomeserverURL: "http://localhost:8448"
Sync: true
AutoJoinRooms: true
DisplayName: "Go-NEB Chatbot"
Las funciones del chatbot se pueden configurar en esta sección "servicios". También puedes añadir tus propios servicios aquí. Hay que crear nuevas claves de API. Las claves de la API en la configuración no funcionan. Tienes que crear y tus claves de API.
# 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
Ahora activa e inicia el servicio recién creado.
systemctl enable go-neb
systemctl start go-neb
Solución de problemas
Si obtienes el siguiente error "start-limit-hit":
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'.
Solución: Reinicie su servicio con este comando.
systemctl reset-failed go-neb
Más información
Hay otros escenarios además de los mencionados aquí. La funcionalidad de Go-neb también puede ser ampliada por servicios auto-programados. Para el servicio guggy no hay más claves de API por parte del operador.
Más información sobre Go-neb y la API de Go-neb se puede encontrar en esta página web: https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/
Página de Github de Go-neb (incluye también documentación): https://github.com/matrix-org/go-neb