commit 0d0ba705603db0d196fcdc69b2ff758edcfb2b70 Author: Aydent Date: Wed Jan 28 20:57:50 2026 +0100 feat: Add Dockerfile, docker-compose, and Gitea Actions workflow for initial Clawdbot application deployment. diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..4d67713 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,27 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Login to Gitea Container Registry + uses: docker/login-action@v2 + with: + registry: gitea.lemarechal.eu + username: ${{ gitea.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: gitea.lemarechal.eu/aydent/clawdbot:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2dea320 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM node:22-bookworm + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + socat \ + git \ + python3 \ + make \ + g++ \ + && rm -rf /var/lib/apt/lists/* + +# Install pnpm +RUN corepack enable && corepack prepare pnpm@latest --activate + +# Set up user +USER node +WORKDIR /home/node/app + +# Copy application code +COPY --chown=node:node . . + +# Build process +RUN pnpm install --frozen-lockfile +RUN pnpm build +RUN pnpm ui:build + +# Fix permissions +USER root +RUN chown -R node:node /home/node/app +USER node + +# Default command (can be overridden by docker-compose) +CMD ["node", "dist/index.js"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..6288fca --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# Clawdbot Build Repository + +Ce répository contient la configuration de build et de déploiement pour l'agent Clawdbot. + +## Prérequis VPS + +Avant le premier déploiement, vous devez préparer les répertoires sur le VPS pour la persistance des données. + +Exécutez les commandes suivantes sur le serveur : + +```bash +# Création des dossiers +sudo mkdir -p /opt/clawdbot/config +sudo mkdir -p /opt/clawdbot/workspace + +# Attribution des permissions (UID:GID 1000:1000 pour l'utilisateur node) +sudo chown -R 1000:1000 /opt/clawdbot +``` + +## Déploiement + +Le déploiement est automatisé via Gitea Actions. Chaque push sur la branche `main` déclenchera la construction de l'image Docker et son push vers le registre `gitea.lemarechal.eu`. + +### Configuration +Le fichier `docker-compose.yml` utilise l'image `gitea.lemarechal.eu/aydent/clawdbot:latest` et configure Traefik pour l'accès au Dashboard. + +Assurez-vous que les variables d'environnement suivantes sont définies dans votre contexte de déploiement (ou fichier `.env` si déploiement manuel) : +- `GOOGLE_API_KEY` +- `DISCORD_BOT_TOKEN` +- `CLAWDBOT_GATEWAY_TOKEN` diff --git a/config/clawdbot.json b/config/clawdbot.json new file mode 100644 index 0000000..f1f5929 --- /dev/null +++ b/config/clawdbot.json @@ -0,0 +1,18 @@ +{ + "agents": { + "defaults": { + "model": { + "primary": "google/gemini-1.5-pro" + } + } + }, + "channels": { + "discord": { + "enabled": true + } + }, + "server": { + "host": "0.0.0.0", + "port": 18789 + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..61fba16 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +services: + clawdbot: + container_name: clawdbot + image: gitea.lemarechal.eu/aydent/clawdbot:latest + restart: unless-stopped + environment: + - GOOGLE_API_KEY + - DISCORD_BOT_TOKEN + - CLAWDBOT_GATEWAY_TOKEN + - XDG_CONFIG_HOME=/home/node/.clawdbot + volumes: + - /opt/clawdbot/config:/home/node/.clawdbot + - /opt/clawdbot/workspace:/home/node/clawd + networks: + - traefik-net + labels: + - "traefik.enable=true" + # Router for the Dashboard + - "traefik.http.routers.clawdbot.rule=Host(`assistant.lemarechal.eu`)" + - "traefik.http.routers.clawdbot.entrypoints=https" + - "traefik.http.routers.clawdbot.tls.certresolver=letsencrypt" + - "traefik.http.routers.clawdbot.middlewares=auth-sso@docker" + # Service definition + - "traefik.http.services.clawdbot.loadbalancer.server.port=18789" + +networks: + traefik-net: + external: true