Open Data Ensemble
Your own Synkronus server in about 10 minutes
Synkronus is the server your phones sync with. It keeps your forms, your app and all collected data in one safe place that you control. You don't need to be a developer: you copy, you paste, and it sets itself up.
- Secure HTTPS address, even without your own domain
- Admin login made for you and saved on the server
- Nightly backups and one-command updates
Built your app in the ODE App Builder? This is where it goes next.
What you need
Choose how you want to set it up
All three give you the same server. Pick the one that feels easiest.
-
Rent a server
At your provider, create a server (DigitalOcean calls it a Droplet). Choose Ubuntu 24.04 and the size with 1 GB memory. Pick a region close to where your team works.
-
Open its console
When the server is ready, click Console (DigitalOcean: Access → Launch Droplet Console). A black window with text opens. That's all you need.
-
Paste this line and press Enter
In a browser console, paste with Ctrl+Shift+V or right-click → Paste.
-
Wait about 5 minutes
You'll see it check the server, install everything and get the HTTPS certificate. When it's done, a green box shows your address, admin username and password. Copy them somewhere safe.
-
Open your address and log in
You're in the Synkronus Portal. Continue with After setup.
Using your own domain? First, at your domain provider, create an A record for it pointing to the server's IP address. The installer checks this and tells you if it isn't right yet.
-
Choose your admin password
This stays in your browser. Nothing you type here is sent anywhere.
-
Start creating a server
At your provider, start creating a server with Ubuntu 24.04 and 1 GB memory. Don't click Create yet.
-
Paste this into the setup box
DigitalOcean: Advanced Options → Add Initialization scripts. Hetzner: Cloud config. Vultr: Cloud-Init User-Data.
-
Create the server and wait 5 to 10 minutes
It sets itself up the first time it starts. Copy the server's IP address from your provider's page.
-
Open your address and log in
Go to https://YOUR-SERVER-IP.sslip.io, replacing YOUR-SERVER-IP with the IP address (for example
https://203.0.113.10.sslip.io). Log in as admin with the password you chose.
Not working after 15 minutes? Open the server's console and type synkronus status. The setup log is in /var/log/synkronus-install.log.
-
Create a tunnel in Cloudflare
In the Cloudflare dashboard, go to Zero Trust → Networks → Tunnels → Create a tunnel. Choose Cloudflared and give it a name like synkronus. On the next screen, copy the long token from the install command it shows (the part after
--token). You don't need to run Cloudflare's own command. -
Fill in your details
This stays in your browser. Nothing you type here is sent anywhere.
-
On your server, paste this and press Enter
-
Connect the address in Cloudflare
Back in the tunnel, add a Public hostname (or Route → Published application): use the address data.yourorg.org, service type HTTP and URL
caddy:80. Save. -
Open your address and log in
Use the admin login shown in the green box. No ports need to be opened on the server.
After setup
Create a user for your phones
In the Portal, open Users → Create user and give it Read/Write access. Use this login on phones, and keep the admin login for yourself.
Upload your app
Make your app in the ODE App Builder, download the bundle, and upload it in the Portal under App bundle.
Connect phones
In the Formulus app, enter your server address and the phone user's login, then sync.
Looking after your server
Open the server console and type any of these:
| Type this | What it does |
|---|---|
synkronus status | Is it running? Shows the address, version, last backup and free space |
synkronus credentials | Shows the address and admin login again |
synkronus backup | Backs up all data now (it also happens every night at 02:00, kept 7 days) |
synkronus restore FILE | Puts back a backup from /opt/synkronus/backups |
synkronus update | Backs up, updates to the newest version, and goes back if anything fails |
synkronus reset-admin-password | Sets a new admin password and shows it |
synkronus logs | Shows recent messages, useful when asking for help |
Backups are kept on the same server. Once a month, download one with your provider's file tools or scp, so you still have your data if the server is ever deleted.
If something goes wrong
“Port 80 is already used by another program”
Another web server is running. On a fresh server this shouldn't happen. If you want to replace it, run systemctl disable --now nginx apache2 and paste the install line again.
“HTTPS is not ready yet” or a certificate warning in the browser
Your provider's firewall may be blocking the server. Allow incoming ports 80 and 443 (DigitalOcean: Networking → Firewalls). If you use a domain, check that its A record points to the server's IP. HTTPS starts working by itself a few minutes after that.
“This server has less than 1 GB of memory”
Resize the server to at least 1 GB at your provider, then paste the install line again.
I lost the admin password
Type synkronus credentials in the server console. If you changed it in the Portal and forgot it, type synkronus reset-admin-password.
Can I run the install line again?
Yes. On a server that's already set up it changes nothing and shows the status. If an earlier attempt stopped halfway, it continues where it left off.
Docker or Podman?
The installer uses Podman, a fully open-source container engine, and installs it for you. If Docker is already on the server, it uses Docker instead. You never need to use either directly.
What the install line runs
The installer is open source and lives in the official synkronus-quickstart repository. You can read it here before running it. It installs everything into /opt/synkronus and adds the synkronus command. Your passwords are created on your server and never leave it.