50 lines
1.6 KiB
Nix
50 lines
1.6 KiB
Nix
|
{ config, ... }:
|
||
|
|
||
|
let
|
||
|
domain = "hedgedoc.fricloud.dk";
|
||
|
stateDir = config.mine.zfsMounts."rpool/safe/svcs/hedgedoc";
|
||
|
in {
|
||
|
services.hedgedoc = {
|
||
|
enable = true;
|
||
|
settings = {
|
||
|
# only change default port, because 3000 is used by other service
|
||
|
port = 6864;
|
||
|
domain = domain;
|
||
|
protocolUseSSL = true;
|
||
|
debug = true;
|
||
|
uploadsPath = stateDir + "/uploads";
|
||
|
db.dialect = "sqlite";
|
||
|
db.storage = stateDir + "/db.sqlite";
|
||
|
|
||
|
# disable annonymous notes, but allow annonymous edits
|
||
|
allowAnonymous = false;
|
||
|
allowAnonymousEdits = true;
|
||
|
defaultPermission = "private"; # only owner can view and edit
|
||
|
|
||
|
# disable email login and register
|
||
|
email = false;
|
||
|
allowEmailRegister = false;
|
||
|
|
||
|
# setup ldap
|
||
|
# https://github.com/lldap/lldap/blob/main/example_configs/hedgedoc.md
|
||
|
ldap = {
|
||
|
url = "ldap://localhost:3890";
|
||
|
bindDn = "uid=bind_user,ou=people,dc=fricloud,dc=dk";
|
||
|
searchBase = "ou=people,dc=fricloud,dc=dk";
|
||
|
searchFilter = "(&(memberOf=cn=base_member,ou=groups,dc=fricloud,dc=dk)(uid={{username}}))";
|
||
|
useridField = "uid";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
# add state directory to ReadWritePaths
|
||
|
systemd.services.hedgedoc.serviceConfig.ReadWritePaths = [ stateDir ];
|
||
|
systemd.services.hedgedoc.serviceConfig.EnvironmentFile = config.age.secrets.lldap-bind-user-pass-hedgedoc-env.path;
|
||
|
|
||
|
services.nginx.virtualHosts."${domain}" = {
|
||
|
forceSSL = true;
|
||
|
enableACME = true;
|
||
|
locations."/".proxyPass = "http://localhost:${builtins.toString config.services.hedgedoc.settings.port}";
|
||
|
};
|
||
|
}
|