Most teams hit the same snag the first time they stand up Phabricator behind Lighttpd. The code review system hums along fine on localhost, but the moment you add SSL, sessions, or OAuth, something cracks. URLs bounce. Authentication fails. And suddenly, your “quick” deployment turns into a late-night support thread.
Lighttpd and Phabricator are each competent on their own. Lighttpd is a sleek, low-memory web server that handles reverse proxying and static assets faster than heavier peers. Phabricator is a deep collaboration suite for code reviews, tasks, and policies. Together, they form a solid, self-hosted DevOps hub that can rival commercial platforms—if configured with care.
The integration hinges on wiring Lighttpd as the front-end proxy while Phabricator runs its PHP stack behind it. Lighttpd should manage TLS termination, path rewriting, and request routing. Phabricator tracks permissions and user sessions, so cookie handling and proxy headers must align. In short, Lighttpd decides where traffic goes, and Phabricator decides who is allowed in and what they can do once inside.
When it works, it is elegant. Request flow is simple: the developer hits the public endpoint, Lighttpd forwards the request upstream, Phabricator authenticates via LDAP, OAuth2, or SAML, then returns a page or task API response. The goal is no unnecessary round-trips or misaligned origins. If you spot redirect loops, double-check X-Forwarded-Proto and Host headers; Phabricator thrives on consistent scheme and base URIs.
Best practice: keep SSL at the proxy layer, force HTTPS internally, and delegate identity to a trusted provider like Okta or Google Workspace. Rotate secrets every 90 days. If you containerize Phabricator, store its configs in version control but inject secrets at runtime using AWS Parameter Store or Vault. A few good habits keep your internal review tool from turning into another credential graveyard.