Skip to content

vertigo-z/allroads-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

allroads sync server

real-time collaborative roadmap sync server. it uses chacha20-poly1305 encrypted websockets with optional tls, as well as sqlcipher storage, and HMAC-SHA256 signed envelopes. this is the server-side tool in the allroads collaboration suite.

the allroads client can be cloned and compiled from here

build

cargo +nightly build --release

run

export SYNC_DB_PATH=/var/lib/allroads/sync.db
export SYNC_KEY="base64-32-byte-key"
export SYNC_LISTEN="0.0.0.0:59901"
export SYNC_TLS_CERT_PATH=/etc/ssl/certs/allroads.pem
export SYNC_TLS_KEY_PATH=/etc/ssl/private/allroads.key

./sync_engine

drop SYNC_TLS_CERT_PATH and SYNC_TLS_KEY_PATH to run plain ws:// instead of wss://.

if SYNC_KEY is empty the server generates a random key and logs it to stderr on first run.

connect

wss://obsidian.st:59901

this is the default sync provider in the allroads client. if you would like to host your own allroads server, you will need to update this in the client. migration between servers is easy with the migrate inter-server command available in the client. old users will be prompted on next connect to switch to the new org server.

configuration

variable default description
SYNC_DB_PATH sync.db sqlcipher database path
SYNC_KEY auto-generated database encryption key
SYNC_LISTEN 0.0.0.0:59901 listen address
SYNC_TLS_CERT_PATH none tls cert pem
SYNC_TLS_KEY_PATH none tls key pem

limits

constant value
max message size 1 mb
max changes per changeset 500
max orgs 128
max connections 256
auth timeout 10s
auth rate limit 30 attempts / 60s per ip
heartbeat 25s
migration retention 7 days

systemd

[Unit]
Description=sync-engine
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=roads
Group=roads
WorkingDirectory=/srv/allroads
ExecStart=/srv/allroads/sync_engine
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=allroads-sync-engine
EnvironmentFile=/srv/allroads/.env

NoNewPrivileges=true
ProtectSystem=true
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/srv/allroads 

[Install]
WantedBy=multi-user.target

requirements

  • rust nightly toolchain
  • unix-based server
  • port 59901 open

About

allroads collaboration server built in rust. join/build organizations, assign and complete tasks, manage and visualize long-term projects.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages