nextcloud läuft

This commit is contained in:
oxce 2026-02-28 18:44:39 +01:00
parent 7aaf388456
commit 11e3642584

309
hosts/nextcloud/default.nix Normal file
View file

@ -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
}