StuRa:Server/Eintrittsverwaltung: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
Zeile 281: | Zeile 281: | ||
== Migration von Pretix == | == Migration von Pretix == | ||
'''''(Achtung: Dieser Abschnitt setzt die Fähigkeit voraus mit PVE zu arbeiten)''''' | |||
Dieser Guide ist gedacht, sobald Pretix auf eine neue Instanz überführt werden muss. Zum Beispiel wenn pretix endlich als Paket bei nix zur Verfügung steht und wir von unserer Debian Instanz auf NixOS wechseln (leider ist dies noch nicht passiert (Stand 30.01.24)). | Dieser Guide ist gedacht, sobald Pretix auf eine neue Instanz überführt werden muss. Zum Beispiel wenn pretix endlich als Paket bei nix zur Verfügung steht und wir von unserer Debian Instanz auf NixOS wechseln (leider ist dies noch nicht passiert (Stand 30.01.24)). | ||
Bei der Migration sind die Daten in <code>/var/pretix/data/</code> als auch die Datenbank wichtig . | Bei der Migration sind die Daten in <code>/var/pretix/data/</code> als auch die Datenbank wichtig<ref>[https://docs.pretix.eu/en/latest/admin/maintainance.html#backups ''Welche Daten sollen gebackuped werden''] Dokumentation von Pretix. Abgerufen am 30. Januar 2024.</ref>. | ||
=== Voraussetzung === | |||
Es ist wichtig eine neu Aufgesetzte pretix Instanz mit gleicher Pretix Version und PostgreSQL-Version zu haben. Beim testen waren die Domains beider Instanzen unterschiedlich. Man kann bevor die neue Instanz erstellt wird den reverse proxy bei der alten Instanz auschalten. Dann die neue Instanz aufsetzen und mit diesem Guide arbeiten. Dann muss im nachhienein die Konfiguration von nginx nicht verändert werden. Das spart Arbeitsaufwand. | |||
=== Migration === | |||
Zuerst soll in beiden Instanzen nginx gestoppt werden, damit die Daten nicht durch das Nutzen der Webseite verändert werden kann. | |||
<code>systemctl stop nginx</code> | |||
Als erstes wird auf der alten Instanz ein Datenbankdump erstellt. Dazu erst Container betreten und nachfolgenden Kommando durchführen. | |||
<code>sudo -u postgres pg_dump pretix > pretix_dump290124.sql</code> | |||
Jetzt werden in einer Shell im PVE die relevanten Daten vom alten Container in den neuen Container kopiert. Dazu wird zuerst die beiden Dateisysteme der jeweiligen Container gemounted. | |||
<code>pct mount <VMID></code> | |||
= Einzelnachweise = | = Einzelnachweise = | ||
<references /> | <references /> |
Version vom 30. Januar 2024, 15:10 Uhr
Pretix
In diesem Abschnitt werden folgende Punkte behandelt. Die Voraussetzungen um Pretix auf einer Debian (12) Instanz im PVE zu installieren [1]. Die Installation von Pretix mit Hinweisen. Die Migration von Pretix auf eine neue Instanz.
Voraussetzungen
Container mit Installiertem Debian 12
Leider fehlt eine ordentliche Beschreibung, auf die ich verweisen kann, wie ein Container zu erstellen ist.
Nachdem der Container erstellt wurde und Debian installiert ist muss erstmal geupdatet werden.
apt update -y && apt upgrade -y
Dannach werden die Sprachspezifische environment variablen angepasst. Das ist wichtig damit der PostgreSQL-Server beim späteren installieren das richtige Server-Encoding hat.
dpkg-reconfigure locales
Es öffnet sich ein TUI. Mit der Leertaste können die Optionen ausgewählt werden. Mit Tab kann auf OK oder CANCLE gewechselt werden.
Auswählen von [ ] en_US.UTF-8 UTF-8
und dann bestätigen.
Ein neues Fenster erscheint und C.UTF-8
auswählen.
sudo und neovim
In der Installation von Pretix wird häufiger sudo
genutzt und neovim
ist ein toller Editor (hier kann aber auch der Editor eurer Wahl installiert werden).
apt install neovim sudo -y
Python 3.9+
Auf Debian 12 ist Standardmäßig python 3.11
installiert
SMTP Server
Der StuRa betreibt einen eigenen SMTP Server, also check hier ist alles erledigt.
nginx und certbot
Installation
nginx ist als reverse Proxy nötig und certbot für die HTTPS Verbindungen.
apt install nginx python3-certbot-nginx -y
Konfiguration
Als erstes soll die zukünftige Domain bei INWX eingetragen werden. In diesem Beispiel test.pretix.htw.stura-dresden.de
.
Anschließend wird nginx konfiguriert mit neovim /etc/nginx/sites-enabled/default
####pvb #server_name _; server_name test.pretix.htw.stura-dresden.de; ####pve
systemctl restart nginx
certbot
Jetzt müssen diverse Inputz eingegeben werden. Als Mail wird cert@stura.htw-dresden.de
genutzt. Dann den TOS zustimmen. Den EEF-Newsletter nicht abonieren. Und alle Domains für die https-Verbindung auswählen (Default (Enter drücken)).
Wenn die Instanz produktiv für eine längere Zeit genutzt werden soll braucht es jetzt noch ein Autorenewal des Zertifikates. Dazu wird ein cronjob erstellt.
crontab -e
Jetzt wurde ein Editor geöffnet und die nachfolgende Zeile muss eingetragen werden. Damit wird immer zum 1. in jedem Monat das Zertifikat erneuert, sobald es möglich ist.
0 0 1 * * /usr/bin/certbot renew --quiet
PostgreSQL 12+
Als erstes wir PostgreSQL installiert.
apt install postgresql postgresql-contrib -y
Mit nachfolgendem Kommando können wir sehen ob es funktioniert.
sudo -u postgres psql
Wenn jetzt \l
eingegeben wird sollten wir die aktuellen Datenbanken sehen.
redis
Installation von redis: apt install redis -y
Ob der Server läuft kann mit systemctl getestet werden. systemctl status redis
nodejs
Installation von nodejs: apt install nodejs -y
Die Version und das es funktioniert kann node --version
ausgeführt werden.
Installation und Konfiguration
Beim Installieren und Konfigurieren, halten wir uns maßgeblich an die Installationsdokumentation von Pretix (Aufgerufen am 30.01.2024). Deshalb beschreibe ich nur unsere Abweichungen.
Pretix Konfigurationsdatei
Die Konfigurationsdatei wird folgendermaßen erstellt.
nvim /etc/pretix/pretix.cfg
####pvb [pretix] instance_name=Tix StuRa HTW Dresden url=https://test.tix.htw.stura-dresden.de currency=EUR datadir=/var/pretix/data trust_x_forwarded_for=on trust_x_forwarded_proto=on [database] backend=postgresql name=pretix user=pretix password= host= [mail] from=tix@stura.htw-dresden.de host=mail.stura.htw-dresden.de port=25 admins=admin@stura.htw-dresden.de [redis] location=redis://127.0.0.1/0 sessions=true [celery] backend=redis://127.0.0.1/1 broker=redis://127.0.0.1/2 ####pve
nginx proxy für Pretix
Als nächstes wird die Konfiguration des nginx proxy angepasst mit nvim /etc/nginx/sites-enabled/default
# Default server configuration # server { # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; ####pvb #server_name _; server_name test.tix.htw.stura-dresden.de; #location / { # # First attempt to serve request as file, then # # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; #} ####pve # pass PHP scripts to FastCGI server # #location ~ \.php$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/run/php/php7.4-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/test.tix.htw.stura-dresden.de/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/test.tix.htw.stura-dresden.de/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot ####pvb add_header Referrer-Policy same-origin; add_header X-Content-Type-Options nosniff; location / { proxy_pass http://localhost:8345; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; } location /media/ { alias /var/pretix/data/media/; expires 7d; access_log off; } location ^~ /media/cachedfiles { deny all; return 404; } location ^~ /media/invoices { deny all; return 404; } location /static/ { alias /var/pretix/venv/lib/python3.11/site-packages/pretix/static.dist/; access_log off; expires 365d; add_header Cache-Control "public"; } ####pvb } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # } #} server { if ($host = test.tix.htw.stura-dresden.de) { return 301 https://$host$request_uri; } # managed by Certbot listen 80 default_server; listen [::]:80 default_server; server_name test.tix.htw.stura-dresden.de; return 404; # managed by Certbot }
Anschließend nginx neu starten mit systemctl restart nginx
. Damit sollte nun die Weboberfläche von nginx mit der passenden URL erreichbar sein.
Login und Passwort ändern
Jetzt kann man sich einloggen als admin@localhost
mit admin
. Jetzt ist es wichtig die Logindetails anzupassen.
Migration von Pretix
(Achtung: Dieser Abschnitt setzt die Fähigkeit voraus mit PVE zu arbeiten)
Dieser Guide ist gedacht, sobald Pretix auf eine neue Instanz überführt werden muss. Zum Beispiel wenn pretix endlich als Paket bei nix zur Verfügung steht und wir von unserer Debian Instanz auf NixOS wechseln (leider ist dies noch nicht passiert (Stand 30.01.24)).
Bei der Migration sind die Daten in /var/pretix/data/
als auch die Datenbank wichtig[2].
Voraussetzung
Es ist wichtig eine neu Aufgesetzte pretix Instanz mit gleicher Pretix Version und PostgreSQL-Version zu haben. Beim testen waren die Domains beider Instanzen unterschiedlich. Man kann bevor die neue Instanz erstellt wird den reverse proxy bei der alten Instanz auschalten. Dann die neue Instanz aufsetzen und mit diesem Guide arbeiten. Dann muss im nachhienein die Konfiguration von nginx nicht verändert werden. Das spart Arbeitsaufwand.
Migration
Zuerst soll in beiden Instanzen nginx gestoppt werden, damit die Daten nicht durch das Nutzen der Webseite verändert werden kann.
systemctl stop nginx
Als erstes wird auf der alten Instanz ein Datenbankdump erstellt. Dazu erst Container betreten und nachfolgenden Kommando durchführen.
sudo -u postgres pg_dump pretix > pretix_dump290124.sql
Jetzt werden in einer Shell im PVE die relevanten Daten vom alten Container in den neuen Container kopiert. Dazu wird zuerst die beiden Dateisysteme der jeweiligen Container gemounted.
pct mount <VMID>
Einzelnachweise
- ↑ Voraussetzungen Pretix Installation Dokumentation von Pretix. Abgerufen am 30. Januar 2024.
- ↑ Welche Daten sollen gebackuped werden Dokumentation von Pretix. Abgerufen am 30. Januar 2024.