diff --git a/hosts/nextcloud/default.nix b/hosts/nextcloud/default.nix new file mode 100644 index 0000000..2c9e39d --- /dev/null +++ b/hosts/nextcloud/default.nix @@ -0,0 +1,309 @@ +{ 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 + + +} +