Docker image for Ninox-on-premise solution
10K+
Ninox is a low-code database platform. This image runs a self-hosted Ninox server, including the web client and the admin console.
ninoxlinux/amd64latest, the server version (e.g. 3.19.26) and release-v<version>Ninox on-premise requires a valid licence. Contact Ninox Support to obtain one.
docker run -d --name ninox \
-p 8080:8080 \
-v ninox-data:/var/nxdb \
-v ninox-config:/usr/local/nxdb/config \
ninoxdatabase/ninox-on-premise:latest
Then open http://localhost:8080. The admin console is served at /admin.
Before exposing the server to a network, change the default secrets. See Mandatory security settings.
services:
ninox:
image: ninoxdatabase/ninox-on-premise:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ninox-data:/var/nxdb
- ninox-config:/usr/local/nxdb/config
- ninox-secure:/usr/local/nxdb/secure
volumes:
ninox-data:
ninox-config:
ninox-secure:
| Port | Purpose |
|---|---|
8080 | Ninox web client, REST API and admin console (bindPort) |
9000 | Redirect listener — sends plain HTTP requests to the configured server URL |
Both are defaults and can be changed in the configuration file.
| Path | Contents |
|---|---|
/var/nxdb | Databases, uploaded files and TLS certificates (secure/ssl/) |
/usr/local/nxdb/config | server-config.json and other mounted configuration files |
/usr/local/nxdb/secure | Reserved for secrets mounted into the container |
Back up /var/nxdb and /usr/local/nxdb/config together — the data directory is useless
without the cryptoAESKey from the configuration.
The server reads server-config.json from its working directory /usr/local/nxdb. If
/usr/local/nxdb/config/server-config.json exists, it takes precedence — that is the intended
way to configure the container.
Mount your own file:
docker run -d --name ninox \
-p 8080:8080 \
-v ninox-data:/var/nxdb \
-v "$(pwd)/server-config.json:/usr/local/nxdb/config/server-config.json:ro" \
ninoxdatabase/ninox-on-premise:latest
The image ships with these defaults:
{
"ssl": false,
"host": "localhost",
"port": 8080,
"bindPort": 8080,
"bindInterface": "0.0.0.0",
"redirectPort": 9000,
"data": "/var/nxdb",
"workers": null,
"snapshots": true,
"apiAuthorization": "Bearer 1234",
"cryptoAESKey": "abcdefghijklmnopqrstuvwxyz"
}
Changes to the configuration take effect on container restart.
The defaults above are placeholders so the container starts out of the box. Replace both of these before the server is reachable by anyone else:
| Key | Why |
|---|---|
cryptoAESKey | Encrypts data at rest. Set a long random value before first start — changing it later makes existing encrypted data unreadable. Store it with your backups. |
apiAuthorization | Bearer token for the REST API. The default Bearer 1234 grants API access to anyone who can reach the port. |
Also set host to the hostname users will actually reach, so generated links and redirects are
correct, and enable TLS.
| Key | Default | Description |
|---|---|---|
host | localhost | Public hostname used to build links and redirects |
hosts | [host] | Additional hostnames the server answers for |
port | 8080 | Port in generated URLs (the port users connect to) |
bindPort | 8080 | Port the server actually listens on inside the container |
bindInterface | 0.0.0.0 | Interface to bind to |
redirectPort | 9000 | Port of the plain-HTTP redirect listener |
data | /var/nxdb | Data directory |
workers | null | Worker processes; null uses the available CPU count |
ssl | false | TLS settings, see below |
allowedOrigins | [] | Extra CORS origins |
snapshots | true | Periodic database snapshots |
synclog | true | Synchronous write log |
httpRequestTimeout | 14400000 | Max milliseconds to receive a full request; 0 disables the limit |
hideUserList | false | Hide the user list in the client |
debug | false | Verbose logging |
passwordPolicy | — | Password rules, lockout and idle timeout |
emailHost, emailPort, emailSecure, emailUser, emailPassword, emailFrom, emailBCC | — | SMTP settings for notification and invitation mail |
Upload a PKCS#12 certificate through the admin console, or configure it directly:
{
"ssl": {
"pfx": "/var/nxdb/secure/ssl/certificate.pfx",
"passphrase": "<PASSPHRASE>"
},
"port": 443,
"bindPort": 443,
"host": "ninox.example.com"
}
Certificates uploaded via the admin console are stored under secure/ssl/ inside the data
directory, so they persist in the /var/nxdb volume.
The image ships template.feature-flags.json at /usr/local/nxdb/. To enable local feature
flags, copy it into your config volume as feature-flags.json, edit it, and reference it:
{
"featureFlags": { "source": "local", "file": "config/feature-flags.json" }
}
/var/nxdb and your configuration.Keep the same cryptoAESKey across upgrades.
Content type
Image
Digest
sha256:7f873e253…
Size
480.1 MB
Last updated
8 days ago
docker pull ninoxdatabase/ninox-on-premise