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_URL
aus- bzw. einkommentieren. Der Servicedatabase
kann dann entfernt werden. EMAIL_SENDER_EMAIL
undEMAIL_SENDER_NAME
sind die E-Mail-Adresse und der Name, der schlussendlich im E-Mail-Programm angezeigt wird.- In
MAILER_DSN
muss der SMTP-Host und SMTP-Port an eure eigenen Gegebenheiten angepasst werden INSTANCE_NAME
ist 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.