Projekt

Allgemein

Profil

Aktionen

Aufgabe #1932

offen

Migration der Instanz pretix (von Debian) zu NixOS

Von PaulRiegel vor 7 Monaten hinzugefügt. Vor 3 Monaten aktualisiert.

Status:
In Bearbeitung
Priorität:
Hoch
Zugewiesen an:
Kategorie:
Instanz pretix
Beginn:
08.06.2024
Abgabedatum:
% erledigt:

70%

Geschätzter Aufwand:

Beschreibung

Ab NixOS 24.05 ist die Anwendung pretix paketiert (und sogar modularisiert).

https://search.nixos.org/packages?query=pretix
https://search.nixos.org/options?query=services.pretix

Die bestehende Instanz, die wegen der fehlenden Verfügbarkeit mit Debian betrieben wird, kann (soll) nun mit NixOS betrieben werden.


Zugehörige Tickets 1 (1 offen0 geschlossen)

Blockiert Bereich Administration Rechentechnik - Aufgabe #1873: Update von pretix und Anschließend Migration auf eine neue InstanzNeuZuständigkeit Instandhaltung IT-Services30.01.2024

Aktionen
Aktionen #1

Von PaulRiegel vor 4 Monaten aktualisiert

  • Blockiert Aufgabe #1873: Update von pretix und Anschließend Migration auf eine neue Instanz wurde hinzugefügt
Aktionen #2

Von PaulRiegel vor 4 Monaten aktualisiert

  • Zugewiesen an wurde von Bereich Administration Rechentechnik zu GoeranHeinemann geändert
Aktionen #3

Von PaulRiegel vor 4 Monaten aktualisiert

  • Status wurde von Neu zu Gesichtet geändert
  • Priorität wurde von Normal zu Hoch geändert
Aktionen #4

Von PaulRiegel vor 3 Monaten aktualisiert · Edited

version 2024.2.0 beim laufenden debian stable (12)
version 2024.8.0 beim aktualisierbaren debian stable (12)

version 2024.4.0 bei nixos release (24.05)
version 2024.8.0 bei nixos unstable


Option services.pretix.package für die Festlegung einer initialen Version verwenden?

Aktionen #5

Von GoeranHeinemann vor 3 Monaten aktualisiert · Edited

zuerst einfach alle daten der alten instanz sichern

systemctl stop pretix-web.service pretix-worker.service
cd $(mktemp -d)
su postgres -
pg_dump pretix > pretixdump
exit
cp -r /var/pretix/data .
cd ..
tar -czvf pretix.tar.gz tmp...

die tar datei muss dann mit scp oder so auf den neuen container kopiert werden und und dort wieder entpackt werden

systemctl stop pretix-web.service pretix-worker.service
tar -xvf prefix.tar.gz
cp -r pretix/data/media /var/lib/pretix/media
chown pretix:pretix /var/lib/pretix -R
cat pretixdump | psql pretix
pretix-manage migrate
systemctl start pretix-web.service pretix-worker.service

Aktionen #6

Von GoeranHeinemann vor 3 Monaten aktualisiert · Edited

Di Config für den NixOS contaienr schaut bisher so hier aus:

{ config, pkgs, lib, ... }:

{

  imports = [

    <nixpkgs/nixos/modules/virtualisation/proxmox-lxc.nix>

  ];

############################
####    NixOS
############################

  system.stateVersion = "24.05";

  system.autoUpgrade.enable = true;
  system.autoUpgrade.allowReboot = true;
  nix.settings.auto-optimise-store = true;
  nix.optimise.automatic = true;
  nix.gc.automatic = true;
  nix.gc.options = "--delete-older-than 5d";

  # environment.noXlibs = true;
  # services.xserver.enable = false;

  services.openssh.enable = false;

  networking = {
    enableIPv6 = false;
    hostName = "pretix";
    domain = "stura.htw-dresden.de";
    defaultGateway.address = "10.1.0.1";
    defaultGateway.interface = "eth0";
  interfaces.eth0.ipv4.addresses = [
    {
      address = "10.1.0.4";
      prefixLength = 24;
    }
];
    firewall.allowedTCPPorts = [ 80 443 ];
  };

  environment.systemPackages = with pkgs; [ vim ];

  proxmoxLXC.manageHostName = true;

  services = {
    pretix = {
      enable = true;
        settings = {
          pretix = rec {
            # instance_name = "tix.htw.stura-dresden.de";
            # url = "https://${instance_name}/";
            instance_name = "10.1.0.4";
            url = "http://10.1.0.4/";
          };
          mail = {
           from = "pretix@stura.htw-dresden.de";
           host = "mail.stura.htw-dresden.de";
          };
        };
        nginx = {
          enable = true;
          domain = "tix.htw.stura-dresden.de";
        };
        database.createLocally = true;
    };
  };
}

Aktionen #7

Von GoeranHeinemann vor 3 Monaten aktualisiert

  • % erledigt wurde von 0 zu 50 geändert
Aktionen #8

Von MathisBluemel vor 3 Monaten aktualisiert · Edited

Kleines Feedback zu Görans Anleitung:
nach erstellen des temporären Verzeichnisses ist es nicht möglich das Datenbank Backup zu machen, da der User postgres kein Zugriff auf dieses hat.
Außerdem schlägt das Importieren des DB-Dumps fehl da eine Datenbank mit Tabellen schon existiert. Diese muss gelöscht und durch eine leere DB mit dem Namen pretix ersetzt werden. Dann funktioniert es.

Wir konnten mit der Anleitung Pretix erfolgreich migrieren. (CT201 - Testserver https://pretix.htw.stura-dresden.de)
Dazu haben wir die Nix konfiguration um ACME ergänzt und Hostnamen und IP Adressen angepasst.
Dann sind wir wie folgt vorgegangen:https://pretix.htw.stura-dresden.de/
1. Pretix auf der alten Instanz angehalten
2. Postgres Datenbank gesichert (als Nutzer Postgres: pg_dump pretix > pretixdump)
3. /var/pretix/data/media Ordner gesichert
4. Beides in ein tar-Archiv gepackt
5. OpenSSH Server installiert, aktiviert und Rootlogin mit Passwort angeschaltet
-- Folgendes auf der neuen Instanz---
6. Den Ordner auf die neue Instanz mittels scp übertragen
7. Pretix angehalten
8. Die pretix Datenbank gelöscht und eine leere Datenbank mit namen pretix erstellt
9. Die Sicherung der Datenbank mittels cat pretixdump | psql pretix eingespielt
10. den media Ordner nach /var/lib/pretix/media kopiert
11. pretix-manage migrate ausgeführt
12. Pretix gestartet

Hier die configuration.nix:

{ config, pkgs, lib, ... }:

{

  imports = [

    <nixpkgs/nixos/modules/virtualisation/proxmox-lxc.nix>

  ];

############################
####    NixOS
############################

  system.stateVersion = "24.05";

  system.autoUpgrade.enable = true;
  system.autoUpgrade.allowReboot = true;
  nix.settings.auto-optimise-store = true;
  nix.optimise.automatic = true;
  nix.gc.automatic = true;
  nix.gc.options = "--delete-older-than 5d";
  # environment.noXlibs = true;
  # services.xserver.enable = false;

  services.openssh.enable = false;

  networking = {
    enableIPv6 = false;
    hostName = "pretix";
    domain = "htw.stura-dresden.de";
    defaultGateway.address = "141.56.51.254";
    defaultGateway.interface = "eth0";
  interfaces.eth0.ipv4.addresses = [
    {
      address = "141.56.51.219";
      prefixLength = 24;
    }
];
    firewall.allowedTCPPorts = [ 80 443 ];
  };

  environment.systemPackages = with pkgs; [ vim ];

  proxmoxLXC.manageHostName = true;
  security.acme.defaults.email = "cert@stura.htw-dresden.de";
  security.acme.acceptTerms = true;

  services = {
    nginx = {
      enable = true;
      virtualHosts."${config.networking.fqdn}" = {
        forceSSL = true;
        enableACME = true;
      };
    };
    pretix = {
      enable = true;
        settings = {
          pretix = rec {
            # instance_name = "tix.htw.stura-dresden.de";
            # url = "https://${instance_name}/";
            instance_name = "pretix.htw.stura-dresden.de";
            url = "https://pretix.htw.stura-dresden.de/";
          };
          mail = {
           from = "pretix@stura.htw-dresden.de";
           host = "mail.stura.htw-dresden.de";
          };
        };
        nginx = {
          enable = true;
          domain = "pretix.htw.stura-dresden.de";

        };
        database.createLocally = true;
    };
  };
}

Aktionen #9

Von MathisBluemel vor 3 Monaten aktualisiert · Edited

Geupdatete Anleitung

systemctl stop pretix-web.service pretix-worker.service
su postgres
cd $(mktemp -d)
pg_dump pretix > pretixdump
exit
cd /temp/tmp...
cp -r /var/pretix/data/media .
cd ..
tar -czvf pretix.tar.gz tmp...

die tar datei muss dann mit scp oder so auf den neuen container kopiert werden und und dort wieder entpackt werden

systemctl stop pretix-web.service pretix-worker.service
tar -xvf pretix.tar.gz
cp -r pretix/data/media /var/lib/pretix/media
chown pretix:pretix /var/lib/pretix -R
mv /var/lib/postgresql /var/lib/postgresql_backup
su postgres
cat pretixdump | psql pretix
pretix-manage migrate
systemctl start pretix-web.service pretix-worker.service

Aktionen #10

Von PaulRiegel vor 3 Monaten aktualisiert

  • Status wurde von Gesichtet zu In Bearbeitung geändert
  • Zugewiesen an wurde von GoeranHeinemann zu MathisBluemel geändert
  • % erledigt wurde von 50 zu 70 geändert
Aktionen

Auch abrufbar als: Atom PDF