Step 1
Decide who does the installation.
If you would rather we install it for you, write to contact@fabrikode.com.
This guide is for companies that run WaterForm on their own server instead of ours. Someone used to working at a command line finishes it within an hour.
The program runs on the server; your staff open it in a browser or in the desktop application. Your data stays on your own server.
Step 2
Get what you need ready.
A Linux server with Docker and Docker Compose. Two processor cores and 4 GB of memory are enough.
A domain name, for example wf.example.com, pointed at your server's IP address. Ports 80 and 443 must be open to the outside; the security certificate is obtained by itself. If the server will only be reachable inside your company network, write to us first, because the set-up differs.
From us: the installation files (compose.yaml, Caddyfile and env.example), a user name and access key for downloading the program, your licence file and a short company code, for example yourcompany.
Step 3
Put the installation files on the server.
Create a folder for WaterForm on the server, with a folder called license inside it. Copy the three installation files we sent into the main folder, and your licence file into the license folder under the name license.json. Then go into the folder and look:
mkdir -p /opt/waterform/license cd /opt/waterform ls . licenseWhat you should see
The list shows compose.yaml, Caddyfile, env.example and the license folder, with license.json inside it.
Step 4
Allow the server to download the program.
The program is downloaded from a private registry. Introduce the server once, with the user name we sent. When it asks for a password, paste the access key; it does not show on the screen, which is normal.
docker login ghcr.io -u USERNAMEWhat you should see
It says ‘Login Succeeded’.
Step 5
Create the settings file and open it.
The settings live in a file called .env. The first command copies the example file to that name. The second prints a random line you will need in the next step; copy it somewhere. The third opens the file.
cp env.example .env openssl rand -base64 32 nano .envWhat you should see
The openssl command prints one line of 44 characters. Then the file opens on the screen.
Step 6
Fill in five lines of the settings file.
WF_SITE_ADDRESS: the address the program opens at, for example wf.example.com.
POSTGRES_PASSWORD: a long, random password for the database. Nobody needs to know it, but keep a note of it.
WF_SESSION_SECRET: the line the openssl command printed. Set it once and never change it; changing it signs everyone out.
Remove the # at the start of the WF_LICENSE_FILE line, so that it reads WF_LICENSE_FILE=/app/license/license.json. This is how the program finds your licence file.
WF_MODE stays onprem. Leave the other lines alone. To save and leave, press Ctrl+O, Enter and Ctrl+X.
Step 7
Start WaterForm.
The first command downloads the program, the second starts it. The database is prepared by itself on the first start.
docker compose --env-file .env -f compose.yaml pull docker compose --env-file .env -f compose.yaml up -dWhat you should see
There is one line for each of the four services: db, web, caddy and backup, each ending in ‘Started’ or ‘Running’.
Step 8
Check that it is running.
Wait a minute or two. If you open https://wf.example.com/api/health in a browser, it shows a short line that contains "ok":true.
On the server, ask for the state of the services too:
docker compose psWhat you should see
The web line says ‘healthy’.
Step 9
Create your company and its first administrator.
One command opens your company and its first administrator. That person then adds colleagues from inside the program. Replace the values in quotes with your own.
As the company code (slug), type the code we sent you; your licence file is tied to it. The password must be at least 10 characters.
docker compose exec web node scripts/setup.mjs \ --org "Your Company Ltd" --slug yourcompany \ --email admin@example.com --name "Jane Smith" \ --password "a password of 10 characters or more"What you should see
Three lines appear. The last starts with ‘setup: administrator admin@example.com created’.
Step 10
Sign in and set up your company.
Open https://wf.example.com in a browser and sign in with the e-mail address and password you just used.
From here on everything is as on our server: follow the guides ‘Set up your company’ and ‘Define your first tank type’.
For quote notifications, choose ‘Our own SMTP server’ under ‘Notifications and requests’ in Settings and enter your mail server's details. ‘Through Fabrikode’ is not available on your own installation.

What you should see
The configurator opens, with your company's name in the top bar.
Step 11
Know where the backups are.
The backup service that comes with the installation copies the database every night and keeps fourteen days. The copies sit in the Docker volume db-backups, named waterform-DATE-TIME.dump.
A copy on the same server is not a real backup: if the server fails, the copies go with it. Move these files somewhere else every day with your own backup routine. Logos and the Excel templates you upload live in the web-files volume; include it too.
To list the copies:
docker compose exec backup ls -l /backupsWhat you should see
One .dump file is listed for every night.
Step 12
Update to a new version.
We tell you when a new version is out. Database changes are applied by themselves when the program starts. If the new version causes trouble, write to us and we will tell you how to go back to the previous one.
Make sure the latest backup has been taken, then run two commands in the same folder:
docker compose --env-file .env -f compose.yaml pull docker compose --env-file .env -f compose.yaml up -dWhat you should see
After a minute or two, docker compose ps shows web as ‘healthy’ again.
Step 13
Point the desktop application at your server.
You download the desktop application from waterform.fabrikode.com/downloads. On first start it asks which server to use.
In the ‘Server address’ window, type https://wf.example.com in ‘Address’ and press ‘Connect’.
If the application has been connected to another server before, change the address from the menu: ‘Server…’ is in the ‘WaterForm’ menu on macOS and in the ‘File’ menu on Windows and Linux.

What you should see
The sign-in page opens, and the application remembers the address.
Stuck somewhere? Write to us and we will try to answer the same day: contact@fabrikode.com