stura-infra/hosts/redmine/default.nix
2026-02-28 18:55:24 +01:00

280 lines
10 KiB
Nix

{ config, pkgs, lib, modulesPath, ... }:
{
#services.openssh.enable = true;
imports = [
"${modulesPath}/virtualisation/proxmox-lxc.nix"
];
############################
#### NixOS
############################
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";
nix.gc.options = "--delete-older-than 42d";
############################
#### Umgebung
############################
# environment.noXlibs = true;
services.xserver.enable = false;
services.openssh.enable = true;
############################
#### Netzwerk
############################
networking = {
enableIPv6 = false;
hostName = "pro";
domain = lib.mkForce "stura.htw-dresden.de";
firewall.allowedTCPPorts = [ 22 80 443 ];
# firewall.allowedTCPPorts = [ 80 443 3000 ];
};
############################
#### System
############################
proxmoxLXC.manageHostName = true;
# wird in der default nix auch gesetzt
# time.timeZone = "Europe/Berlin";
############################
#### Anwendung
############################
#### Aufgabenverwaltung StuRa HTW Dresden
#### Redmine
#### Beim StuRa braucht es einen Dienst zur Aufgabenverwaltung.
#### Beim StuRa wird (gefuehlt seit jeher) die Anwendung Redmine fuer den Dienst Aufgabenverwaltung verwendet.
#### https://search.nixos.org/options?show=services.redmine.enable
#### Verwenden der Anwendung Redmine
services.redmine.enable = true;
#### Standardmaessig verwendet die Anwendung Redmine den Port 3000.
#### Es ist aber ueblich, dass die Anwendung Redmine nicht direkt, sondern nur ueber eine eine uebliche Anwednung fuer den Dienst web server, erreichbar sein soll. networking.firewall.allowedTCPPorts = [ 3000 ];
#### https://search.nixos.org/options?show=services.redmine.settings
#### https://github.com/redmine/redmine/blob/master/config/configuration.yml.example
#### Standardmaessig ist keine Konfiguration fuer den Versand von Mails bei der Anwendung Redmine konfiguriert. Es ist kein Versand von Mails durch die Anwendung moeglich.
#### Der Dienst Aufgabenverwaltung soll aber Mails - um ueber Aenderungen beim der Aufgabenverwaltung informieren zu koennen - Mails versenden koennen.
#### #### Achtung! Die Inhalte der Konfiguration werden den Inhalten der sonstigen Inhalten der Konfiguration von in der Dateie fuer die Konfiguration der Anwendung Redmine vorangestellt.
services.redmine.settings.production.email_delivery = {
delivery_method = ":smtp";
smtp_settings = {
address = "mail.${config.networking.domain}";
port = 25;
};
#### Alternativ waere vielleicht auch das Versand von Mails durch das Programm sendmail (als lokale Installation) moeglich.
#### Getestet wurde das aber noch nicht.
##### delivery_method = ":sendmail";
};
#### https://www.redmine.org/projects/redmine/wiki/RedmineAdminInformation#ImageMagick-convert-available
services.redmine.components.imagemagick = true;
services.redmine.components.minimagick_font_path = "${pkgs.liberation_ttf.outPath}/share/fonts/truetype/LiberationSans-Regular.ttf";
#### https://www.redmine.org/projects/redmine/wiki/RedmineAdminInformation#ImageMagick-PDF-support-available
services.redmine.components.ghostscript = true;
#### Die Anwendung Redmine kann mit sogenannten Plugins erweitert werden.
#### Beim StuRa brauchen wir keine Erweiterungen fuer die Anwendung Redmine.
#### Zum Test der Verwendung von Erweiterungen fuer die Anwendung Redmine installieren wir "zufaellige" Erweiterungen.
# services.redmine.plugins = {
# issue_recurring = builtins.fetchurl {
# url = "https://github.com/cryptogopher/issue_recurring/archive/refs/tags/1.7.zip";
# sha256 = "1s729gyh2wsa9yljm6gvk76z3qxnp1vhaydypvda8miw69csvs34";
# };
#### siehe instanz 137 (srs-test-pve)
#### https://10.1.0.17:8006/#v1:0:=lxc%2F137:4:::::::
# redmine_kanban = builtins.fetchurl {
## url = "https://github.com/happy-se-life/kanban/archive/refs/heads/master.zip";
# url = "https://github.com/happy-se-life/kanban/archive/refs/heads/tags0.0.11.zip";
# sha256 = "01ymd25169dhyc4ksdx67w5h9rba09hrvmfw7bc6y71lsrxlg4sr";
# };
# };
#### weitere Inhalte zur Konfiguration
#### ls -l /var/lib/redmine/config/
#### Die Anwendung Redmine soll nicht direkt, sondern ueber eine uebliche Anwendung fuer den Dienst web server, erreichbar sein.
#### Es braucht einen (nahezu beliebigen) web server.
#### Beim StuRa HTW Dresden verwenden wir als web server moeglichst Nginx.
#### Verwenden der Anwendung Nginx als web server (Proxy)
services.nginx.enable = true;
#### Der StuRa speichert nicht!
services.nginx.logError = ''/dev/null emerg'';
services.nginx.appendHttpConfig = ''
access_log off;
'';
#### Wir verwenden die fuer NixOS ueblichen Empfehlung fuer Nginx.
services.nginx.recommendedOptimisation = true;
services.nginx.recommendedGzipSettings = true;
##### Mit der Anwendung Nginx soll die Erreichbarkeit der Anwendung Redmine (standardmaessig an Port 3000) (auf erwartbaren Weg) moeglich machen.
services.nginx.recommendedProxySettings = true;
#### Mit der Anwendung Nginx soll die (ausschließliche) Verwendung von https (http mit TLS), statt http ermoeglicht werden.
services.nginx.recommendedTlsSettings = true;
#### Anscheinend kann mit nix nur die Konfiguration fuer eine konkrete (manuelle) Konfiguration fuer den Dienst web server.
services.nginx.virtualHosts."${config.networking.fqdn}" = {
#### https://search.nixos.org/options?show=services.nginx.virtualHosts.<name>.default
default = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.redmine.port}";
};
forceSSL = true;
enableACME = true;
};
services.nginx.virtualHosts."pro.htw.stura-dresden.de" = {
#### https://search.nixos.org/options?show=services.nginx.virtualHosts.<name>.default
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.redmine.port}";
};
forceSSL = true;
enableACME = true;
};
#### Die Verwendung von TLS braucht ein (valides) Zertifikat.
#### Beim StuRa verwenden wir den ((auch bei NixOS) standardmaessigen) Dienst von letsencrypt.org.
#### Bereitstellen der Informationen (Erreichbarkeit und Einwilligung) fuer letsencrypt.org
security.acme.defaults.email = "cert@stura.htw-dresden.de";
security.acme.acceptTerms = true;
############################
#### Probleme
############################
# services.redmine.package = unstable.redmine;
# services.redmine.packages = pkgs.redmine.override { rubyPackages.rails = pkgs.ruby_2_7; };
#### Problem Verweigerung der Akualisierung wegen unsicherenen Paket redmine
#### 2025-06-09 vat
#### Durch die Aktualisierung auf Redmine Version 6 durch die Aktualisierung auf NixOS Version 25.05 scheint das Problem ueberwunden (siehe Ticket #2475) zu sein.
##### Ausnahme für upgrade von der Instanz
##### siehe Ticket #2241
#### nixpkgs.config.permittedInsecurePackages = [
######## 2025-05-16 vat@
######## Die Aktualisierung lief nicht, da nun 5.1.8 verwendet wird.
##### "redmine-5.1.7"
#### "redmine-5.1.8"
#### ];
#### Problem - wie bei allen Instanzen mit NixOS auf PVE - fehlende Bereitstellung der Daten fuer locale
#### 2025-06-27 vat@ && tan@
#### gescheiterter Versuch um fehlermeldungen nach
#### pct enter 100
#### . /etc/profile
####sh: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
####sh: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
#### zu vermeiden.
## i18n.extraLocales = [
## "all"
## ];
# i18n.extraLocaleSettings = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.UTF-8";
## LC_CTYPE = "en_US.utf8";
## LC_COLLATE = "en_US.utf8";
### LC_ALL = "en_US.UTF-8";
# };
# i18n.localeCharsets = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.utf8";
# };
# i18n.defaultLocale = "en_US.UTF-8";
# i18n.glibcLocales = pkgs.glibcLocales;
# i18n.glibcLocales = pkgs.glibcLocalesUtf8;
# environment.systemPackages = with pkgs; [
# glibcLocales
# glibcLocalesUtf8
# ];
# environment.variables = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.UTF-8";
# };
#### ve
############################
#### Problem Anwendung Redmine startet nicht, weil beim Bauen vom Paket Inhalte aus einem Gemfile nicht richtig behandelt werden
############################
#### https://pro.stura.htw-dresden.de/issues/2510
############################
#### nixpkgs
############################
#### 2025-07-11 vat
#### vb
#### https://wiki.nixos.org/wiki/FAQ/Pinning_Nixpkgs#Pinning_an_unstable_service
# nixpkgs.config = {
## allowUnfree = true;
# packageOverrides = pkgs: {
## unstable = import <nixpkgs-unstable> {
# master = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d21825f9cf895942e057230c56625e2290d1b149.tar.gz") {
# config = config.nixpkgs.config;
# };
# };
# };
## environment.systemPackages = with pkgs; [
## unstable.redmine
## ];
##
#
services.redmine.package =
let
#### fixing commit
#### https://github.com/NixOS/nixpkgs/commit/d21825f9cf895942e057230c56625e2290d1b149
# pkgs_master_redmine_fixed = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d21825f9cf895942e057230c56625e2290d1b149.tar.gz") {
# config = config.nixpkgs.config;
# };
#### https://github.com/NixOS/nixpkgs/commits/nixos-25.05/pkgs/by-name/re/redmine
#### breaking commit
#### https://github.com/NixOS/nixpkgs/commit/1105b34ec2b88e82fe35be9e6ba5c547487824b2
pkgs_redmine_25-05_before-broken = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/c80c8f5ba65ceab4c7ec266293a2ce20a663d245.tar.gz") {
config = config.nixpkgs.config;
};
in
# pkgs_master_redmine_fixed.redmine;
pkgs_redmine_25-05_before-broken.redmine;
#### https://github.com/NixOS/nixpkgs/pull/424140
#### https://github.com/NixOS/nixpkgs/pull/424285
#### ve
}