{ config, pkgs, lib, modulesPath, ... }: { ################# COMMON STUFF # what do the config.nix files have in common comes here # imports = [ "${modulesPath}/virtualisation/proxmox-lxc.nix" ]; # proxmox-lxc.nix hat fuer bestimmte optionen eigene defaulwerte # diese koennen in dem dazugehoerigen nix file nachgelesen werden system.stateVersion = "22.11"; # system.autoUpgrade.enable = true; # system.autoUpgrade.allowReboot = true; # # system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11; # nix.settings.auto-optimise-store = true; # nix.optimise.automatic = true; # nix.gc.automatic = true; # nix.gc.options = "--delete-older-than 5d"; proxmoxLXC = { # mach mal auf false manageNetwork = true; manageHostName = false; }; networking = { enableIPv6 = false; }; #### 2024-04-14 vater #### Nicht erfolgreicher Test zur Behebung vom Problem, dass wegen falsch gesetzten Umgebungsvariablen nichts - auch nichts fuer die Verwendung von NixOS - mit TLS geruntergeladen werden kann. #### https://pro.stura.htw-dresden.de/issues/1822#note-5 #### environment.variables = { #### SSL_CERT_DIR = "/etc/ssl/certs"; #### SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt"; #### }; environment.systemPackages = [ pkgs.tmux # pkgs.micro pkgs.vim #### 2024-04-14 vater #### Nicht erfolgreicher Test zur Behebung vom Problem, dass wegen falsch gesetzten Umgebungsvariablen nichts - auch nichts fuer die Verwendung von NixOS - mit TLS geruntergeladen werden kann. #### https://pro.stura.htw-dresden.de/issues/1822#note-5 #### pkgs.cacert ]; ################# UNIQUE STUFF # unique configuration for each container networking = { hostName = "cloud"; # domain = "stura.htw-dresden.de"; interfaces.eth0.ipv4.addresses = [ { address = "141.56.51.16"; prefixLength = 24; } ]; defaultGateway = "141.56.51.254"; nameservers = [ "141.56.1.1" "141.56.1.2" ]; firewall.allowedTCPPorts = [ 80 443 ]; }; services.nginx = { enable = true; recommendedGzipSettings = true; recommendedOptimisation = true; recommendedProxySettings = true; recommendedTlsSettings = true; logError = '' /dev/null emerg ''; virtualHosts.${config.networking.fqdn} = { forceSSL = true; enableACME = true; extraConfig = '' access_log off; ''; }; # virtualHosts."cloud.htw.stura-dresden.de" = { # forceSSL = true; # enableACME = true; # locations = config.services.nginx.virtualHosts."${config.networking.fqdn}".locations; # }; }; services.nextcloud = { enable = true; #### 2024-12-14 vat #### Versuch der Aktualisierung # package = pkgs.nextcloud27; # package = pkgs.nextcloud28; # package = pkgs.nextcloud29; # package = pkgs.nextcloud30; package = pkgs.nextcloud31; # package = pkgs.nextcloud32; hostName = "${config.networking.fqdn}"; maxUploadSize = "1G"; ### 2025-06-09 Tan ### unter nextcloud.settings definiert #logLevel = 4; caching = { apcu = false; redis = true; }; https = true; settings = { #extraOptions = { #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html #### Einstellung, deren Festlegung von der Anwendung selbst "erwartet" wird #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#default-phone-region # defaultPhoneRegion = "DE"; default_phone_region = "DE"; #### mail # "mail_from_address" = "files"; # "mail_smtpmode" = "smtp"; # "mail_sendmailmode" = "smtp"; # "mail_domain" = "${config.networking.domain}"; # "mail_smtphost" = "mail.${config.networking.domain}"; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-domain # mail_domain = "${config.networking.domain}"; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-from-address # mail_from_address = "files"; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpdebug #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpmode # mail_smtpmode = "smtp"; ## mail_sendmailmode = "smtp"; mail_smtpmode = "sendmail"; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtphost # mail_smtphost = "mail.${config.networking.domain}"; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpport # mail_smtpport = 25; #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtptimeout #### mail_smtptimeout = 10; # mail_smtptimeout = 30; # mail_smtptimeout = 60; "memcache.local" = ''\OC\Memcache\Redis''; "memcache.locking" = ''\OC\Memcache\Redis''; redis = { host = "/run/redis-nextcloud/redis.sock"; port = 0; }; #### aehnlich wie services.nextcloud.settings.trusted_domains ? #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#trusted-domains # extraTrustedDomains = [ # "www.${config.networking.fqdn}" # ]; trusted_domains = [ # services.nextcloud.hostname # "${config.networking.fqdn}" "www.${config.networking.fqdn}" "cloud.htw.stura-dresden.de" ]; #### 2025-06-23 admin@ (vat@) #### ergibt sich ja aus services.nextcloud.https , oder? #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#overwriteprotocol # overwriteProtocol = "https"; # overwriteprotocol = "https"; #### 2025-06-23 admin@ (vat@) #### Wir wollen moeglichst wenig aufzeichnen (, wie auch beim web server). #### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#loglevel # logLevel = 4; loglevel = 4; #### 2024-12-14 vater #### https://pro.stura.htw-dresden.de/issues/1952#note-2 maintenance_window_start = 4; }; config = { adminuser = "administration"; adminpassFile = "/var/lib/nextcloud/adminpassFile"; ### 2025-06-09 Tan ### unter nextcloud.settings definiert #overwriteProtocol = "https"; dbtype = "pgsql"; dbname = "nextcloud"; dbhost = "/run/postgresql"; dbuser = "nextcloud"; ### 2025-06-09 Tan ### unter nextcloud.settings definiert #defaultPhoneRegion = "DE"; # ist unter nextcloud.setting #extraTrustedDomains = [ # "www.${config.networking.fqdn}" #]; }; # Im Zuge von Ticket #1878 wurde der Cache vergrößert phpOptions."opcache.interned_strings_buffer" = "32"; ####vb 2023-11-20 # Es gibt von Nix vorpaketierte Nextcloud Apps, diese sollen verwendet werden extraApps = { inherit (config.services.nextcloud.package.packages.apps) #####vb 2023-11-20 #### oea@ hatte die eigentlich triviale Anforderung fuer die Verwaltung von Kalendern. dirk@ wollte seine Erfahrungen zur Verwendung von Kalendern bei Nextcloud teilen. Dabei fiel auf, dass bei unserer Instanz Anwendung Nextcloud die Erweiterung (App) Calender gar nicht verwendet wird. #### Bei der Bereitstellung der Anwendung Nextcloud wird - von vat@ und dirk@ - erwartet, dass die Funktionalitaet fuer die Verwaltung von Kalendern angeboten wird. calendar #####ve 2023-11-20 #####vb 2023-11-20 #### sm@ hatte die Anforderung zur Verwaltung von Aufgaben - auch mit Terminen - als Kanboard. Anstatt eine weitere eigenstaendige Instanz fuer eine Anwendung - etwa WeKan, Focalboard oder Kanboard - zu betreien sollte einfach bei der bestehenden Instanz Anwendung Nextcloud die Erweiterung (App) Deck genutzt werden. deck #####ve 2023-11-20 #####vb 2023-11-20 #### Pauschales Installieren von vermeintlich ueblichen Erweiterungen (Apps), insbesondere auch um die Erweiterung (App) Deck als "kompatibel" in Betrieb nehmen zu koennen. #### Mit der Installation (und sich daraus ergebender automatischer Aktivierung) der pauschal installierten Erweiterungen (Apps) funktionierte ploetzlich auch die Erweiterung (App) Deck. #### Die Erweiterung (App) Deck funktionierte - unerwarteter Weise - auch nach der Deaktivierung aller anderen Erweiterungen (Apps). w00t? Vielleicht war die notwendige Erweiterung (App) bereits standardmaessig installiert, aber nur nicht aktiviert. #### Letztlich sollen aber alle vermeintlich ueblichen Erweiterungen (Apps) installiert (und aktiviert) bleiben koennen, da der "uebliche" erwartbare Umfang an Funktionalitaeten selbstverstaendlich angeboten werden soll. tasks #### 2024-12-14 vater #### deaktiviert, da beim rebuild switch --upgrade bei NixOS Version 23.11 nicht gebaut werden konnte wegen #### error: attribute 'news' missing # news notes contacts; #####ve 2023-11-20 }; ####ve 2023-11-20 }; services.redis.servers.nextcloud = { enable = true; user = "${config.services.nextcloud.config.dbuser}"; port = 0; }; services.postgresql = { enable = true; ensureDatabases = [ "${config.services.nextcloud.config.dbname}" ]; ensureUsers = [ { name = "${config.services.nextcloud.config.dbuser}"; #### https://pro.stura.htw-dresden.de/issues/2093 #ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES"; } ]; }; systemd.services."nextcloud-setup" = { requires = ["postgresql.service"]; after = ["postgresql.service"]; }; #### 2025-07-05 vat #### vb #### https://pro.stura.htw-dresden.de/issues/2330 #### https://pro.stura.htw-dresden.de/issues/2331 #### Die Anwendung Nextcloud soll Mails vesenden koennen, was anscheinend ohne eine weiteren Dienst nicht zu funktionieren scheint. #### Eine erartungsgemaess vergleichsweise einfach Loesung mit der Anwenung msmtp konnte leider nicht (auf die Schnelle) gefunden werden. Eine solche Loesung waere aber wuenschenswert. # programs.msmtp.enable = true; #### Verwendung der Anwendung nullmailer als moeglichst einfacher Dienst zur Versendung von Mails durch den Dienst Postausgang (Mail) bei einer anderern Instanz. services.nullmailer.enable = true; services.nullmailer.config.remotes = "mail.stura.htw-dresden.de smtp --port=25"; services.nullmailer.config = { allmailfrom = "files@stura.htw-dresden.de"; ##### me = "${config.networking.hostName}"; }; ##### services.nullmailer.config.defaultdomain = "${config.networking.fqdn}"; ##### services.nullmailer.config.defaulthost = "${config.networking.fqdn}"; services.nullmailer.config.helohost = "${config.networking.fqdn}"; #### ve }