In dieser Anleitung geht es darum, wie wir den Sinusbot auf einem Raspberry Pi installieren und zum laufen bekommen. Aktuell unterstützt der Sinusbot nur eine AMD64 Architektur und keine Möglichkeit diesen unter ARM laufen zu lassen.
Es gibt einen Inoffiziellen Weg den ich hier beschreiben werde. Ich übernehme aber keine Haftung für etwaige Schäden oder Unzuverlässigkeiten!
Sinusbot installieren
Im ersten Schritt müssen wir überprüfen welche Pagesize unser Raspberry PI hat. Die Pagesize muss 4k betragen. Welche Pagesize aktuell eingestellt ist, können wir mit dem folgenden Befehl überprüfen:
getconf PAGESIZEWir erhalten in der Regel auf einem Raspberry Pi dann eine Ausgabe mit 16384. Da dies leider zu hoch ist, müssen wir dies über die Boot-Config auf unserem Raspberry Pi ändern. Dazu öffnen wir die folgende Datei und fügen an unterster Stelle unter [all] den folgenden Inhalt ein:
sudo nano /boot/firmware/config.txtkernel=kernel8.imgIm Anschluss müssen wir den Raspberry Pi einmal neustarten.
systemctl rebootSobald der Raspberry Pi wieder hochgefahren ist, müssen wir einmal überprüfen ob die Pagesize jetzt 4096 ist.
getconf PAGESIZEDocker installieren
Als nächstes müssen wir jetzt auf unserem Raspberry Pi Docker und Docker-Compose installieren. Dazu führen wir die unten stehenden Befehle aus.
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginIm Anschluss können wir einmal überprüfen ob die Installation erfolgreich geklappt hat, in dem wir die beiden Befehle ausführen. Wir sollten dann die Versionsnummern unserer Docker-Installationen sehen.
docker version
docker-compose versionQEMU/binfmt für amd64 aktivieren
Im nächsten Schritt aktivieren wir die AMD64 Emulation auf unserem Raspberry Pi. Dazu führen wir den folgenden Befehl aus um den Emulator zu aktivieren.
docker run --privileged --rm tonistiigi/binfmt --install amd64Wenn der Befehl durchgelaufen ist, sollten wir jetzt AMD64 Container ausführen können. Um dies einmal zu testen können wir einmal den folgenden Container einmal starten.
docker run --rm --platform linux/amd64 alpine uname -mBenutzer & Verzeichnis vorbereiten
Um den Sinusbot jetzt laufen zu lassen, müssen wir dafür einen dedizierten Benutzer für den Dienst erstellen. Dazu führen wir den folgenden Befehl aus:
sudo useradd sinusbotIm Anschluss erstellen wir ein Verzeichnis indem unser Sinusbot später seine eigenen Dateien ablegen kann. Ich erstelle diese gerne immer unter /opt.
mkdir -p /opt/sinusbotContainer vorbereiten und starten
Im ersten Schritt legen wir die Verzeichnisse an, in denen Sinusbot seine Daten ablegt. Dazu können wir den folgenden Befehl ausführen:
mkdir -p /opt/sinusbot/data
mkdir -p /opt/sinusbot/scripts
mkdir -p /opt/sinusbot/initDann legen wir jetzt die Docker-Compose.yml Datei an die mit dem folgenden Inhalt gefüllt werden muss:
sudo nano /opt/sinusbot/docker-compose.ymlservices:
sinusbot:
image: sinusbot/docker:latest
container_name: sinusbot
platform: linux/amd64
restart: unless-stopped
ports:
- "8087:8087"
environment:
TZ: Europe/Berlin
UID: "1001"
GID: "1001"
volumes:
- ./scripts:/opt/sinusbot/scripts
- ./data:/opt/sinusbot/data
- ./init:/opt/init:ro
entrypoint: ["/bin/bash","-lc","/opt/init/bootstrap.sh; exec /opt/sinusbot/entrypoint.sh"]Wichtig: Wir müssen hier die UID und GID auf die ID’s des Sinusbot Benutzers einstellen. Dazu können wir den Befehl
id sinusboteingeben. Diese angezeigten ID’s tragen wir dann unter UID und GID ein.
Jetzt legen wir das Start-Skript unseres Sinusbots an und füllen dieses auch mit Inhalt:
sudo nano /opt/sinusbot/init/bootstrap.sh#!/usr/bin/env bash
set -euo pipefail
STAMP="/opt/sinusbot/data/.bootstrap_done"
if [[ -f "$STAMP" ]]; then
exit 0
fi
# Debian buster -> archive + valid-until off
sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list || true
sed -i 's|http://deb.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list || true
sed -i 's|security.debian.org|archive.debian.org|g' /etc/apt/sources.list || true
echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99no-check-valid-until
# Achtung: kann bei dir wieder bei libc-bin segfaulten
apt-get -o Acquire::Check-Valid-Until=false update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libpulse0 youtube-dl ca-certificates || true
touch "$STAMP"Zum Schluss setzen wir noch die Berechtigungen für die Verzeichnisse und das Skript.
chown -R sinusbot:sinusbot /opt/sinusbot/
chmod +x /opt/sinusbot/init/bootstrap.shJetzt können wir den Container starten und warten das unsere Sinusbot-Instanz erfolgreich hochfährt.
docker compose up -d -f /opt/sinusbot/docker-compose.ymlWenn der Container erfolgreich hochgefahren ist, können wir mit der IP und dem Port 8087 das Webinterface unseres Sinusbot’s öffnen.