Skip to main content

On-Premises Deployment

AuthNull can run entirely inside your own infrastructure, as a Docker Compose stack on a single Linux server. This guide takes you from an empty server to a working tenant, after which you choose which product to try: Active Directory, Database, RADIUS, or PAM MFA.

Index​

StepGuideWhat you do
1PrerequisitesCheck the server, network access, and accounts you need
2InstallationGet the deployment files, configure .env, install Docker, and start the stack
3Network Access: Domain or IPPublish the stack through Nginx, on a domain with SSL or on the server's IP address
4Organization and Tenant SetupCreate the organization and validate the tenant
5Choose a ProductSign in, choose an MFA provider, and try Active Directory, Database, RADIUS, or PAM MFA
-TroubleshootingKnown installation and sign-in problems

Architecture​

AuthNull's backend is a single consolidated service, authnull-service. Users, tenants, policies, Active Directory, databases, PAM, RADIUS, and MFA all run in this one application, replacing the separate microservices of earlier versions.

All traffic enters through Nginx on the host. Nginx serves the Admin UI and the end-user console, and sends API calls to authnull-service. The containers share a private Docker network (authnull); apart from the Admin UI, the end-user console, and the backend API, every container is published on the host's loopback address only.

When a sign-in needs a decision - for example a database login through ProxySQL - it goes to authn-service, which matches it against your policies and, if MFA is required, sends a push through the organization's MFA provider.

Components​

Application​

ContainerPurposeHost port
authnull-serviceThe AuthNull backend - one consolidated application for users, tenants, policies, AD, databases, PAM, RADIUS, and MFA8080
did-reactAdmin UI5173
self-service-consoleEnd-user sign-in and self-service console (/ssc/)3000
authn-serviceAuthentication decisions and push MFA, called by ProxySQL and other gateways127.0.0.1:2882
authnzSession authorization for API calls127.0.0.1:6066

Infrastructure​

ContainerPurposeHost port
postgresPostgreSQL 16, the primary database127.0.0.1:5432
did-schema-initOne-off job: creates the schema and runs migrations, then exits-
redisCache, sessions, and MFA state127.0.0.1:6379
cassandraData store (with the one-off cassandra-init job)127.0.0.1:9042

Installed on the Host​

ComponentPurpose
NginxReverse proxy for the UI and API
Product agentsInstalled later, per product - for example the database agent and ProxySQL for Database MFA