Docker ist die richtige Antwort für die Evaluation. In der Produktion betreiben die meisten Labore SENAITE direkt auf einem Linux-Server. Die Gründe: Backup-Verfahren, vorhersehbare Leistung, einfache Integration mit Geräteschnittstellen im selben Netz und die operative Vertrautheit eines normalen Linux-Dienstes.
Diese Anleitung führt durch einen frischen Ubuntu 24.04 LTS Server und endet mit einem SENAITE-Prozess unter systemd, vorgeschaltet nginx, mit dem ZODB auf einer Festplatte, die Sie snapshotten können. Es ist nicht der einzig richtige Weg, SENAITE zu installieren. Es ist der Weg, wie wir es ausrollen.
Was Sie brauchen
- Einen Server mit Ubuntu 24.04 LTS, 4 GB RAM Minimum, 8 GB empfohlen.
- Root-SSH-Zugang.
- Einen DNS-Namen, der auf den Server zeigt, wenn Sie HTTPS wollen (das wollen Sie).
- 30 bis 45 Minuten.
Basissystem aktualisieren
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl
Python und Build-Abhängigkeiten installieren
SENAITE 2.x läuft auf Python 3.10+. Ubuntu 24.04 liefert Python 3.12, das funktioniert.
sudo apt install -y \
python3 python3-venv python3-dev \
libxml2-dev libxslt1-dev libjpeg-dev zlib1g-dev \
libssl-dev libffi-dev \
libopenjp2-7-dev libtiff-dev libfreetype6-dev \
libpq-dev
Die Bildbibliotheken werden für die PDF-Berichtserzeugung benötigt. Der PostgreSQL-Client-Header ist optional, aber harmlos.
Dedizierten Systembenutzer anlegen
Alles als root laufen zu lassen, was nicht muss, ist schlechte Praxis.
sudo adduser --system --group --home /opt/senaite senaite
sudo -u senaite -H mkdir -p /opt/senaite/instance
Buildout klonen und bootstrappen
SENAITE wird per zc.buildout ausgerollt. Der kanonische
Einstiegspunkt ist das Repo senaite/senaite.docker, das dieselbe
Buildout-Konfiguration mitbringt, die auch das Docker-Image
verwendet.
sudo -u senaite -H bash -c '
cd /opt/senaite/instance
git clone https://github.com/senaite/senaite.docker.git .
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
buildout
'
Der Buildout-Schritt zieht SENAITE und seine Abhängigkeiten,
kompiliert Erweiterungen und erzeugt eine bin/instance-
Ausführungsdatei. Auf einem frischen Server dauert das beim ersten
Mal zehn bis zwanzig Minuten. Kaffeepause.
Plone-Admin-Benutzer anlegen
sudo -u senaite -H /opt/senaite/instance/bin/instance \
adduser admin <a-strong-password>
Das schreibt einen Admin-Eintrag in
/opt/senaite/instance/var/inituser, den Plone beim ersten Start
liest. Wählen Sie ein starkes Passwort und speichern Sie es in
dem Passwortmanager, in dem Sie es später tatsächlich
wiederfinden.
Einmal im Vordergrund laufen lassen
sudo -u senaite -H /opt/senaite/instance/bin/instance fg
Sie sehen das Startup-Logging von Zope und Plone, das in etwas wie
INFO Zope Ready to handle requests endet. Ctrl+C beendet.
Wenn Sie davor einen Fehler gesehen haben, ist die häufigste Ursache eine fehlende Systembibliothek aus dem apt-Schritt oben. Lesen Sie die Spur, installieren Sie die Lib, lassen Sie es erneut laufen.
Unter systemd stellen
Legen Sie /etc/systemd/system/senaite.service an:
[Unit]
Description=SENAITE LIMS Zope instance
After=network.target
[Service]
Type=simple
User=senaite
Group=senaite
WorkingDirectory=/opt/senaite/instance
ExecStart=/opt/senaite/instance/bin/instance fg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Neu laden, aktivieren, starten und prüfen:
sudo systemctl daemon-reload
sudo systemctl enable senaite
sudo systemctl start senaite
sudo systemctl status senaite
status sollte active (running) zeigen und SENAITE sollte auf
Port 8080 lauschen.
Mit nginx und HTTPS davor
nginx und certbot installieren:
sudo apt install -y nginx certbot python3-certbot-nginx
/etc/nginx/sites-available/senaite ablegen:
server {
server_name senaite.your-lab.example;
location / {
proxy_pass http://127.0.0.1:8080/VirtualHostBase/https/$host:443/senaite/VirtualHostRoot/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_read_timeout 300s;
client_max_body_size 50M;
}
listen 80;
}
Der VirtualHostBase/.../VirtualHostRoot-Block ist der Virtual-
Hosting-Trick von Zope: er schreibt erzeugte URLs so um, dass
Besucher saubere Pfade ohne /senaite/ sehen.
Aktivieren und ein Zertifikat besorgen:
sudo ln -s /etc/nginx/sites-available/senaite \
/etc/nginx/sites-enabled/senaite
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d senaite.your-lab.example
Certbot liest die nginx-Konfiguration, beantragt ein Let’s Encrypt-Zertifikat und schreibt den Serverblock so um, dass er auf 443 mit HSTS lauscht.
Erste Anmeldung
Öffnen Sie https://senaite.your-lab.example und melden Sie sich
als der Admin-Benutzer an, den Sie oben angelegt haben.
Navigieren Sie zur SENAITE-Site unter /senaite. Von hier können
Sie das Demo-Profil installieren (siehe
SENAITE mit Demodaten ausstatten)
oder echte Kunden, Probentypen und Analyseleistungen
konfigurieren.
Was als Nächstes kommt
Ein laufendes SENAITE unter systemd hinter nginx ist der Anfang. Für die Produktion brauchen Sie noch:
- Backups. ZODB-Packs und Offsite-Snapshots. SENAITE Care Essential deckt das ab EUR 300 pro Monat ab.
- Monitoring. Datenbankkonsistenz, Antwortzeiten, Ausführung geplanter Tasks. Siehe Warum Ihr SENAITE LIMS proaktives Monitoring braucht.
- Sicherheitsupdates. OS und SENAITE selbst.
- Geräteanbindung. Ihre Analysegeräte, Ihre Protokolle.
- Konfiguration des tatsächlichen Workflows.
All das machen wir hauptberuflich unter SENAITE Care und Individualentwicklung. Wenn das Installieren des Servers der einfache Teil war und der Rest nach Arbeit aussieht, sprechen Sie mit uns.