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 |
Matrix |
Mastodon
+
License |
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