1. PostgreSQL
The database is the source of truth. It runs locally, on a dedicated server or with a managed provider. One schema per tenant.
ewws runs on your own infrastructure, without a forced cloud. This guide leads in three steps from the database via the server to the native clients and names the concrete commands.
ewws consists of a PostgreSQL database, the ewws server and the native clients. The installation order is binding: first the database, then the server, then the clients. All three can sit on a single device or on separate systems.
The database is the source of truth. It runs locally, on a dedicated server or with a managed provider. One schema per tenant.
The server connects to PostgreSQL and provides the programming interface through which all clients sign in. It runs as a system service and comes with a web interface for setup and operation.
The native apps connect to the server via its address. They need no database drivers and no runtime of their own.
ewws requires PostgreSQL 16 or newer. The database is to be secured internally and backed up with a proven restore drill before the productive start.
Locally on the same device, on a dedicated server in the internal network, or with a managed provider with TLS (sslmode=require). Pure test or free offerings without an operating commitment are not production-ready.
Every tenant is its own PostgreSQL schema in the same ewws database. A single company uses public, a fiduciary office uses its own schema per customer (for example kunde_mueller). The tenant code at login is exactly this schema name.
As the PostgreSQL superuser, create a database ewws and a login role ewws_app. For fiduciary or multi-tenant operation, additionally create an ewws_admin role for migrations and new schemas.
CREATE ROLE ewws_app LOGIN PASSWORD '<starkes-passwort>'; CREATE DATABASE ewws OWNER ewws_app ENCODING 'UTF8' TEMPLATE template0;
In pg_hba.conf, only allow the concrete internal networks with scram-sha-256, never globally. Strong and separate passwords per role. A daily backup and a tested restore are mandatory before the productive start.
host ewws ewws_app 10.20.30.0/24 scram-sha-256
The server is installed as a native system service and connects to the database. It brings its own runtime, a separate Java installation is not necessary.
macOS: a signed package (.pkg) that sets up a system service and its own service account. Linux: a .deb with a systemd service. Windows: an .msi service. The server listens on port 8080.
sudo installer -pkg ewws-server-<version>.pkg -target /
On first start, the server opens a guided setup page in the browser (/setup). Database connection, the first tenant and administrator are entered, checked and saved, entirely without configuration files by hand. For automated rollouts, the same values can be set in advance as environment variables (EWWS_DB_URL, EWWS_DB_USER, EWWS_DB_PASSWORD; for managed databases sslmode=require in the URL).
EWWS_DB_URL=jdbc:postgresql://db-01.internal:5432/ewws EWWS_DB_USER=ewws_app EWWS_DB_PASSWORD=<secret> EWWS_DB_SCHEMA=public
After setup in the browser, the server creates the database schema automatically and is ready to operate immediately. After that it runs as a service and starts again by itself after a restart.
A call to the health endpoint confirms that the server and database work together. If it responds with status 200, the server is ready for the clients.
curl -sSf http://localhost:8080/api/v1/health
The native app is installed on every workstation and connected on first start with the server address, tenant and credentials. The server address is only shown when needed; normally it is prefilled.
A notarized app for macOS. Open from the download, place it in the Applications folder, start it. Available and in productive use.
A native app for iPhone and iPad. It connects to the server via HTTPS, for access on the go usually via the HTTPS edge. Available on request.
A native Windows app, delivered as an MSIX package. Available on request.
Linux is a server platform, not a desktop client: the ewws server runs natively on Linux (.deb/Docker), the workstations use the Mac, Windows or iOS app.
Once PostgreSQL, server and client are in place, you sign in with the admin user and set up tenant, users and roles.
In the login, enter the address of the server, for local operation for example http://localhost:8080/api/v1. The connection test confirms reachability.
Enter the tenant code (the PostgreSQL schema), the admin user and the password. The first password is set on first login.
In the product, create users and roles, activate MFA and recovery codes. Only then release productive operation.
ewws comes with a complete operations console, reachable in the browser at /admin. You keep the server under control, without special knowledge, and your data stays with you.
The server state at a glance: status, runtime, memory, tenants, server administrators, license, installed versions and logs. Restart at the push of a button. Sign-in is with an administrator account, secured like the programming interface.
open http://localhost:8080/admin
If the database is stuck, the recovery tier stays reachable at /recovery, database-independent via a host token. Correct the connection and restart, without a command line.
open http://localhost:8080/recovery
For installation questions, the FAQ helps, or you write directly to support. Server not reachable is usually a network, service or certificate topic, rarely a defect.
Thirty of the most common questions on editions, Mac, iOS, migration, fiduciary, data sovereignty and cloud are answered there.
We prefer written channels because they stay traceable and create a clean audit trail. For emergencies within business hours, the e-mail inbox is enough.