Server configuration
The Linux package reads /etc/vsync/server.toml. Unknown settings are rejected,
so a typo stops the service instead of being ignored.
| Setting | Effective default | Purpose |
|---|---|---|
root | /var/lib/vsync | Server data directory. |
addr | 127.0.0.1:7770 | Plain-HTTP listen address behind the HTTPS proxy. |
public_url | unset | Canonical HTTPS origin used in emailed invite links. Required with email. |
min_free_gb | 10 | Refuse uploads below this much free disk; 0 disables the guard. |
webhook | unset | Incoming webhook for build announcements. |
crash_reports | true | Send server crash reports to DevHippo. |
sentry_dsn | DevHippo endpoint | Send crash reports to your own Sentry-compatible endpoint. |
email.from | unset | Sender mailbox for invite email. |
email.smtp_host | unset | SMTP relay hostname. |
email.smtp_port | 587 or 465 | Relay port, based on the selected TLS mode. |
email.smtp_tls | starttls | starttls or implicit TLS. Unencrypted SMTP is not supported. |
email.smtp_username | unset | SMTP relay username. Omit both credential settings when the relay authenticates by source IP. |
email.smtp_password_env | unset | Name of the environment variable holding the SMTP password. |
email.smtp_pool | false | Keep the SMTP connection open between sends instead of reconnecting per message. |
gc.enabled | true | Sweep at startup and daily. |
gc.keep_history | 14 | Keep this many newest builds per stream and platform. |
gc.keep_days | 7 | Keep builds younger than this many days. |
GC settings belong under a [gc] table:
root = "/var/lib/vsync"
addr = "127.0.0.1:7770"
min_free_gb = 10
[gc]
enabled = true
keep_history = 14
keep_days = 7
Set crash_reports = false to disable server crash reports. This does not
affect clients.
Invite email
Vsync can send account and password-reset invitations through any SMTP relay. For example, Resend uses this configuration after its sending domain has been verified:
public_url = "https://builds.example.com"
[email]
from = "Vsync <invites@example.com>"
smtp_host = "smtp.resend.com"
smtp_port = 587
smtp_tls = "starttls"
smtp_username = "resend"
smtp_password_env = "VSYNC_SMTP_PASSWORD"
Some relays authenticate the server by its source IP instead of a password -
Google Workspace's smtp-relay.gmail.com with a registered IP, or an internal
smarthost. For those, omit smtp_username and smtp_password_env; the
connection still requires TLS.
Otherwise, place the password in the root-readable environment file installed by the Linux package:
sudo sh -c 'printf "%s\n" "VSYNC_SMTP_PASSWORD=replace-with-the-relay-key" > /etc/vsync/server.env'
sudo chmod 600 /etc/vsync/server.env
sudo systemctl restart vsync-server
Use a transactional email relay rather than sending directly from the Vsync host. Configure SPF and DKIM with that provider, and leave link and open tracking disabled for invitation messages. If delivery is not configured or a send fails, the admin page still shows the one-use link for manual delivery.
Matching command-line options override the file. Use --config <path> or
VSYNC_SERVER_CONFIG=<path> to select another file. Restart the service after
editing it:
sudo systemctl restart vsync-server
sudo systemctl status vsync-server