Server mit Docker Compose installieren
Diese Anleitung beschreibt den empfohlenen Serverbetrieb mit fertigen Registry-Images. Der Dienst ist für ein vertrauenswürdiges LAN und einen vorgeschalteten HTTPS-Reverse-Proxy gedacht.
Zielbild
Der Stack besteht aus:
web: Django und Gunicorn,worker: Hintergrundjobs mit FreeCADCmd,db: PostgreSQL,storage/: Revisionen, Projektstände, Artefakte und Fertigungsdateien,staticfiles/: neu erzeugbare statische Webdateien.
Web und Worker verwenden getrennte Images, müssen aber immer aus demselben Commit stammen. Der Worker enthält FreeCAD 1.1.1.
Voraussetzungen
- Linux-Server mit Docker Engine und Docker Compose Plugin,
- Zugriff auf Git-Server und Image-Registry,
- DNS-Name und empfohlen ein HTTPS-Reverse-Proxy,
- ausreichend Speicher für unveränderliche Revisionen und große Worker- Images,
- Installationsverzeichnis, im Beispiel
/opt/freecad-plm.
Vor der Installation:
docker version
docker compose version
df -h /opt
Repository holen
git clone ssh://forgejo@home.schumbi.de/ralf/freecad-plm.git /opt/freecad-plm
cd /opt/freecad-plm
cp .env.example .env
Alternativ kann das Repository per HTTPS gelesen werden. Die Compose-Datei und
.env.example gehören zur gewählten Anwendungsversion und sollten nicht aus
unterschiedlichen Commits gemischt werden.
Image-Version wählen
Nach einem erfolgreichen Forgejo-Build die vollständige Commit-SHA verwenden:
PLM_WEB_IMAGE=git.home.schumbi.de/ralf/freecad-plm-web:<vollständige-commit-sha>
PLM_WORKER_IMAGE=git.home.schumbi.de/ralf/freecad-plm-worker:<vollständige-commit-sha>
latest kann für einen ersten Test praktisch sein, ist aber kein
nachvollziehbarer Produktionsstand.
.env konfigurieren
Mindestens:
DJANGO_SECRET_KEY=replace-with-a-long-random-secret
DJANGO_ALLOWED_HOSTS=plm.example.local,localhost,127.0.0.1
DJANGO_CSRF_TRUSTED_ORIGINS=https://plm.example.local
DJANGO_SECURE_SSL_REDIRECT=0
DJANGO_SECURE_HSTS_SECONDS=0
DJANGO_SESSION_COOKIE_SECURE=1
DJANGO_CSRF_COOKIE_SECURE=1
POSTGRES_PASSWORD=replace-with-a-strong-database-password
PLM_HTTP_PORT=8000
PLM_WEB_IMAGE=git.home.schumbi.de/ralf/freecad-plm-web:<commit-sha>
PLM_WORKER_IMAGE=git.home.schumbi.de/ralf/freecad-plm-worker:<commit-sha>
PLM_USER=plm
PLM_UID=1000
PLM_GID=1000
FREECADCMD_COMMAND=freecadcmd
Wichtig:
DJANGO_ALLOWED_HOSTSenthält die Namen, unter denen der Server aufgerufen wird.DJANGO_CSRF_TRUSTED_ORIGINSenthält vollständige HTTPS-Origins.PLM_USER=plmpasst zum Runtime-User der Images..enventhält Geheimnisse und gehört weder ins Git noch ins Wiki.
Upload- und ZIP-Limits stehen vollständig in .env.example. Passe sie nur
bewusst an Reverse-Proxy-Limit, freien Plattenplatz und erwartete CAD-Größen
an.
Die optionale Bambuddy-Konfiguration wird separat unter Bambuddy anbinden erklärt.
Verzeichnisse anlegen
mkdir -p storage staticfiles
sudo chown -R 1000:1000 storage staticfiles
storage/ und PostgreSQL sind die gemeinsam zu sichernden Nutzdaten.
staticfiles/ kann der Webcontainer neu erzeugen.
Compose-Konfiguration prüfen
docker compose -f docker-compose.image.yml config --quiet
Bei einem Fehler zuerst Pflichtvariablen in .env korrigieren. Nicht mit
leeren Ersatzwerten produktiv starten.
Start
docker compose -f docker-compose.image.yml pull
docker compose -f docker-compose.image.yml up -d
Der Webcontainer führt Migrationen und collectstatic aus. Der Worker wartet
auf den gesunden Webdienst, damit er nicht gegen eine noch unmigrierte
Datenbank startet.
Ersten Administrator einrichten
docker compose -f docker-compose.image.yml exec web \
python manage.py setup_plm_roles
docker compose -f docker-compose.image.yml exec web \
python manage.py createsuperuser
Danach unter /login/ anmelden. Benutzer, Rollen und Tokens werden unter
Erster Start und Verwaltung erklärt.
Reverse Proxy
Der Proxy muss mindestens weitergeben:
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
Uploadgröße passend konfigurieren, zum Beispiel:
client_max_body_size 512m;
Nach Änderungen an .env Web und Worker neu erstellen:
docker compose -f docker-compose.image.yml up -d --force-recreate web worker
Installation verifizieren
docker compose -f docker-compose.image.yml ps
docker compose -f docker-compose.image.yml exec web python manage.py check
docker compose -f docker-compose.image.yml exec worker freecadcmd --version
docker compose -f docker-compose.image.yml logs --tail=100 web worker
Erwartet:
- Datenbank und Web sind
healthy. - Worker läuft.
- Migrationen enden ohne Fehler.
- FreeCAD-Ausgabe beginnt mit
FreeCAD 1.1.1. - HTTPS-URL zeigt die PLM-Anmeldung.
Weiterführende Betriebsseiten
FreeCAD-PLM
Installation
Verwendung
- Aufgabenübersicht
- Projekt anlegen
- Teil oder Baugruppe anlegen
- Projektordner importieren
- Stammdaten bearbeiten
- Revision ansehen
- Revision auschecken
- Einchecken oder abbrechen
- Datei hinzufügen
- Datei entfernen
- Parameterdatei verwenden
- Projektstand wiederherstellen
- Neue Revision hochladen
- PLM-Link öffnen
- Slicerprojekt bearbeiten
- Druckprojekt erstellen
- Bambuddy-Druckarchiv
- Revision freigeben
- Anmerkung erstellen
- Suchen und vergleichen
- Exporte und Vorschauen
- Fertigungsdatei hochladen
- Benutzer und Tokens
Referenz
- Web-UI
- FreeCAD-Addon Handbuch
- Projektstände und Import
- Revisionen, Exporte und Vergleich
- Fertigung und 3MF-Dateien