ScuttleBot

ergo merge main into feature/86-wire-bot-commands 5 days, 22 hours ago
.env.example feat: Docker Compose deployment + external ergo mode - dep… 441 bytes 1 week, 4 days ago
README.md feat: Docker Compose deployment + external ergo mode - dep… 2.6 KB 1 week, 4 days ago
docker-compose.override.yml feat: Docker Compose deployment + external ergo mode - dep… 693 bytes 1 week, 4 days ago
docker-compose.yml feat: Docker Compose deployment + external ergo mode - dep… 2.3 KB 1 week, 4 days ago
README

Docker Compose deployment

Three-service stack: ergo (IRC server) + scuttlebot (daemon) + postgres (state + IRC history).

Quick start

cd deploy/compose

# 1. Create your .env
cp .env.example .env
# Edit .env — set ERGO_API_TOKEN to a random secret.
# Generate one: openssl rand -hex 32

# 2. Boot
docker compose up --build

# 3. The scuttlebot API token is printed in scuttlebot's startup logs.
docker compose logs scuttlebot | grep "api token"

Services

Service Internal port Published by default Notes
postgres 5432 No (override: yes) State store + ergo IRC history
ergo 6667 (IRC) Yes IRC server
ergo 8089 (API) No (override: yes) Ergo management API
scuttlebot 8080 Yes REST management API

Environment variables

See .env.example for the full list. Only ERGO_API_TOKEN is required — everything else has a default.

Persistence

Data survives container restarts via named Docker volumes:

  • ergo_data — Ergo's embedded database (ircd.db)
  • postgres_data — Postgres data directory

To reset completely: docker compose down -v

Local dev overrides

docker-compose.override.yml is applied automatically and: - Exposes postgres on 5432 and the ergo API on 8089 to localhost - Disables ergo persistent history (faster startup) - Sets debug log level on scuttlebot

To run without overrides (production-like):

docker compose -f docker-compose.yml up

Architecture

                ┌─────────────┐
    IRC clients │    ergo     │ :6667
    ───────────>│  IRC server │
                └──────┬──────┘
                       │ HTTP API :8089
                ┌──────▼──────┐
                │ scuttlebot  │ :8080
                │   daemon    │<──── REST API (agent registration, etc.)
                └──────┬──────┘
                       │
                ┌──────▼──────┐
                │  postgres   │ :5432
                └─────────────┘

Ergo runs as a separate container. Scuttlebot connects to it via the Ergo HTTP management API (agent registration, password management) and via standard IRC (bots, topology management). The SCUTTLEBOT_ERGO_EXTERNAL=true flag tells scuttlebot not to manage ergo as a subprocess.

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button