[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:
36
Dockerfile.moltbot
Normal file
36
Dockerfile.moltbot
Normal 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"]
|
||||
@@ -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.
|
||||
|
||||
@@ -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: {}
|
||||
|
||||
Reference in New Issue
Block a user