Configuration Examples
Tip
Edit the values in the table below — all references to them on this page will update automatically.
Input data
| Server type | Components | Plugins |
|---|---|---|
| World | ||
| Organization |
| Parameter | Value | |
|---|---|---|
| World FQDN | ||
| Organization name | ||
| Web services FQDN | ||
| World IP | ||
| Organization IP | ||
| Web services IP | ||
| UUID for main component | ||
UUID for Web component |
||
UUID for API component |
||
UUID for World component |
DNS records
| Record Type | Record Name | Record Value | Purpose |
|---|---|---|---|
| A | world.example.com | 203.0.113.10 | World |
| A | szex4mpl318d4f4c9ba2e37f5c1b9d3e6a.world.example.com |
203.0.113.20 | Organization (szID) |
| A | example.com | 203.0.113.20 | Web services (if enabled) |
| CNAME | szworld.example.com |
world.example.com | Organization registration in World |
Note
Checks are performed client-side against Cloudflare's public DNS resolver (1.1.1.1). Results reflect what that resolver sees, not necessarily what your own network or the World/Organization servers see, and the lookup itself is sent to Cloudflare.
Firewall rules
| Source | Destination | Port | Purpose |
|---|---|---|---|
| 0.0.0.0/0 | 203.0.113.10 | 443 | Client and Organization to World communication |
| 0.0.0.0/0 | 203.0.113.20 | 80 | HTTP challenge for certificate renewal (if enabled) |
| 0.0.0.0/0 | 203.0.113.20 | 443 | TLS routes to Organization or web/API based on SNI |
Configuration
World
World component
ApplicationInstance=ex4mpl30-5c2e-4b8a-9f1d-3a7e6b4c2d8f
World=world.example.com
SNTPServer=ntp.netnod.se
SNTPServerBackup=ntp.netnod.se
mailservice=true
mailservice.bounce=bounce@example.com
mailservice.domain=example.com
mailservice.reply=noreply@example.com
mailservice.sender=Synkzone
mailservice.smtp.host=mail.example.com
mailservice.smtp.port=587
mailservice.smtp.credentials=/config/mailservice-credentials.properties
mailservice.startup=admin@example.com
mailservice.monitoring=monitoring@example.com
username=smtp-user@example.com
password=secret
Organization
Main component
ApplicationInstance=ex4mpl31-8d4f-4c9b-a2e3-7f5c1b9d3e6a
Organization=example.com
AdminEmail=admin@example.com
TLSPort=443
SynkzoneWebAddress=example.com
SNTPServer=pool.ntp.org
SNTPServerBackup=pool.ntp.org
otp.issuer=Synkzone
EmailTemplates=/email-templates
# Comma-separated UUIDs of the API and BFF components — required if using API or Web
TrustedNodeInstances=ex4mpl32-3a7f-4e1c-b8d5-2c9e4f7a1b3d,ex4mpl33-6b1e-4d8c-a5f2-9e3c7b4d2f1a
mailservice=true
mailservice.bounce=bounce@example.com
mailservice.domain=example.com
mailservice.reply=noreply@example.com
mailservice.sender=Synkzone
mailservice.smtp.host=mail.example.com
mailservice.smtp.port=587
mailservice.smtp.credentials=/config/mailservice-credentials.properties
mailservice.startup=admin@example.com
mailservice.monitoring=monitoring@example.com
remote_storage.enabled=true
remote_storage.bucket=ex4mpl31-8d4f-4c9b-a2e3-7f5c1b9d3e6a
remote_storage.provider=SafeSpring
remote_storage.endpoint=s3.sto2.safedc.net
remote_storage.credentials=/config/remote-storage-credentials.properties
IDPType=GenericOIDC
IDPIssuerURL=https://login.example.com
IDPClientId=ex4mpl3-client-id
IDPName=My IDP
OAuthClientSecret.path=/config/oauth-client-secret
AutoCreateIDPUsers=true
username=smtp-user@example.com
password=secret
accessKey=EXMPL1234567890ABCD
secretKey=ExAmPlEsEcReTkEy1234567890abcdefghijkl
ExAmPlEcLiEnTsEcReT1234567890abcdefgh
API component
ApplicationInstance=ex4mpl32-3a7f-4e1c-b8d5-2c9e4f7a1b3d
world=world.example.com
organization=example.com
ClientScope=SynkzoneSSI
StorageFileDirectory=/storage
ApplicationDataDirectory=/appdata
Web component
ApplicationInstance=ex4mpl33-6b1e-4d8c-a5f2-9e3c7b4d2f1a
world=world.example.com
organization=example.com
ClientScope=SynkzoneWeb
ApplicationDataDirectory=/appdata
StorageFileDirectory=/storage
SCIM component
com.synkzone.ssi.api.token=EXMPLscimApiToken1234567890abcdef
com.synkzone.azure.token=EXMPLazureSharedSecret1234567890
com.synkzone.preferred.language.code=en
# UPN domain used to classify users as internal (matched against user's UPN)
com.synkzone.organization.name.internal.users=customer.onmicrosoft.com
com.synkzone.organization.name.case.sensitive=false
com.synkzone.allow.creation.internal.users=true
com.synkzone.allow.creation.external.users=true
# Organization email domain — used with the use_left_side_of_upn email strategy
com.synkzone.organization.email=example.com
com.synkzone.email.strategy.internal=use_scim_email
com.synkzone.email.strategy.external=use_scim_email
Reverse Proxy
An example nginx setup satisfying the Reverse Proxy requirements.
# Routes by SNI on port 443
stream {
map_hash_bucket_size 128;
map $ssl_preread_server_name $backend {
default "";
synkzone.example.com https_web;
szex4mpl318d4f4c9ba2e37f5c1b9d3e6a.world.example.com sz_service;
}
upstream https_web { server 127.0.0.1:8443; }
upstream sz_service { server 127.0.0.1:38443; }
server {
listen 443;
ssl_preread on;
proxy_pass $backend;
}
}
# Terminates TLS and routes by path
server {
if ($host = synkzone.example.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name synkzone.example.com;
return 404;
}
server {
listen 8443 ssl;
server_name synkzone.example.com;
client_max_body_size 1000M;
ssl_certificate /etc/letsencrypt/live/synkzone.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/synkzone.example.com/privkey.pem;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / { proxy_pass http://127.0.0.1:8082; }
location /api/ { proxy_pass http://127.0.0.1:8080/api/; }
location /bff/api/ { proxy_pass http://127.0.0.1:8081/api/; }
location /scim/ { proxy_pass http://127.0.0.1:8083; }
}