Part-DB ist eine Open-Source-Software zur Lagerbestandsverwaltung von Platinen- und Elektronikbauteilen. Die Software bietet eine Bauteilsuche, Verwaltung von Lagerbeständen und Lagerorten sowie die Erstellung von Stücklisten (BOMs). Weiterhin ermöglicht sie eine Anbindung an Distributoren, um Echtzeitinformationen zu Preisen und Verfügbarkeiten abzurufen. Part-DB ist eine mehrsprachige Webanwendung und enthält eine integrierte Benutzerverwaltung mit Gruppen und einer optionalen SAML-Anbindung.
| Datum | Änderungen |
|---|---|
| 22.02.2025 | Anleitung erstellt |
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
- Optional WATCHTOWER
2. Verzeichnis erstellen
Dazu gebt ihr folgenden Befehl ein:
mkdir -p /opt/containers/partdb/data/{uploads,public_media,sqlite,database}
3. Docker Compose erstellen
Nun erstellen wir uns eine neue Docker Compose Datei.
nano /opt/containers/partdb/docker-compose.yml
Kopiert nun folgenden Inhalt:
services:
partdb:
image: jbtronics/part-db1:latest
restart: unless-stopped
hostname: ${PARTDB_HOST}
env_file:
- .env
networks:
- backend
- proxy
depends_on:
- database
volumes:
- ./data/uploads:/var/www/html/uploads
- ./data/public_media:/var/www/html/public/media
- ./data/sqlite:/var/www/html/var/db
environment:
#DATABASE_URL: sqlite:///%kernel.project_dir%/var/db/app.db
DATABASE_URL: mysql://partdb:${PARTDB_DATABASE_PASSWORD}@database:3306/partdb
APP_ENV: docker
DEFAULT_LANG: de
DEFAULT_TIMEZONE: Europe/Berlin
BASE_CURRENCY: EUR
INSTANCE_NAME: Part-DB
ALLOW_ATTACHMENT_DOWNLOADS: 0
MAX_ATTACHMENT_FILE_SIZE: 100M
USE_GRAVATAR: 0
DEFAULT_URI: https://${PARTDB_HOST}/
# Mail settings
MAILER_DSN: smtp://${PARTDB_SMTP_USER}:${PARTDB_SMTP_PASSWORD}@mail.example.com:465
EMAIL_SENDER_EMAIL: partdb@example.com
EMAIL_SENDER_NAME: Part-DB
ALLOW_EMAIL_PW_RESET: 1
labels:
com.centurylinklabs.watchtower.enable: true
traefik.enable: true
traefik.http.routers.partdb.entrypoints: websecure
traefik.http.routers.partdb.rule: Host(`${PARTDB_HOST}`)
traefik.http.routers.partdb.tls: true
traefik.http.routers.partdb.tls.certresolver: http_resolver
traefik.http.routers.partdb.service: partdb
traefik.http.services.partdb.loadbalancer.server.port: 80
traefik.docker.network: proxy
database:
image: mariadb:11
restart: unless-stopped
env_file:
- .env
networks:
- backend
volumes:
- ./data/database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: $PARTDB_DATABASE_ROOT_PASSWORD
MYSQL_DATABASE: partdb
MYSQL_USER: partdb
MYSQL_PASSWORD: $PARTDB_DATABASE_PASSWORD
networks:
backend:
internal: true
proxy:
external: true
Noch anzupassen
- Wer lieber eine SQLite-Datenbank nutzen will, kann die Environment Variable
DATABASE_URLaus- bzw. einkommentieren. Der Servicedatabasekann dann entfernt werden. EMAIL_SENDER_EMAILundEMAIL_SENDER_NAMEsind die E-Mail-Adresse und der Name, der schlussendlich im E-Mail-Programm angezeigt wird.- In
MAILER_DSNmuss der SMTP-Host und SMTP-Port an eure eigenen Gegebenheiten angepasst werden INSTANCE_NAMEist der Name, der im Browser-Tab und in der Anwendung selbst angezeigt wird.
4. Dotenv-Datei anlegen
Um die Konfiguration zu vervollständigen, erstellen wir die .env-Datei
nano /opt/containers/partdb/.env
PARTDB_HOST=partdb.example.com PARTDB_SMTP_USER=partdb%40example.com PARTDB_SMTP_PASSWORD=secret PARTDB_DATABASE_PASSWORD=secret PARTDB_DATABASE_ROOT_PASSWORD=topsecret
Noch anzupassen
- Ändert den Host an eure eigene Domain.
- Bei dem SMTP-User und Passwort ist es wichtig, dass die Sonderzeichen wie das @-Zeichen DSN-konform kodiert ist.
- Ändert UNBEDINGT die Passwörter
5. Container starten und Datenbank initialisieren
Startet den Docker-Container mit
docker compose -f /opt/containers/partdb/docker-compose.yml up -d
und initialisiert die Datenbank:
docker compose -f /opt/containers/partdb/docker-compose.yml exec --user=www-data partdb php bin/console doctrine:migrations:migrate
Bestätigt, dass die Datenbank mit Enter überschrieben werden soll. Das Ergebnis sollte so ähnlich aussehen.

Dabei wird das initiale Admin-Passwort angezeigt.
6. Erster Login
Der Teil in der Kommandozeile ist jetzt erledigt. Jetzt könnt ihr die in PARTDB_HOST definierte Domain aufrufen.

Oben rechts könnt ihr euch anschließend mit dem Benutzer admin und dem Passwort, was bei der Initialisierung angezeigt wurde, anmelden. Ihr werdet dann zur Profilseite weitergeleitet, wo man eine E-Mail-Adresse angeben kann, das Passwort ändern kann und, wenn gewünscht, eine Zwei-Faktor-Authentifizierung hinzufügen kann.
