Nomploy Nomad Packs

← All packs

syncthing v0.1.0

Apps

Syncthing — continuous, peer-to-peer file synchronization between your devices, with no central server and end-to-end TLS. Deployed as a single host-networked Nomad service with a persistent config/data volume and its web GUI bound on all interfaces.

nomad-pack run syncthing --registry nomploy
2 tasks gui 8384sync 22000 1 volume image syncthing/syncthing:latest
Variables 11
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run syncthing -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "syncthing"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The official Syncthing container image. Pin a tag in production.
image = "syncthing/syncthing:latest"

# Host port for the Syncthing web GUI.
gui_port = 8384

# Host port for device-to-device sync traffic (TCP and QUIC/UDP).
sync_port = 22000

# UID Syncthing runs as (PUID). The data volume is chown'd to this at startup.
uid = 1000

# GID Syncthing runs as (PGID).
gid = 1000

# Named volume for Syncthing's config, keys, and default sync folder (/var/syncthing).
data_volume = "syncthing_data"

# Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# The task resources.
resources = {
    cpu    = 500
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"syncthing"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"syncthing/syncthing:latest"
The official Syncthing container image. Pin a tag in production.
gui_port number
8384
Host port for the Syncthing web GUI.
sync_port number
22000
Host port for device-to-device sync traffic (TCP and QUIC/UDP).
uid number
1000
UID Syncthing runs as (PUID). The data volume is chown'd to this at startup.
gid number
1000
GID Syncthing runs as (PGID).
data_volume string
"syncthing_data"
Named volume for Syncthing's config, keys, and default sync folder (/var/syncthing).
constraints list
[]
Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 256
  }
The task resources.
Readme

syncthing

Syncthing — continuous, peer-to-peer file synchronization between your devices. No central server, end-to-end TLS, open source.

Single host-networked Nomad service (the official syncthing/syncthing image). A busybox prestart task chowns the data volume to the configured UID/GID (Syncthing runs as uid 1000 by default), and the GUI is bound on all interfaces so it's reachable through host networking.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run syncthing --registry=nomploy

Configure

Variable Default Description
gui_port 8384 Web GUI port (STGUIADDRESS).
sync_port 22000 Device-to-device sync (TCP + QUIC/UDP).
uid / gid 1000 / 1000 User Syncthing runs as (PUID/PGID); volume is chown'd to it.
data_volume syncthing_data /var/syncthing — config, keys, default folder.
image syncthing/syncthing:latest Container image. Pin a tag in production.
resources { cpu = 500, memory = 256 } Task resources.

Security

The GUI is exposed on all interfaces — set a GUI username/password immediately (Actions → Settings) and put TLS in front of it. Local discovery also uses UDP 21027; for remote peers behind NAT, forward sync_port (TCP/UDP) or rely on Syncthing's relays.

Pin the job to the node holding data_volume with constraints.