54 lines
1.6 KiB
Nix
54 lines
1.6 KiB
Nix
{ config, lib, pkgs, homeyConfig, ... }:
|
|
|
|
# phpLDAPadmin — web UI for OpenLDAP management.
|
|
#
|
|
# Stateless container (no persistent volumes needed).
|
|
# Protected by Authelia two_factor, admins-only policy (defined in authelia.nix).
|
|
# Bound to localhost:8081; Caddy reverse-proxies it.
|
|
#
|
|
# Networking: uses default bridge (podman) network with a port mapping
|
|
# 127.0.0.1:8081->80 so Caddy can reach it. OpenLDAP runs on the host
|
|
# network at 127.0.0.1:389; the container reaches it via the special
|
|
# host.containers.internal DNS name that podman injects automatically.
|
|
|
|
let
|
|
cfg = config.homey.phpldapadmin;
|
|
in
|
|
{
|
|
options.homey.phpldapadmin = {
|
|
enable = lib.mkEnableOption "phpLDAPadmin web interface";
|
|
|
|
image = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "docker.io/osixia/phpldapadmin:latest";
|
|
};
|
|
|
|
port = lib.mkOption {
|
|
type = lib.types.port;
|
|
default = 8081;
|
|
description = "Host port phpLDAPadmin listens on (bound to 127.0.0.1).";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
virtualisation.oci-containers.containers.phpldapadmin = {
|
|
image = cfg.image;
|
|
|
|
environment = {
|
|
PHPLDAPADMIN_HTTPS = "false";
|
|
# "openldap" resolves to the OpenLDAP container via homey network DNS.
|
|
PHPLDAPADMIN_LDAP_HOSTS = "openldap";
|
|
};
|
|
|
|
ports = [ "127.0.0.1:${toString cfg.port}:80" ];
|
|
|
|
extraOptions = [ "--network=homey" ];
|
|
};
|
|
|
|
systemd.services."podman-phpldapadmin" = {
|
|
after = lib.mkAfter [ "podman-openldap.service" "podman-homey-network.service" ];
|
|
wants = lib.mkAfter [ "podman-openldap.service" "podman-homey-network.service" ];
|
|
};
|
|
};
|
|
}
|