nuvira-server-pro
Docker app from alexbn71's Repository
Overview
Everything in the open source server (signalling, relay, signed app updates, end-to-end encrypted sessions) plus: server address books shared by the team, accounts and roles, central rules for the devices, web console, two-factor authentication, single sign-on (OpenID Connect), session log and custom installers.
Needs a NuviraHub Pro licence key (see nuvirahub.dev; free for members of the Founders Program). Without a key it works like the open source server. The app is the same for both servers.
Readme
View on GitHubDeploying nuvira-server
The server is published as a Docker image by GitHub Actions on every push to main:
ghcr.io/nuvira-hub/nuvira-server:latest # also :sha-<commit> and :<version> for tags
Images for linux/amd64 and linux/arm64, built FROM scratch (only the static binary).
Container settings
| Kind | Name | Value | Notes |
|---|---|---|---|
| Port | UDP 21116 | 21116/udp | signalling (QUIC) and relay; required |
| Port | TCP 21116 | 21116/tcp | WebSocket fallback for networks that block UDP |
| Volume | /data |
e.g. /mnt/user/appdata/nuvira-server |
nuvira.db, cert.pem/key.pem (server identity) |
| Variable | NUVIRA_LOG |
info |
debug, info, warn |
| Variable | NUVIRA_WS_LISTEN |
:21116 |
off disables the WebSocket fallback |
The image runs as user 65532. With a bind mount owned by another user, run the container with that user (--user UID:GID) or give the folder to 65532.
Back up the whole /data folder. Losing cert.pem/key.pem makes every client refuse the server (they pin its certificate at the first connection).
This is the open server: signalling, relay and updates; each app keeps its own address book. Server address books, accounts and central rules are NuviraHub Pro modules, with their own image.
No public address has to be configured: clients reach the relay at the same address and port they use for the server.
docker compose
See docker-compose.yml.
Unraid
- Copy unraid/nuvira-server.xml to the flash drive as
/boot/config/plugins/dockerMan/templates-user/my-nuvira-server.xml. - Docker → Add Container → Template:
nuvira-server. Check the appdata path, Apply. - The template adds
--user 99:100(Extra Parameters) so the container can write to appdata, which belongs tonobody:users. - Check the log:
nuvira-server startedwith the certificate fingerprint.
Router
Forward UDP 21116 and TCP 21116 from the WAN to the server. Clients use the public name or address (--server nuvira.example.com, or the app settings).
Devices on the same LAN as the server that use the public name need NAT reflection (hairpin) on the router, or a local DNS record that resolves the name to the server's LAN address. Direct connections between devices are not affected: they also try local addresses (see docs/13-phase1-network.md).
Updates
The server also hands the signed app updates to its devices, from /data/updates over the TCP port (http://server:21116/nuvira/update/windows-x64.json). Devices with unattended access install a new version within 6 hours, never during a session; copies that are not installed offer it.
To publish a version: download nuvira-update-VERSION.zip from the GitHub release and unpack it into /data/updates (on Unraid /mnt/user/appdata/nuvira-server/updates), replacing windows-x64.json. The folder then holds:
updates/windows-x64.json
updates/windows-x64/nuvira-VERSION.exe
The older nuvira-*.exe can be deleted. No restart is needed: the manifest is read at every request. The files must be readable by the container's user (65532, or the one given with --user). Every update is signed with the NuviraHub release key and the app checks the signature before installing it, so a tampered file is refused.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/nuvira-hub/nuvira-server-pro:latestRuntime arguments
- Web UI
http://[IP]:[PORT:21116]/console/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--user 99:100 --restart unless-stopped
Template configuration
Signalling and relay (QUIC). Forward it on the router.
- Target
- 21116
- Default
- 21116
- Value
- 21116
WebSocket fallback for networks that block UDP, app updates and the web console. Forward it on the router.
- Target
- 21116
- Default
- 21116
- Value
- 21116
Database, server certificate, address book key, and the app updates you publish to your devices (updates folder). Back up the whole folder.
- Target
- /data
- Default
- /mnt/user/appdata/nuvira-server-pro
- Value
- /mnt/user/appdata/nuvira-server-pro
NuviraHub Pro licence key. Without it the Pro modules stay off (signalling and relay keep working).
- Target
- NUVIRA_LICENSE_KEY
First administrator, created only if no account exists yet.
- Target
- NUVIRA_ADMIN_USER
- Default
- admin
- Value
- admin
At least 8 characters. Empty: a random password is written once to the log. Used only at the first start; lost password: docker exec nuvira-server-pro /nuvira-server reset-password.
- Target
- NUVIRA_ADMIN_PASSWORD
Days the session log is kept.
- Target
- NUVIRA_SESSION_LOG_DAYS
- Default
- 365
- Value
- 365
https:// address of the console from the browser (reverse proxy), e.g. https://console.example.com. Needed by single sign-on.
- Target
- NUVIRA_PUBLIC_URL
OpenID Connect issuer, e.g. https://login.microsoftonline.com/TENANT-ID/v2.0 or https://accounts.google.com. Empty: no single sign-on.
- Target
- NUVIRA_OIDC_ISSUER
Application (client) ID registered at the provider.
- Target
- NUVIRA_OIDC_CLIENT_ID
Secret of that application.
- Target
- NUVIRA_OIDC_CLIENT_SECRET
Shown as Sign in with NAME, e.g. Microsoft or Google.
- Target
- NUVIRA_OIDC_NAME
- Default
- SSO
- Value
- SSO
technician or readonly.
- Target
- NUVIRA_OIDC_ROLE
- Default
- technician
- Value
- technician
Value of the groups claim that makes an account administrator (Entra ID: object ID of the group).
- Target
- NUVIRA_OIDC_ADMIN_GROUP
debug, info or warn.
- Target
- NUVIRA_LOG
- Default
- info
- Value
- info
TCP address of the WebSocket fallback, the app updates and the console; off to disable it.
- Target
- NUVIRA_WS_LISTEN
- Default
- :21116
- Value
- :21116
Limits on registrations and connection requests per address (local addresses are always exempt); off to disable them.
- Target
- NUVIRA_RATE_LIMITS
- Default
- on
- Value
- on