Initial commit
This commit is contained in:
107
hosts/cepheus/kanidm.nix
Normal file
107
hosts/cepheus/kanidm.nix
Normal file
@@ -0,0 +1,107 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
kanidmPort = 1888;
|
||||
in {
|
||||
age.secrets.kanidm-admin-password = lib.mkSecret "kanidm";
|
||||
age.secrets.kanidm-idm-admin-password = lib.mkSecret "kanidm";
|
||||
users.groups.kanidm = {};
|
||||
users.users.kanidm.group = "kanidm";
|
||||
users.users.kanidm.isSystemUser = true;
|
||||
|
||||
containers.kanidm = {
|
||||
autoStart = true;
|
||||
bindMounts = {
|
||||
"/certs" = { hostPath = "/nix/persist/services/kanidm/certs"; isReadOnly = false; };
|
||||
"/var/lib/kanidm" = { hostPath = "/nix/persist/services/kanidm/db"; isReadOnly = false; };
|
||||
# "${config.age.secretsDir}" = { hostPath = config.age.secretsDir; isReadOnly = true; };
|
||||
"/run/agenix" = { hostPath = "/run/agenix"; isReadOnly = false; };
|
||||
};
|
||||
# tmpfs = [ "/" ];
|
||||
hostAddress = "192.168.101.10";
|
||||
localAddress = "192.168.101.11";
|
||||
privateNetwork = true;
|
||||
# privateNetwork = false;
|
||||
|
||||
config = { lib, ... }: {
|
||||
imports = [
|
||||
# ../../modules/global/nix.nix
|
||||
../../modules/global/dnscrypt-proxy.nix
|
||||
];
|
||||
|
||||
services.kanidm = {
|
||||
enableServer = true;
|
||||
package = pkgs.kanidmWithSecretProvisioning;
|
||||
enableClient = true;
|
||||
serverSettings = {
|
||||
domain = "idm.nothing.run";
|
||||
origin = "https://idm.nothing.run";
|
||||
# bindaddress = "127.0.0.1:${toString kanidmPort}";
|
||||
bindaddress = "0.0.0.0:${toString kanidmPort}";
|
||||
log_level = "trace";
|
||||
trust_x_forward_for = true;
|
||||
|
||||
tls_chain = "/certs/chain.pem";
|
||||
tls_key = "/certs/key.pem";
|
||||
};
|
||||
clientSettings = {
|
||||
uri = "https://127.0.0.1:${toString kanidmPort}";
|
||||
verify_ca = false;
|
||||
verify_hostnames = false;
|
||||
};
|
||||
provision = lib.mkMerge [
|
||||
{ enable = lib.mkForce true; }
|
||||
config.services.kanidm.provision
|
||||
];
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [ kanidmPort ];
|
||||
};
|
||||
system.stateVersion = "25.05";
|
||||
};
|
||||
};
|
||||
|
||||
services.kanidm.provision = {
|
||||
acceptInvalidCerts = true;
|
||||
instanceUrl = "https://127.0.0.1:${toString kanidmPort}";
|
||||
|
||||
adminPasswordFile = config.age.secrets.kanidm-admin-password.path;
|
||||
idmAdminPasswordFile = config.age.secrets.kanidm-idm-admin-password.path;
|
||||
groups.admins = {};
|
||||
|
||||
persons = {
|
||||
"thary" = {
|
||||
"displayName" = "Thary";
|
||||
"mailAddresses" = [
|
||||
"thary@riseup.net"
|
||||
"thary@nothing.run"
|
||||
];
|
||||
groups = [
|
||||
"gitea.access" "gitea.admins"
|
||||
"miniflux.access"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imp.home.dirs = [ ".cache/kanidm_tokens" ];
|
||||
services.kanidm.enableClient = true;
|
||||
services.kanidm.clientSettings = {
|
||||
uri = "https://idm.nothing.run";
|
||||
verify_ca = true;
|
||||
verify_hostnames = true;
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts = {
|
||||
"idm.nothing.run".extraConfig = ''
|
||||
reverse_proxy https://192.168.101.11:${toString kanidmPort} {
|
||||
transport http {
|
||||
tls
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
Reference in New Issue
Block a user