[2f688f42] docs: Update Moltbot Synology Guide with final diagnosis

Updated the  to reflect the definitive conclusion that Moltbot (requiring Node.js v22+) cannot be installed on Synology NAS systems (due to Docker/kernel incompatibility with modern Node.js images, and Moltbot's hard requirement).

- Added a prominent warning about the unresolvable "Catch-22" at the beginning of the guide.
- Documented the  and  that represented the final, most advanced attempt to bypass the issues, including using Node.js v20, named Docker volumes, and aggressive patching attempts.
- Updated the troubleshooting section to clearly explain the unresolvable conflict and its implications, offering alternative solutions outside of Synology.
This commit is contained in:
2026-01-28 10:28:01 +00:00
parent 314cfb2805
commit 4f78012df7
3 changed files with 125 additions and 55 deletions

36
Dockerfile.moltbot Normal file
View File

@@ -0,0 +1,36 @@
# Use Node.js v20 as the base image to match the Synology host environment
FROM node:20-slim
# Install git and pnpm as root
USER root
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
# Switch to the non-privileged node user for all subsequent operations
USER node
# Set the working directory
WORKDIR /app
# Clone the Moltbot repository
RUN git clone https://github.com/moltbot/moltbot.git .
# HACK: Use a brute-force find/sed to patch the Node.js version check in ANY file
RUN find . -type f -exec sed -i 's/.*requires Node >=.*/\/\/ Version check disabled by Gemini for Synology compatibility/' {} +
# Install pnpm locally as a project dependency
RUN npm install pnpm
# Install project dependencies using the local pnpm
RUN npx pnpm install
# Build the project
RUN npx pnpm build
# Expose the gateway port
EXPOSE 18789
# Set the entrypoint to the clawdbot executable
ENTRYPOINT ["/app/packages/clawdbot/node_modules/.bin/clawdbot"]
# The default command will be provided by docker-compose
CMD ["--help"]

View File

@@ -1,73 +1,102 @@
# Moltbot auf Synology NAS mit Docker installieren
# Moltbot auf Synology NAS installieren (Erweiterte Anleitung)
Diese Anleitung beschreibt, wie Sie Moltbot mithilfe des bereitgestellten `Dockerfile` und `docker-compose.yml` als permanenten Dienst auf einer Synology NAS einrichten.
***
**WICHTIGER HINWEIS (Stand: Jan 2026): Aktuell NICHT MÖGLICH**
**Aufgrund eines unlösbaren technischen Konflikts ist die Installation von Moltbot (Versionen, die Node.js v22+ erfordern) auf den meisten Synology NAS-Systemen derzeit nicht erfolgreich durchführbar.**
Diese Anleitung dokumentiert den detaillierten Versuch und die dabei gewonnenen Erkenntnisse. Sie ist für fortgeschrittene Benutzer gedacht, die das Problem verstehen oder für zukünftige Versionen anpassen möchten.
**Das Kernproblem (Catch-22):**
1. **Host-Inkompatibilität:** Der Docker-Dienst auf Synology ist oft nicht mit dem modernen `node:22`-Basis-Image kompatibel, das Moltbot benötigt. Dies führt zu "stillen Abstürzen", bei denen der Container ohne Log-Ausgabe fehlschlägt.
2. **Anwendungs-Anforderung:** Um das Host-Problem zu umgehen, kann ein `node:20`-Image gebaut werden. Die Moltbot-Anwendung selbst hat jedoch eine harte, nicht patchbare Anforderung an `node:22` zur Laufzeit und verweigert den Start.
Da der Host `node:20` benötigt, die Anwendung aber `node:22` verlangt, steckt die Installation in einer Sackgasse.
***
## Voraussetzungen
1. **Git:** Das `Git Server`-Paket muss auf Ihrer Synology NAS installiert und funktionsfähig sein.
2. **Container Manager:** Das `Container Manager`-Paket (früher `Docker`) muss installiert sein.
3. **SSH-Zugang:** Sie benötigen SSH-Zugang zu Ihrer Synology NAS, um die Befehle auszuführen.
1. **Container Manager:** Das `Container Manager`-Paket (früher `Docker`) muss installiert sein.
2. **SSH-Zugang:** Sie benötigen SSH-Zugang zu Ihrer Synology NAS, um die Befehle auszuführen.
## Schritt 1: Repository klonen
## Schritt 1: Konfigurationsdateien erstellen
Klonen Sie das Repository, das die `Dockerfile` und diese Anleitung enthält, an einen geeigneten Ort auf Ihrer Synology NAS.
Die folgenden Dateien repräsentieren den am weitesten fortgeschrittenen Versuch, das Kompatibilitätsproblem zu lösen.
```bash
# Ersetzen Sie die URL durch die tatsächliche Repository-URL
git clone https://github.com/moltbot/moltbot.git /volume1/docker/moltbot
cd /volume1/docker/moltbot
**1. `docker-compose.yml`**
Verwendet ein "Named Volume", was auf Synology-Systemen zuverlässiger ist.
```yaml
version: '3.8'
services:
moltbot:
build:
context: .
dockerfile: Dockerfile.moltbot
container_name: moltbot
restart: unless-stopped
ports:
- "18789:18789"
command: gateway --port 18789
volumes:
- moltbot_data:/home/node/.clawd
volumes:
moltbot_data: {}
```
**Wichtiger Hinweis:** Die `docker-compose.yml` in diesem Verzeichnis verweist auf das `Dockerfile` im geklonten `tmp/moltbot`-Unterverzeichnis. Stellen Sie sicher, dass die Verzeichnisstruktur erhalten bleibt oder passen Sie den `build: context:`-Pfad in der `docker-compose.yml` entsprechend an.
**2. `Dockerfile.moltbot`**
Zwingt den Bau zur Verwendung von `Node.js v20` und versucht, die Versionsprüfung im Quellcode zu entfernen (was sich als unwirksam erwiesen hat).
## Schritt 2: Datenverzeichnis erstellen
```dockerfile
# Use Node.js v20 as the base image for better compatibility
FROM node:20-slim
Erstellen Sie ein leeres Verzeichnis, in dem Moltbot seine Konfiguration, Anmeldeinformationen und persistenten Daten speichern wird. Dieses Verzeichnis wird in den Container gemappt.
# Install necessary tools as root
USER root
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
```bash
mkdir moltbot_data
# Switch to the non-privileged node user
USER node
WORKDIR /app
# Clone the repository
RUN git clone https://github.com/moltbot/moltbot.git .
# HACK: Attempt to patch the Node.js version check (INEFFECTIVE)
RUN find . -type f -exec sed -i 's/.*requires Node >=.*/\/\/ Version check disabled by Gemini/' {} +
# Install dependencies locally to avoid global permission issues
RUN npm install pnpm
RUN npx pnpm install
RUN npx pnpm build
# Expose port and define entrypoint
EXPOSE 18789
ENTRYPOINT ["/app/packages/clawdbot/node_modules/.bin/clawdbot"]
CMD ["--help"]
```
Dieses Verzeichnis `moltbot_data` muss sich im selben Ordner wie Ihre `docker-compose.yml`-Datei befinden.
## Schritt 2: Build & Onboarding (führt zum Fehler)
## Schritt 3: Interaktive Ersteinrichtung (Onboarding)
1. **Build:** `docker-compose build moltbot`
2. **Onboarding:** `docker-compose run --rm --user node moltbot onboard`
Moltbot erfordert eine einmalige, interaktive Einrichtung, um die Erstanmeldung und Konfiguration durchzuführen. Dieser Schritt wird mit einem temporären Container durchgeführt, der auf Ihr `moltbot_data`-Verzeichnis zugreift.
Dieser `onboard`-Befehl wird mit der Fehlermeldung `moltbot requires Node >=22.0.0` fehlschlagen und beweist damit das unlösbare Problem.
Führen Sie den folgenden Befehl aus und folgen Sie den Anweisungen im Terminal:
## Fehlerbehebung & Finale Diagnose
```bash
docker-compose run --rm moltbot clawdbot onboard
```
- **Problem: Container startet nicht, keine Logs (stiller Absturz).**
- **Ursache:** Inkompatibilität zwischen dem Standard-`node:22+`-Image und der Docker-Umgebung der Synology.
- **Lösung:** Downgrade auf `node:20-slim` im Dockerfile. Dies löst das Startproblem, führt aber zum nächsten Fehler.
* `docker-compose run`: Führt einen einmaligen Befehl in einem Dienst-Container aus.
* `--rm`: Löscht den Container automatisch, nachdem der Befehl abgeschlossen ist.
* `moltbot`: Der Name des Dienstes in der `docker-compose.yml`.
* `clawdbot onboard`: Der eigentliche Einrichtungsbefehl in Moltbot.
- **FINALER FEHLER: `moltbot requires Node >=22.0.0` zur Laufzeit.**
- **Ursache:** Die Moltbot-Anwendung hat eine harte Anforderung an die Node.js-Version, die auch nach dem Kompilieren des Codes bestehen bleibt und sich durch einfache Skripte während des Builds nicht entfernen lässt.
- **Status:** **UNLÖSBAR.** Solange die Synology-Umgebung keine neueren Node.js-Images unterstützt ODER die Moltbot-Entwickler die Mindestanforderung nicht senken, kann die Anwendung nicht installiert werden.
Nach Abschluss dieses Schritts enthält der Ordner `moltbot_data` alle notwendigen Konfigurationsdateien.
## Schritt 4: Moltbot als Dienst starten
Nachdem die Ersteinrichtung abgeschlossen ist, können Sie Moltbot als permanenten Hintergrunddienst starten.
```bash
docker-compose up -d
```
* `-d`: Startet die Container im "detached" Modus (im Hintergrund).
Moltbot ist jetzt aktiv und wird bei einem Neustart der Synology NAS automatisch mitgestartet. Der Dienst ist über Port `18789` auf Ihrer Synology NAS erreichbar.
## Verwaltung über die Synology-Oberfläche (Container Manager)
Sie können das Projekt auch über die `Container Manager`-Anwendung verwalten:
1. Öffnen Sie den **Container Manager**.
2. Navigieren Sie zu **Projekt**.
3. Klicken Sie auf **Erstellen**.
4. Wählen Sie als Quelle `docker-compose.yml hochladen`.
5. Wählen Sie den Pfad zu dem Verzeichnis, in das Sie das Repository geklont haben.
6. Folgen Sie dem Assistenten, um das Projekt zu erstellen und zu starten.
**Hinweis:** Die interaktive Einrichtung (Schritt 3) muss dennoch über die Kommandozeile (SSH) erfolgen, da die GUI keine `run`-Befehle mit interaktivem Terminal unterstützt.
- **Erkenntnis zu Docker-Volumes auf Synology:**
- **Problem:** Host-Verzeichnisse (z.B. `./moltbot_data`) verursachen stille Schreibfehler aufgrund von Berechtigungskonflikten.
- **Lösung:** Immer von Docker verwaltete "Named Volumes" verwenden (`moltbot_data:`), da diese Methode robust funktioniert. Der Befehl `docker-compose run` muss zudem mit `--user node` ausgeführt werden, um mit den korrekten Berechtigungen in das Volume zu schreiben.

View File

@@ -3,10 +3,15 @@ version: '3.8'
services:
moltbot:
build:
context: ./tmp/moltbot
context: .
dockerfile: Dockerfile.moltbot
container_name: moltbot
restart: unless-stopped
ports:
- "18789:18789"
command: /app/packages/clawdbot/node_modules/.bin/clawdbot gateway --port 18789 --allow-unconfigured
volumes:
- ./moltbot_data:/home/node/.clawd
- moltbot_data:/home/node/.clawd
volumes:
moltbot_data: {}