How Jitsi LDAP and Active Directory authentication works
The Jitsi handbook documents LDAP authentication for Prosody, the XMPP server that decides who can sign in, and the route you take depends on whether you run Jitsi from Debian packages or the official Docker setup. Before you choose, decide what the directory should control. LDAP authentication covers room creators: a person who signs in with a directory account can own and moderate a room. It does not decide who may join as a guest, which depends on how anonymous access and your domains are configured. Confirm that split against the handbook for the release you run before you promise users anything.
On Debian and Ubuntu packages, the handbook's LDAP guide authenticates Prosody through Cyrus SASL, using the saslauthd daemon and the mod_auth_cyrus community module. Prosody passes the username and password to saslauthd, and saslauthd checks them against the directory. This adds a separate service that you install, configure, restart and monitor, along with its own directory bind account. Because mod_auth_cyrus is a community module, review its maintenance status and test it against the Prosody version you actually run. The guide is marked as a first draft, tested on Debian 11 with OpenLDAP and on Ubuntu 24.04 with Active Directory, so plan a lab run before production.
In the Docker setup, LDAP is switched on in the .env file by setting ENABLE_AUTH and AUTH_TYPE=ldap, then pointing the deployment at your directory with LDAP_URL, LDAP_BASE, LDAP_BINDDN and LDAP_FILTER. Transport security is controlled by LDAP_USE_TLS, LDAP_TLS_CHECK_PEER and LDAP_START_TLS. This route does not need the separate saslauthd layer, but it still requires the same directory decisions: the bind account, the base DN where users live, and whether the connection is encrypted and its server certificate verified. Ask your directory team to confirm the bind account and search base they will provide before you edit the file.
The search filter is where Active Directory deployments most often fail. The handbook notes that LDAP filters default to uid=%u, which suits many OpenLDAP schemas, while Samba or Active Directory may need (sAMAccountName=%U) instead. Test with a real account from each group that should be allowed and with one that should be refused, and confirm that the login name users type matches the attribute the filter searches. Also check how disabled or locked accounts behave under your directory policy, because the filter alone may not refuse them. Record the tested filter and TLS settings in your change record, since administrators and auditors will ask for them first.
What you need before connecting Jitsi to a directory
Six prerequisites cover the Jitsi host, the operating system, network access, certificates and the directory account. Read them together, because the directory settings only work when the Jitsi host can reach the directory and the certificate matches the name users open in their browser.
Jitsi components on the server
A self-hosted Jitsi Meet deployment runs a web server (nginx or Apache) that serves the web app, the Prosody XMPP server, Jicofo (the conference focus) and one or more Jitsi Videobridge media routers. Authentication for room creators happens in Prosody, so the LDAP settings and any Cyrus SASL packages belong on the host that runs Prosody. Check which of these roles share a machine in your design, because that choice determines which configuration files you edit and which services you restart.
Supported operating systems and OpenJDK 17
The Debian and Ubuntu quick start supports Debian 12 (Bookworm) or newer and Ubuntu 24.04 or newer, and it requires OpenJDK 17 on the host. The LDAP guide was tested on Debian 11 with OpenLDAP and on Ubuntu 24.04 with Active Directory, so a Debian 11 host falls below the quick start minimum. Confirm your exact OS version, Java package and Jitsi release against the current Jitsi handbook before you install anything.
Ports the quick start expects
Open 80/TCP and 443/TCP for the web app and 10000/UDP for media traffic. The quick start also lists 5349/TCP as a TCP fallback for media and 3478/UDP for STUN as optional. Separately, confirm that the Jitsi host can open a connection to your LDAP or Active Directory port, because the bind and search requests originate from Prosody on that host. Ask your network team to confirm any firewall rules between those two systems.
Domain certificate for HTTPS
The Jitsi handbook says HTTPS with a proper domain certificate is necessary for working audio and video, and it warns that self-signed certificates cause problems, especially with mobile clients. Obtain the certificate for the public name your users will type into the browser before you test sign-in. Ask your PKI team whether the issuing authority is trusted by every browser and mobile client your users run, including any internal certificate authority.
Directory service account for binding
Prosody binds to the directory with a service account, which the Docker setup receives through the LDAP_BINDDN variable. Request a read-only account that can search the user subtree and nothing more, and ask your directory administrator to confirm that it can read the attributes used for login. Store its password in your secrets manager and keep it out of plain configuration files that other administrators can read.
Base DN and user search filter
LDAP_BASE sets the search root, and LDAP_FILTER selects the account that matches the username a user types. The handbook notes that the filter defaults to uid=%u and that Samba or Active Directory may need (sAMAccountName=%U) instead. Test the filter with a known account in your directory before you change the Jitsi configuration, and confirm the attribute names for your schema with your directory administrator.
Choosing between the Cyrus SASL route and AUTH_TYPE=ldap
The choice is between two ways of making Prosody check room creators against an LDAP directory. On Debian or Ubuntu packages, the Jitsi handbook's LDAP guide has Prosody authenticate through saslauthd, the Cyrus SASL daemon, using the mod_auth_cyrus community module. In Docker, you enable ENABLE_AUTH and set AUTH_TYPE=ldap in the .env file, and the container configuration handles the wiring. Decide on the basis of how your team already deploys and operates Jitsi. The route that fits your change process and on-call model matters more than which one has fewer steps on the first day.
The Debian route depends on two things you must own. The first is a community module, which is not part of the core Jitsi packages, so you need to confirm that mod_auth_cyrus works with the Prosody version your distribution ships. The second is a set of host-level services: saslauthd must run on the same server, its configuration and socket permissions must be correct, and it has its own upgrade cycle. Each Prosody or operating system upgrade is a point where authentication can break without any change to Jitsi itself. Name who owns those host services and who gets paged when room creation fails.
The Docker route keeps the LDAP settings in one file. The variables that control the connection, including LDAP_URL, LDAP_BASE, LDAP_BINDDN and LDAP_FILTER, sit beside the rest of your deployment configuration, so they can be reviewed, versioned and compared between staging and production. The trade-off is that the bind credentials live in that same file, so it needs the same secret handling as other service passwords. Also check that the variable names in your image version match the handbook's Docker guide before you rely on them.
The handbook marks the LDAP guide as a first draft. It was tested on Debian 11 with OpenLDAP and on Ubuntu 24.04 with Active Directory. Debian 11 is older than the Debian 12 minimum in the Jitsi quick start, so if your hosts run Debian 12 or newer, the guide's test platform does not match yours. Before you pick a route, build a staging environment against your own directory, confirm mod_auth_cyrus compatibility with your Prosody version, and schedule test time for both a standard login and a failed login. Ask any implementation partner to state that testing time as a separate line in the written scope.
Configuring LDAP authentication in the order that avoids lockouts
Authentication failures tend to appear in predictable places, so the order of work matters. Each step depends on a check that already passed, and the sequence keeps failed tests away from the people who need to join meetings. The result is a working LDAP login for one known account before anyone else gets access.
Confirm HTTPS works with a trusted certificate
Start with the web tier, because browser testing of LDAP logins depends on it. Using a certificate issued by a trusted authority for the Jitsi domain, load the meeting URL from a desktop browser and from a mobile device on the same network. The Jitsi handbook says a proper domain certificate is necessary for working audio and video and warns that self-signed certificates cause problems, especially on mobile clients. Done when both devices load the page with no certificate warnings and join a test room with audio and video.
Create and test the bind account
Ask your directory team for a dedicated service account used only to search for users, with read access to user objects under the planned base DN and no administrative rights. Keep its password in your secrets store, not in configuration files committed to version control. From the Prosody host, run an LDAP search as this account, then repeat it with a wrong password. Done when the correct credentials return results and the wrong password fails, which confirms the bind works before Jitsi depends on it.
Set the base DN and login filter
Identify the directory container that holds the people who will create rooms, and set it as the base DN. The handbook's default filter for LDAP logins is uid=%u, where %u is the username typed at sign-in. Samba and Active Directory deployments may need (sAMAccountName=%U) instead, so confirm which attribute your directory uses for login names. Run a search with a known test username in place of the placeholder. Done when exactly one entry returns, because a filter that matches several entries or none causes confusing failures later.
Enable LDAP on the chosen route
Pick one route and configure only that route. On Debian packages, the handbook's LDAP guide authenticates Prosody through Cyrus SASL (saslauthd) with the mod_auth_cyrus community module. That guide is marked as a first draft tested on Debian 11 with OpenLDAP and Ubuntu 24.04 with Active Directory, so check each package version against the supported releases in the Debian and Ubuntu quick start. On Docker, set ENABLE_AUTH and AUTH_TYPE=ldap in the .env file, then fill in the LDAP_ variables for the URL, base, bind DN and filter. Done when the services restart cleanly and the logs show no startup errors.
Verify TLS to the directory
Credentials cross the link between the Jitsi authentication component and the directory, so confirm that link is encrypted before any test login. On Docker, set LDAP_USE_TLS, LDAP_START_TLS and LDAP_TLS_CHECK_PEER to match how your directory offers encryption, and keep peer checking enabled so the client validates the directory certificate. Confirm the exact values with the directory team, because domain controllers and OpenLDAP servers are often configured differently. Done when a search over the encrypted connection succeeds with peer checking turned on.
Test one known account before opening access
Keep access closed to everyone except one named test account whose owner agrees to take part. Sign in from the browser, create a room, and confirm the account starts the meeting as its owner. Then try a wrong password once and stop if it fails in an unexpected way. Check the Prosody or Jicofo logs for an entry that names the authenticated user and shows no repeated failures from one source. Done when the test account signs in and the log entry names the expected user. Keep failed attempts to a minimum, because directory lockout policies can disable the account.
Open access in stages after the test passes
Widen access only after the test account check is complete. Add a small pilot group from one team, confirm its members can sign in, then extend access to the rest of the users in your planned scope. Confirm that a disabled or expired directory account is refused, because the directory now controls who can create rooms. Watch the authentication logs during each stage for spikes in failed logins, which often point to a filter or lockout issue that needs fixing before the next group joins.
How directory attributes map to Jitsi room creators
This table maps each directory field to the Jitsi Docker or Prosody setting that controls it, with notes on where deployments usually go wrong. Read the first three rows together, because the identifier, search base and bind account must agree before any login test will succeed. The main takeaway is that the documented settings control who can authenticate, while group-based moderator rules need confirmation against the current handbook.
| Directory field | Jitsi or Prosody setting | Note |
|---|---|---|
| Login identifier | LDAP_FILTER with uid=%u by default | Samba or Active Directory may need (sAMAccountName=%U) instead. Confirm the attribute your directory uses before testing. |
| Search base | LDAP_BASE | The distinguished name of the branch holding users who may sign in. A wrong base returns no matches, even for valid accounts. |
| Bind identity | LDAP_BINDDN | Service account Prosody uses to search the directory. Grant read access to user entries and confirm the bind password handling in the handbook. |
| Filter | LDAP_FILTER | Narrows matches to the accounts you intend to admit. Changing it alters who can authenticate, so retest after every change. |
| Username typed in Jitsi | Matched through LDAP_FILTER | Confirm whether the match must be exact, including letter case and any domain prefix. Test both forms with your own accounts. |
| Group membership | LDAP_FILTER, if group checks are added | Documented settings limit who can authenticate. Group-based moderator logic needs confirmation against the current handbook. |
| Transport and certificate checks | LDAP_URL, LDAP_USE_TLS, LDAP_START_TLS, LDAP_TLS_CHECK_PEER | Mismatched TLS settings are a common failure point with Active Directory. Certificate checks must match the directory certificate your host trusts. |
Why Active Directory filters and TLS settings trip up deployments
The most common Active Directory failure is the user search filter, so check it before anything else. The Jitsi handbook notes that LDAP filters default to uid=%u, which matches the uid attribute that OpenLDAP directories typically use for login names. Active Directory user objects usually do not carry a uid value for sign-in, so Samba and Active Directory deployments generally need (sAMAccountName=%U) in the LDAP_FILTER variable instead. Ask your directory team which attribute holds the name users type at sign-in, then test with one account from the group that should be allowed to create rooms. Confirm in the handbook how the placeholder is expanded in your Jitsi version, because the case and form of the name passed to the filter decide whether the lookup succeeds.
Three Docker variables control the transport, and each is a separate decision. LDAP_USE_TLS, LDAP_START_TLS and LDAP_TLS_CHECK_PEER govern whether the connection is encrypted from the first packet, whether a plain connection is upgraded with StartTLS, and whether the server certificate is verified. The LDAP_URL scheme and port must agree with the setting you choose, and the directory listener your Active Directory team exposes determines which combination is valid. Do not copy values from an example file or a forum post. Confirm each one against the listener the domain controllers actually offer, and record the chosen combination in your configuration documentation so that a later upgrade does not silently change it.
The peer check setting is where the trade-off is sharpest. If verification is switched off to get logins working, Jitsi may accept a directory server whose identity has never been validated, and users see a successful sign-in, so the weakness goes unnoticed. If verification is on and the directory presents a chain that the Jitsi host does not trust, every login fails, and the error often appears only in container or Prosody logs. The correct fix is to install the issuing certificate authority chain in the trust store that the Jitsi containers read, and to confirm that the name in LDAP_URL matches a name on the domain controller certificate. Test the chain from the Jitsi host with a TLS client tool before changing any Jitsi setting.
The directory trust and the public web certificate are separate decisions, and they should be documented separately. The Jitsi handbook says HTTPS with a proper domain certificate is necessary for working audio and video, and it warns that self-signed certificates cause problems, especially with mobile clients. Trusting your internal authority for LDAP does not make browsers trust the meeting site, and a public web certificate does nothing for the directory connection. For each one, record the signing authority, the host where the trust is installed, the owner responsible for renewal and the expiry process. Ask your PKI team to confirm both records before the first production sign-in test.
Hardening the bind account and the directory connection
Authentication for Jitsi rests on a directory connection that Prosody uses to check credentials. The cards below cover the account it uses to search the directory, the transport and certificate checks that protect that connection, the network path between the two, and the review that confirms the result matches your access policy.
Read-only, narrowly scoped bind account
Prosody binds to the directory with a service account that only needs to search for the user objects matching the login filter. Grant read access, limit the search base to the organizational unit that holds Jitsi users, and avoid group membership in privileged directory roles. Check the account with a search from the Prosody host before you rely on it, because a broad search base or a write permission widens what a compromised Prosody can reach.
Dedicated service account, not a personal one
Create a separate account for the Jitsi bind rather than reusing an administrator or an engineer's login. A dedicated account can be disabled, rotated or audited without affecting people, and its activity in directory logs is easy to attribute to Jitsi. Ask your directory team who owns the account, how its password is rotated, and what happens to Jitsi when that owner leaves.
Keep bind secrets out of shared Docker files
In the Docker setup, the bind account password is supplied through the .env file used by the Jitsi containers. Treat that file as a secret: restrict its file permissions, keep it out of version control and shared repositories, and avoid pasting it into tickets or chat. Confirm with your secrets team whether an external secrets store can inject the value at deploy time instead.
Encrypted directory transport and certificate checks
Bind credentials must not cross the network in clear text. The Docker variables for TLS and StartTLS, along with the peer-check setting, decide whether Prosody encrypts the connection and verifies the directory's certificate. Enable both encryption and certificate verification, install the internal certificate authority chain on the Prosody host, and confirm that a connection with an untrusted certificate fails rather than falling back to an unverified session.
Restricted network path to the directory
Allow traffic from the Prosody container to the directory controllers on the required directory port only, and deny other routes from the Jitsi network segment. Confirm the path with your network team, including any firewall rules between the Docker host and the directory site. A narrow path limits what a compromised Jitsi component can reach and makes connection failures easier to trace.
Log review for failed binds
Failed bind attempts from the Prosody host are an early signal of a wrong password, a locked account or a credential that someone is guessing. Forward Prosody and directory authentication logs to your monitoring platform, set an alert for repeated failures against the bind account, and agree on who receives it. Test the alert once after setup so you know it fires before you need it.
Authentication is not authorization
A successful LDAP login confirms who the user is. It does not decide who may create rooms or who becomes a moderator. Those behaviors depend on how Jitsi is configured, including the Prosody authentication settings and the meeting options that govern moderators and lobby access. Document which directory groups map to which Jitsi behaviors, and test that a valid user without the right role cannot perform privileged actions.
Independent review against your access policy
Before go-live, have someone outside the implementation team compare the final configuration with your organization's access policy: who may sign in, who may create rooms, how the bind account is governed and how failures are reviewed. Record each gap and its owner. This review is not an audit or certification, and you should ask any partner to state in writing what it covers and what it leaves to your own control owners.
How to test the login path before users depend on it
Before any user is told to sign in with directory credentials, the team should run a fixed test plan against the live login path and keep the results. The plan should start with a dedicated test organizational unit or group in the directory, populated with a small set of known accounts that cover the cases below. Using a test population keeps the checks repeatable, avoids locking out real staff during troubleshooting, and gives a reviewer a clear record of which accounts were used and what each one was expected to do.
Positive tests. A valid test account should sign in through the Jitsi login flow and be able to create a room. Confirm that the room opens, that the account is recognized as the room creator, and that the same result holds after the Prosody service restarts. Repeat the check for a second account drawn from a different branch of the directory tree, because a filter that works for one group can silently fail for another.
Negative tests. Wrong passwords, disabled accounts and accounts outside the search base should all be refused. The disabled-account case matters most in Active Directory, where a disabled user may still authenticate against some bind paths if the filter or bind account is set up loosely. Test an account that exists in the wider forest but sits outside LDAP_BASE, because a common misconfiguration returns a successful result for it. Record the exact error each case produces, and confirm that no room is created in any negative case.
TLS tests. Run the TLS checks from the Jitsi host itself, using the same LDAP_URL, certificate trust store, LDAP_USE_TLS, LDAP_TLS_CHECK_PEER and LDAP_START_TLS values that Prosody uses. Testing from an administrator workstation proves little, because the workstation may trust a different certificate chain. Confirm that the directory certificate validates against the expected name and that a deliberately wrong hostname or untrusted chain fails. The handbook's LDAP guide and Docker setup page describe these variables, and the team should confirm how their chosen Jitsi packaging applies them before relying on the results.
Rollback plan and change control. Before the first test run, save the previous configuration, whether that is the Prosody settings, the saslauthd configuration or the Docker .env values, so it can be restored exactly. Write down the steps to revert and who is authorized to run them. Keep the configuration files, the test account list, the commands run and the raw results under change control, with dates, versions and approvers. Security and compliance reviewers will ask for this evidence, and a documented rollback is what allows a failed change to be reversed without improvising under pressure.
Which LDAP login failures point to which setting
This table pairs each LDAP login symptom with the setting most likely to cause it and the first fix to try. Read it from the symptom down, and check the Docker .env variables or Debian Prosody settings named in each row before changing anything else. Confirm the log locations for your install in the Jitsi handbook LDAP guide so you can match the error message to a row.
| Symptom | Likely cause | Fix |
|---|---|---|
| Every login fails | LDAP_BINDDN or its password is wrong, or the service account is locked or expired | Test the bind with the service account outside Jitsi, correct the DN and password, and unlock the account in the directory |
| Active Directory users fail while OpenLDAP users succeed | LDAP_FILTER still uses uid=%u, but AD accounts are identified by sAMAccountName | Set LDAP_FILTER to sAMAccountName=%U, then recreate the containers and retest |
| TLS handshake or certificate errors | The directory certificate chain is not trusted by the Jitsi host, or LDAP_START_TLS and LDAP_USE_TLS do not match the port in use | Install the internal CA chain on the Jitsi host, then match the TLS and start-TLS variables to the port your directory serves |
| Connection refused or timeouts | LDAP_URL points to the wrong host or port, or a firewall blocks traffic from the Jitsi host | Test reachability from the Jitsi host to the directory port, then correct LDAP_URL or the firewall rule |
| Works in a test but some users are refused | LDAP_BASE is too narrow, so accounts in other organizational units are never searched | Widen LDAP_BASE to the root or to every OU that holds users who need room creation rights |
| Settings change but login behavior stays the same | The container or Prosody service was not restarted, so the old configuration is still loaded | Recreate the Docker containers after editing .env, or restart Prosody on Debian packages, then retest with one known account |
When LDAP is the wrong choice compared with JWT tokens
For new installations, LDAP is often the wrong choice when your organization wants an identity provider to decide who can create a Jitsi room. The Jitsi handbook marks the older secure domain method, which uses a username and password at room creation, as deprecated for new installations. It recommends JWT token authentication instead, paired with a separate anonymous domain for guests. Before you commit to the LDAP route described in this topic, check whether that recommendation changes your design. An LDAP setup still ends with Prosody checking credentials against a directory, so the handbook's deprecation note is the first fact to put in front of your architecture review.
Three questions decide the route. First, does an identity provider already issue tokens for your users? If your organization already signs people in through an OpenID Connect or SAML provider, a token-based design reuses that sign-in and avoids creating a second place where passwords are checked. Second, do you want another application to decide when a meeting exists and who may enter it? JWT tokens let a portal, booking system or intranet issue a signed token for a specific room and user, which gives per-meeting control that a directory bind cannot express. Third, can your team support a Prosody module path? The LDAP guide relies on Cyrus SASL (saslauthd) and the mod_auth_cyrus community module, so someone must own those packages, their upgrades and the Prosody configuration that remains after each Jitsi release.
LDAP can still be the right choice when the directory is the system of record and the team wants room creators to use their existing directory accounts without a token service. Directory-first environments with OpenLDAP or Active Directory, a stable Prosody host and a small number of named hosts often fit this model well. In that case, confirm three things before build: the filter that matches your schema (uid=%u by default, or (sAMAccountName=%U) for Samba or Active Directory, as the handbook notes), the TLS settings your directory accepts, and who will test sign-in after each upgrade. Document those answers in the design record so the choice is reviewable.
If your organization is leaning toward tokens, the token-based route is covered on the separate Keycloak SSO page for Jitsi. That page explains how to place room creation behind Keycloak with OpenID Connect, including realm and client setup, Prosody token settings, wait-for-host behavior and the config.js SSO URLs. Plan the Keycloak work as its own project with its own owner, and do not treat it as a configuration tweak to an LDAP deployment. Moving from LDAP to tokens later means changing the Prosody authentication path, the guest domain and the way users reach the meeting, so it is cheaper to decide before the first production rooms exist.
Whichever route you choose, record the decision and the owner of each dependency. Ask your implementation partner or internal team to confirm which Jitsi release and Docker or Debian packaging you will run, because the authentication settings and file paths differ between them. Confirm with your identity team which directory or token issuer is authoritative, and with your security team how room creators will be removed when they leave. A short written comparison of the two routes, scored against the three questions above, gives reviewers a clear basis for approving LDAP or moving to JWT.
Questions buyers ask before hiring outside help
Can our team set up Jitsi LDAP or Active Directory authentication without outside help?
Yes, if your team has Linux administration skills, working knowledge of your directory, and time set aside for testing. The Docker route is mostly configuration: you enable ENABLE_AUTH and AUTH_TYPE=ldap in the .env file and set the LDAP_URL, LDAP_BASE, LDAP_BINDDN, LDAP_FILTER and TLS variables. The Debian and Ubuntu route is harder to plan. It uses Cyrus SASL (saslauthd) with the mod_auth_cyrus community module, and the Jitsi handbook marks that guide as a first draft. Its tested combinations are Debian 11 with OpenLDAP and Ubuntu 24.04 with Active Directory. If your versions differ, expect more unknowns, and confirm each step in a staging environment before you touch production.
What drives the effort of a Jitsi LDAP or Active Directory project?
The main drivers are the shape of the deployment and the directory behind it. Count the Jitsi nodes that handle authentication, since the web, Prosody, Jicofo and videobridge components may sit on one host or several. The operating system and install method (Docker or Debian packages) decide which authentication route applies. The directory type matters: OpenLDAP and Active Directory differ in attribute names, so the login filter may need to change from uid=%u to (sAMAccountName=%U). TLS and certificate work often takes the most time, because the handbook says a proper domain certificate is necessary for working audio and video, and self-signed certificates cause problems, especially on mobile clients. Testing scope also grows with the number of user groups, login paths and clients you need to verify.
What does the work need from our directory and IT teams?
The work depends on access and decisions that only your organization can provide. Directory administrators need to grant read access to the user search base and to create a bind account the Jitsi services can use to query the directory. That service account should have only the rights the login lookup requires. You need a small test group of users with known accounts, including one account that is supposed to be denied. Operations must agree on a maintenance window, because Prosody and the web tier restart when authentication settings change. Finally, your security team has to decide on the certificate approach: which domain certificate serves Jitsi, which certificate authority signs it, and whether LDAP connections use TLS with peer checking. Those choices should be recorded before configuration begins.
How does a fixed-scope quote for this work get built?
A fixed-scope quote follows from a written scope, not from a price list. DeployOpen does not publish prices, so the scope document is the starting point. It should name the Jitsi nodes involved, the operating system and install method, the directory type and login filter, the TLS and certificate approach, the test cases and the handover material. Deliverables and timelines are agreed in writing before work starts. Ask for the quote to separate one-time work, such as design, configuration, testing and documentation, from recurring work, such as upgrades, directory changes and certificate renewals. If you want ongoing help after go-live, retainers for support, upgrades and continuous testing are available and should be priced as a separate line item.
Does DeployOpen provide audit reports or certifications for our Jitsi authentication setup?
No. DeployOpen plans, configures, tests and documents the system, and it prepares the controls and evidence your assessment will need. Audit reports, attestations and certifications come from independent auditors and certification bodies, not from the implementation partner. For an LDAP-backed Jitsi deployment, a useful evidence package usually covers the configuration as deployed, the access granted to the bind account, the test results for allowed and denied logins, the certificate inventory and the change records for updates. Ask any partner to show you which of these they produce and which must come from your auditor. If your assessment uses a particular control framework, confirm the mapping with your auditor before work starts.
Is the Jitsi handbook LDAP guide ready for production use?
Treat it as a starting point, not a finished runbook. The Jitsi handbook marks its LDAP authentication guide as a first draft, and it records testing on Debian 11 with OpenLDAP and on Ubuntu 24.04 with Active Directory. Those tested combinations are the most reliable reference points. The guide also notes that LDAP filters default to uid=%u and that Samba or Active Directory may need (sAMAccountName=%U), so check the filter against your directory before you rely on any example. The community module behind the Debian route should also be reviewed for its current maintenance status and compatibility with your operating system. Build a staging copy, run your own login tests and record every deviation from the handbook before you approve a production change.
Which costs come after an LDAP integration goes live?
Most of the cost after go-live is recurring, and it is easy to underestimate. The one-time work covers design, configuration, testing and documentation. The recurring work includes applying Jitsi upgrades, which can change configuration or file locations, and repeating the login tests after each upgrade. Directory changes, such as a new domain controller, a renamed organizational unit or a change to the account used for binding, can break the filter or the bind settings and need a fresh test. Certificates expire, so renewal and the LDAP trust chain need an owner. If your team keeps these tasks in house, it should also budget time for the person who understands both the directory and the Jitsi configuration. A partner's retainer, if you choose one, replaces that time with a defined support scope.
How DeployOpen scopes and delivers Jitsi directory authentication
DeployOpen plans, builds and documents directory sign-in for self-hosted Jitsi Meet inside your own infrastructure, so only directory users can create rooms. The work starts from your directory layout and your Jitsi install method, whether Debian packages or the official Docker setup, and ends with tested room creation and a handover your team can run.
How we scope
- Confirm whether your Jitsi runs from Debian packages or the official Docker setup, since the LDAP route differs for each.
- Record the directory type, OpenLDAP or Active Directory, and the user attribute that matches Jitsi login names.
- Agree in writing which users may create rooms, how guests join, and how TLS to the directory is handled before build starts.
How we build
- Connect Prosody to the directory through the documented LDAP route, with Cyrus SASL and the mod_auth_cyrus module on Debian installs.
- Set ENABLE_AUTH, AUTH_TYPE=ldap, LDAP_URL, LDAP_BASE, LDAP_BINDDN and LDAP_FILTER in the .env file for Docker installs.
- Test the filter against real accounts, including the sAMAccountName form that Active Directory often needs in place of uid.
How we hand over
- Deliver a written record of the chosen auth route, filter syntax, TLS settings and bind account used in your environment.
- Walk your administrators through a room creation test with a directory user, a rejected account and a guest join.
- Document how to rotate the bind account password and how to add or remove directory groups that may create rooms.
How we support
- Offer ongoing support and upgrades as a retainer, including checks after Jitsi release updates change configuration.
- Re-test directory sign-in after directory changes such as schema updates, domain controller moves or certificate renewals.
- Ask any support provider to confirm how they handle the rootless container directory changes in the Jitsi upgrade path.

