Deploy LLDAP

Lightweight LDAP server with web UI for user management

Deploy LLDAP

Just deployed

/data

Deploy on Railway

LLDAP users list

LLDAP's users list — upstream screenshot from the LLDAP project (screenshot.png). The live UI was verified rendering during end-to-end testing of this template's own deployment.

Deploy and Host

LLDAP is a lightweight LDAP server for user management, with a web UI: create users and groups, set passwords, and give your self-hosted apps (Nextcloud, Gitea, Jellyfin, Authelia, and anything else that speaks LDAP) a single source of truth for authentication. One-click deploy creates a single LLDAP service with a persistent volume and no companion database: users, groups, and settings live in SQLite on the volume. After deploy, open the public URL and log in as admin with the generated password shown on the deploy form — there is no setup wizard and no email step.

About Hosting

Hosting LLDAP on Railway keeps your user directory on your own volume instead of a SaaS. The deployment is a single always-on Rust service: the wrapper maps Railway's injected PORT onto LLDAP's HTTP port on every boot (upstream ignores generic PORT), the upstream entrypoint seeds the admin account from the generated deploy-form password, and the SQLite database lives on the volume. The deploy form has three generated fields and nothing to type.

Why Deploy

  • One login for every app: users and groups in one place, consumed by any LDAP-capable service instead of a separate account per app.
  • Tiny footprint: a single Rust binary, ~2 MB RAM at rest, SQLite on a persistent volume — no database service to run or pay for.
  • Admin UI included: manage users, groups, and passwords from the browser; no LDAP client or command line needed for day-to-day use.
  • Groups that work: memberOf support, so apps can filter by group (e.g. only cn=admins,ou=groups,dc=example,dc=com may sign in).
  • Self-hosted data: your user directory stays on your Railway volume, with no tracking and no subscription.
  • Password resets by email (optional): configure SMTP and users can reset their own passwords from the login page.

Common Use Cases

  • Homelab SSO-lite: one user directory for Nextcloud, Gitea, Jellyfin, and other self-hosted apps that support LDAP.
  • Small teams: a handful of users and groups with per-app access controlled by group membership.
  • A front-end for Authelia / Keycloak / Authentik: LLDAP as the user store behind a full SSO portal.
  • Replacing a spreadsheet of accounts: real user management with password policies instead of shared logins.

Dependencies for

  • A single LLDAP service (Rust, SQLite, no companion service).
  • One persistent volume mounted at /data (config at /data/lldap_config.toml, SQLite database at /data/users.db).
  • Environment variables (condensed reference — full documentation in the repo README):
VariableDefaultDescription
LLDAP_LDAP_USER_PASS${{secret(32)}}Admin password (user admin), seeded once on first boot.
LLDAP_JWT_SECRET${{secret(32)}}Random secret for JWT signatures.
LLDAP_KEY_SEED${{secret(32)}}Random seed for the server private key protecting stored passwords.
LLDAP_HTTP_URLderived at bootPublic URL, used in password-reset email links. Derived from the live Railway domain by the wrapper entrypoint; never set it to https://${{RAILWAY_PUBLIC_DOMAIN}} as a variable — it resolves to a bare https:// on first deploy and LLDAP rejects it hard ("empty host").
PORTRailway-injectedHTTP port, exported as LLDAP_HTTP_PORT by the wrapper on every boot.
LLDAP_LDAP_BASE_DNdc=example,dc=comBase DN for the directory (baked).
LLDAP_LDAP_PORT3890LDAP port (baked). Internal only — Railway's public edge is HTTP-only, so LDAP is reachable from other services in the same project over the private network, not from the internet.
LLDAP_DATABASE_URLsqlite:///data/users.db?mode=rwcSQLite database on the volume (baked).
LLDAP_SMTP_OPTIONS__*unsetOptional password-reset email settings.
LLDAP_LDAPS_OPTIONS__*unsetOptional LDAPS (LDAP over TLS) settings.

Deployment Dependencies

  • Plan tier: works on Railway's entry tiers; a single always-on service with a persistent volume.
  • RAM needs: very light — one Rust service, ~2 MB at rest, no companion database or cache service.

Template Content

More templates in this category

View Template
Keycloak
[2026-11-04] Keycloak with keywind theme + Apple & Discord providers

beuz
755
View Template
lua-protector
Test deployed my project first

trianaq765-cmd's Project
37
View Template
bknd
Feature-rich yet lightweight backend

10