From 634e2fcd65ab7014e5c56ecf4aee8a3229adbda0 Mon Sep 17 00:00:00 2001 From: scriptos Date: Sat, 2 Aug 2025 18:11:10 +0200 Subject: [PATCH] testing #1 --- Dockerfile | 66 ++++++++++++++++++++++++++++++ README.md | 91 ++++++++++++++++++++++++++++++++++++++++-- data/bin/entrypoint.sh | 9 +++++ data/config.ini | 3 ++ docker-compose.yaml | 21 ++++++++++ 5 files changed, 187 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100644 data/bin/entrypoint.sh create mode 100644 data/config.ini create mode 100644 docker-compose.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..842c54a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,66 @@ +FROM ubuntu:22.04 + +ENV SINUSBOT_VERSION=current \ + TS3_VERSION=3.5.6 \ + TS3_ARCH=amd64 \ + BOT_USER=sinusbot \ + BOT_HOME=/opt/sinusbot + +# Pakete installieren +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + wget bzip2 ca-certificates curl dbus iproute2 less screen xvfb \ + libasound2 libegl1-mesa libfontconfig libglib2.0-0 libnss3 libpci3 \ + libxcomposite-dev libxcursor1 libxdamage1 libxi6 libxkbcommon0 \ + libxkbcommon-x11-0 libxss1 libxslt1.1 libxtst6 x11-xkb-utils \ + libpulse0 espeak-ng mbrola mbrola-de6 \ + fonts-dejavu fonts-liberation fonts-freefont-ttf \ + && update-ca-certificates && \ + useradd -m -d /home/${BOT_USER} -s /bin/bash ${BOT_USER} && \ + mkdir -p ${BOT_HOME} && \ + chown -R ${BOT_USER}:${BOT_USER} ${BOT_HOME} + +# SinusBot +WORKDIR /tmp +RUN wget -q https://www.sinusbot.com/dl/sinusbot.${SINUSBOT_VERSION}.tar.bz2 && \ + tar -xjf sinusbot.${SINUSBOT_VERSION}.tar.bz2 -C ${BOT_HOME} && \ + rm sinusbot.${SINUSBOT_VERSION}.tar.bz2 + +# TS3 Client +RUN wget https://files.teamspeak-services.com/releases/client/${TS3_VERSION}/TeamSpeak3-Client-linux_${TS3_ARCH}-${TS3_VERSION}.run && \ + chmod +x TeamSpeak3-Client-linux_${TS3_ARCH}-${TS3_VERSION}.run && \ + mkdir /tmp/ts3 && \ + yes y | ./TeamSpeak3-Client-linux_${TS3_ARCH}-${TS3_VERSION}.run --target /tmp/ts3 && \ + mkdir -p ${BOT_HOME}/teamspeak3-client && \ + cp -r /tmp/ts3/* ${BOT_HOME}/teamspeak3-client/ && \ + rm -rf /tmp/ts3 *.run + +# Plugin verlinken +RUN mkdir -p ${BOT_HOME}/teamspeak3-client/plugins && \ + cp ${BOT_HOME}/plugin/libsoundbot_plugin.so ${BOT_HOME}/teamspeak3-client/plugins/ + +# config.ini +COPY ./data/config.ini ${BOT_HOME}/config.ini + +# Kopieren der Standard-Skripte +RUN cp -a ${BOT_HOME}/scripts ${BOT_HOME}/scripts.dist + +# Rechte setzen +RUN chown -R ${BOT_USER}:${BOT_USER} ${BOT_HOME} && \ + chmod +x ${BOT_HOME}/sinusbot + +# entrypoint.sh ins Image kopieren +COPY ./data/bin/entrypoint.sh /opt/sinusbot/entrypoint.sh +RUN chmod +x /opt/sinusbot/entrypoint.sh + +# Rechte setzen +RUN chown -R ${BOT_USER}:${BOT_USER} ${BOT_HOME} && \ + chmod +x ${BOT_HOME}/sinusbot + +WORKDIR ${BOT_HOME} +USER ${BOT_USER} + +EXPOSE 8087 + +ENTRYPOINT ["/opt/sinusbot/entrypoint.sh"] +CMD ["./sinusbot"] diff --git a/README.md b/README.md index ffe6696..a4c5dc0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,93 @@ -# template_repository +# 🎧 Sinusbot Docker Setup +Dieses Repository stellt ein vollständig lauffähiges **Docker-Setup für Sinusbot** zur Verfügung. +Ziel ist es, Sinusbot sauber in Containern betreiben zu können – **inkl. persistenter Daten**, **Addons** und allem, was man für eine produktive Nutzung braucht. +--- -Wichtig: Link für Lizenz anpassen. +## 🧐 Was ist Sinusbot? + +[Sinusbot](https://www.sinusbot.com/) ist ein Musikbot für **Teamspeak 3** und **Discord**, der lokal oder serverseitig betrieben werden kann. +Er streamt Musik (z. B. MP3-Dateien oder Internet-Radios), kann per Webinterface gesteuert werden, unterstützt eine Vielzahl an Scripts zur Automatisierung und lässt sich sehr granular konfigurieren. + +Sinusbot eignet sich hervorragend für Gaming-Communities, Clans oder private TS3-Server, um automatisch Musik oder Soundeffekte zu spielen, Nachrichten vorlesen zu lassen (TTS) oder einfache Chat-Automationen umzusetzen. + +--- + +## 🚀 Schnellstart + +1. Repository klonen + ```bash + git clone https://git.techniverse.net/scriptos/sinusbot-docker.git + ``` + +2. In das Projektverzeichnis wechseln + ```bash + cd sinusbot-docker + ``` + +3. Schreibrechte anpassen (Benutzer-ID ggf. anpassen) + ```bash + chown -R 1000:1000 data + ``` + +4. (Optional) eigenes Docker-Netzwerk anlegen + ```bash + docker network create --subnet=172.16.72.0/24 sinusbot.dockernetwork.local + ``` + + 👉 **Hinweis:** + Falls du kein eigenes Netzwerk verwenden möchtest, kannst du diesen Schritt überspringen. Du musst außerdem den Abschnitt `networks:` in der `docker-compose.yaml` entsprechend entfernen oder anpassen. + +5. Container starten + ```bash + docker-compose up -d + ``` + +6. Admin-Kennwort anzeigen lassen (wird nur nach dem ersten Start angezeigt) + ```bash + docker-compose logs + ``` + +👉 Im Log erscheint ein Hinweis wie: + +```bash +Generating new bot instance with account 'admin' and password '3alMse7m' +PLEASE MAKE SURE TO CHANGE THE PASSWORD DIRECTLY AFTER YOUR FIRST LOGIN!!! +``` + +--- + +## 🔗 Webinterface aufrufen + +Nach dem Start erreichst du das Webinterface unter: + +``` +http://:8087 +``` + +--- + +Die vollständige Dokumentation zur Einrichtung, zur Teamspeak-Integration, zu Scripts und Addons sowie zum Volume-Handling findest du in der [Dokumentation von Sinusbot](https://sinusbot.github.io/docs/). + +--- + +## 🛠️ Hinweise + +- Der Container läuft als Benutzer `1000:1000`. Falls dein Host-System abweicht, bitte entsprechend anpassen. +- Teamspeak- und Sinusbot-Container können im selben Docker-Netzwerk betrieben werden – ideal, wenn du eine direkte Verbindung ohne NAT willst. +- Die Standard-Scripts aus dem Image werden beim **ersten Start automatisch** in den gemounteten Script-Ordner kopiert. + +--- + +## 📄 Lizenz + +Dieses Projekt steht unter der MIT-Lizenz. +Die Nutzung von Sinusbot selbst unterliegt der [FAQ von sinusbot.com](https://sinusbot.github.io/docs/faq/general/). + +--- + +Mit ❤️ von [techniverse.net](https://www.techniverse.net) @@ -11,5 +96,5 @@ Wichtig: Link für Lizenz anpassen.

-License License | Matrix Matrix | Matrix Mastodon +License License | Matrix Matrix | Matrix Mastodon

\ No newline at end of file diff --git a/data/bin/entrypoint.sh b/data/bin/entrypoint.sh new file mode 100644 index 0000000..ddd9c34 --- /dev/null +++ b/data/bin/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +SCRIPTS_DIR="/opt/sinusbot/scripts" + +if [ -d "$SCRIPTS_DIR" ] && [ ! "$(ls -A $SCRIPTS_DIR)" ]; then + cp -a /opt/sinusbot/scripts.dist/* "$SCRIPTS_DIR/" +fi + +exec "$@" diff --git a/data/config.ini b/data/config.ini new file mode 100644 index 0000000..cbeb066 --- /dev/null +++ b/data/config.ini @@ -0,0 +1,3 @@ +TS3Path = "/opt/sinusbot/teamspeak3-client/ts3client_linux_amd64" +ListenHost = "0.0.0.0" +DataDir = "/opt/sinusbot/data/" diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..ff82ec3 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,21 @@ +--- +services: + sinusbot: + image: repo.techniverse.net/docker-hosted/sinusbot:1.0.2 + container_name: sinusbot + hostname: sinusbot + networks: + sinusbot.dockernetwork.local: + ipv4_address: 172.16.72.10 + user: "1000:1000" + ports: + - "8087:8087" + volumes: + - ./data/config.ini:/opt/sinusbot/config.ini + - ./data/data:/opt/sinusbot/data + - ./data/scripts:/opt/sinusbot/scripts + restart: unless-stopped + +networks: + sinusbot.dockernetwork.local: + external: true