This is an Automerge-based TCP sync server, intended for use with the Godot version control plugin Backstitch.
Join our Discord for support & community!
An example Docker Compose configuration is available in compose.example.yml. It runs the image from the ghcr.io backstitch-sync-server package.
docker compose -f compose.example.yml up
Or, to run the published image without Docker Compose:
docker run --rm \
-p 8085:8085 \
-p 3000:3000 \
-v backstitch-data:/data \
ghcr.io/inkandswitch/backstitch-sync-server:latest
The container uses these defaults:
| Variable | Default | Description |
|---|---|---|
DATA_DIR |
/data |
Directory where sync data is stored. Mount this as a volume for persistence. |
PORT |
8085 |
TCP samod sync server port. |
HTTP_PORT |
3000 |
HTTP server port for testing and document inspection. |
By default, the server runs at localhost:PORT, and anyone on your local network will be able to access it. If you want to expose it to other team members, we highly recommend using a VPN tunneling service like Tailscale or ZeroTier.
Alternatively, you can directly port-forward with your server provider or home router. But since Backstitch Sync Server doesn't (yet) provide authentication, anyone who guesses your project ID will be able to access or edit your data.
Clone this repository locally. To build and run, first, install Rust and Cargo. Then, to install just, run:
cargo install just
To build and run the server with defaults, use just run:
just run [data_dir] [port] [http_port] [debug|release]
Data will be stored to ./data by default, but can be overridden.
The server will run a TCP samod connection at localhost:8085, as well as an HTTP server for testing at localhost:3000.
This server isn't set up for authentication. If someone guesses the ID of a project, they will be able to access all data associated with the project.
As such, before exposing this server to the internet, it is highly recommended to hide it behind a separate, secure VPN tunnel, or another method of connection authentication.