Sign inSign up

ninoxdatabase/ninox-on-premise

By ninoxdatabase

•Updated 8 days ago

Docker image for Ninox-on-premise solution

Image
0

10K+

ninoxdatabase/ninox-on-premise repository overview

⁠Ninox — On-Premise Server

Ninox is a low-code database platform. This image runs a self-hosted Ninox server, including the web client and the admin console.

  • Base: Ubuntu 22.04 with Node.js 18
  • Runs as: unprivileged user ninox
  • Architecture: linux/amd64
  • Tags: latest, 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.

⁠Quick start

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⁠.

⁠docker compose
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:

⁠Ports

PortPurpose
8080Ninox web client, REST API and admin console (bindPort)
9000Redirect listener — sends plain HTTP requests to the configured server URL

Both are defaults and can be changed in the configuration file.

⁠Volumes

PathContents
/var/nxdbDatabases, uploaded files and TLS certificates (secure/ssl/)
/usr/local/nxdb/configserver-config.json and other mounted configuration files
/usr/local/nxdb/secureReserved 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.

⁠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.

⁠Mandatory security settings

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:

KeyWhy
cryptoAESKeyEncrypts data at rest. Set a long random value before first start — changing it later makes existing encrypted data unreadable. Store it with your backups.
apiAuthorizationBearer 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.

⁠Common options
KeyDefaultDescription
hostlocalhostPublic hostname used to build links and redirects
hosts[host]Additional hostnames the server answers for
port8080Port in generated URLs (the port users connect to)
bindPort8080Port the server actually listens on inside the container
bindInterface0.0.0.0Interface to bind to
redirectPort9000Port of the plain-HTTP redirect listener
data/var/nxdbData directory
workersnullWorker processes; null uses the available CPU count
sslfalseTLS settings, see below
allowedOrigins[]Extra CORS origins
snapshotstruePeriodic database snapshots
synclogtrueSynchronous write log
httpRequestTimeout14400000Max milliseconds to receive a full request; 0 disables the limit
hideUserListfalseHide the user list in the client
debugfalseVerbose logging
passwordPolicy—Password rules, lockout and idle timeout
emailHost, emailPort, emailSecure, emailUser, emailPassword, emailFrom, emailBCC—SMTP settings for notification and invitation mail
⁠TLS

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.

⁠Feature flags

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" }
}

⁠Upgrading

  1. Stop the container.
  2. Back up /var/nxdb and your configuration.
  3. Pull the new tag and recreate the container with the same volumes.

Keep the same cryptoAESKey across upgrades.

⁠Support

Tag summary

Content type

Image

Digest

sha256:7f873e253…

Size

480.1 MB

Last updated

8 days ago

docker pull ninoxdatabase/ninox-on-premise