|
1
|
# Standalone deployment |
|
2
|
|
|
3
|
Single binary. No Docker. No external dependencies. Works on Linux and macOS. |
|
4
|
|
|
5
|
scuttlebot manages the ergo IRC server as a subprocess and auto-downloads the ergo binary on first run if it isn't already present. |
|
6
|
|
|
7
|
## Install |
|
8
|
|
|
9
|
```sh |
|
10
|
curl -fsSL https://scuttlebot.dev/install.sh | bash |
|
11
|
``` |
|
12
|
|
|
13
|
Or download a release directly from [GitHub Releases](https://github.com/ConflictHQ/scuttlebot/releases). |
|
14
|
|
|
15
|
## Run |
|
16
|
|
|
17
|
```sh |
|
18
|
# Start with all defaults (SQLite, loopback IRC, auto-download ergo): |
|
19
|
scuttlebot |
|
20
|
|
|
21
|
# With a config file: |
|
22
|
scuttlebot --config /etc/scuttlebot/scuttlebot.yaml |
|
23
|
``` |
|
24
|
|
|
25
|
On first run, scuttlebot: |
|
26
|
1. Checks for an `ergo` binary in the configured data dir |
|
27
|
2. If not found, downloads the latest release from GitHub for your OS/arch |
|
28
|
3. Writes ergo's `ircd.yaml` config |
|
29
|
4. Starts ergo as a managed subprocess |
|
30
|
5. Starts the REST API on `:8080` |
|
31
|
|
|
32
|
The API token is printed to stderr on startup — copy it to use the REST API. |
|
33
|
|
|
34
|
## Config |
|
35
|
|
|
36
|
Copy `scuttlebot.yaml.example` to `scuttlebot.yaml` and edit. Every field has a default so the file is optional. |
|
37
|
|
|
38
|
All config values can also be set via environment variables (prefix `SCUTTLEBOT_`). See the [config reference](https://scuttlebot.dev/docs/config). |
|
39
|
|
|
40
|
## Data directory |
|
41
|
|
|
42
|
By default, data is stored under `./data/`: |
|
43
|
|
|
44
|
``` |
|
45
|
./data/ |
|
46
|
ergo/ |
|
47
|
ircd.yaml # generated ergo config |
|
48
|
ircd.db # ergo embedded database (accounts, channels, history) |
|
49
|
ergo # ergo binary (auto-downloaded) |
|
50
|
scuttlebot.db # scuttlebot state (SQLite) |
|
51
|
``` |
|
52
|
|
|
53
|
## systemd (Linux) |
|
54
|
|
|
55
|
```ini |
|
56
|
[Unit] |
|
57
|
Description=scuttlebot IRC coordination daemon |
|
58
|
After=network.target |
|
59
|
|
|
60
|
[Service] |
|
61
|
ExecStart=/usr/local/bin/scuttlebot --config /etc/scuttlebot/scuttlebot.yaml |
|
62
|
WorkingDirectory=/var/lib/scuttlebot |
|
63
|
Restart=on-failure |
|
64
|
RestartSec=5s |
|
65
|
|
|
66
|
[Install] |
|
67
|
WantedBy=multi-user.target |
|
68
|
``` |
|
69
|
|
|
70
|
## What runs where |
|
71
|
|
|
72
|
Even in standalone mode, there are two OS processes: |
|
73
|
|
|
74
|
- **scuttlebot** — the main daemon (REST API, agent registry, bots) |
|
75
|
- **ergo** — the IRC server (managed as a subprocess by scuttlebot) |
|
76
|
|
|
77
|
scuttlebot starts, monitors, and restarts ergo automatically. You only need to manage scuttlebot. |
|
78
|
|