1# spindle self-hosting guide
2
3## prerequisites
4
5* Go
6* Docker (the only supported backend currently)
7
8## configuration
9
10Spindle is configured using environment variables. The following environment variables are available:
11
12* `SPINDLE_SERVER_LISTEN_ADDR`: The address the server listens on (default: `"0.0.0.0:6555"`).
13* `SPINDLE_SERVER_DB_PATH`: The path to the SQLite database file (default: `"spindle.db"`).
14* `SPINDLE_SERVER_HOSTNAME`: The hostname of the server (required).
15* `SPINDLE_SERVER_JETSTREAM_ENDPOINT`: The endpoint of the Jetstream server (default: `"wss://jetstream1.us-west.bsky.network/subscribe"`).
16* `SPINDLE_SERVER_DEV`: A boolean indicating whether the server is running in development mode (default: `false`).
17* `SPINDLE_SERVER_OWNER`: The DID of the owner (required).
18* `SPINDLE_PIPELINES_NIXERY`: The Nixery URL (default: `"nixery.tangled.sh"`).
19* `SPINDLE_PIPELINES_WORKFLOW_TIMEOUT`: The default workflow timeout (default: `"5m"`).
20* `SPINDLE_PIPELINES_LOG_DIR`: The directory to store workflow logs (default: `"/var/log/spindle"`).
21
22## running spindle
23
241. **Set the environment variables.** For example:
25
26 ```shell
27 export SPINDLE_SERVER_HOSTNAME="your-hostname"
28 export SPINDLE_SERVER_OWNER="your-did"
29 ```
30
312. **Build the Spindle binary.**
32
33 ```shell
34 cd core
35 go mod download
36 go build -o cmd/spindle/spindle cmd/spindle/main.go
37 ```
38
393. **Create the log directory.**
40
41 ```shell
42 sudo mkdir -p /var/log/spindle
43 sudo chown $USER:$USER -R /var/log/spindle
44 ```
45
464. **Run the Spindle binary.**
47
48 ```shell
49 ./cmd/spindle/spindle
50 ```
51
52Spindle will now start, connect to the Jetstream server, and begin processing pipelines.