Installation

Installtion via LXC Template in Proxmox

Beschreibung:

Parts-DB ist ein Lagerverwaltung für Elektronik.
Vorteil Artikel können von Stores Importiert werden. So hat man gleich die Richtige Bezeichnung und muss nicht alle Artikel selbst anlegen. Wer sich das ganze erst anschauen will, die haben ne Demo : https://demo.part-db.de/de/

Hinweis: Da ich das System zur Erstellungzeit welsbt noch teste, erhoff ich mir auch für andere Produkte die nicht unbeding Eletro sind, auch shops zum  Importieren finde. Zum Beispiel Stempel oder Schreren oder oder. SO das ich da auch keine Artikel mehr anlegen muss. Ich werde berichtet. Denn das ist mein Ziel mit Part-DB

Installation:

Wir nutzen hier das Temmplate als LCX Container,
vielleicht mach ich irgendwann noch ein Docker nur das ist schnellste variante.

Dazu aufm Proxmox Server in die Shell gehen. In einem weiteren Tab die Community Helper Seite mit Part-DB öffnen

https://community-scripts.github.io/ProxmoxVE/scripts?id=part-db

Dort auf die Gitea Repo gehen und den link kopieren

image.png

Diesen dann in der Shell einfügen.

bash -c "$(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/part-db.sh)"

image.png

Advanced auswählen

image.png

Hinweis zum selektieren die Space Taste benutzen mit Enter für OK bestätigen

image.png

Unprevileged so lassen

image.png

root Passwort vergeben

image.png

image.png

Container ID, es wird immer die nächste freie vorgeschlagen, deswegen lass ich das so.
Könnt aber auch eine andere wählen, wichtig das frei ist.

image.png

Den Hostnamen setzten, ich lasse es auch bei standard, denn ist ja ne part-db.

image.png

Die Sik size wird Standard mit 8 GB angeben, ich mach hier 32 GB, ihr könnt auch größer wählen, um so mehr Artikelbilder desto mehr Platz ;-)

image.png

CPU Standard mäßig 2 ich nehme 4, voraus gesetzt ihr habt so viele CPUs ;-)

image.png

RAM standard 1024 ich nehme 4096 MB, vorrausegetzt Ihr hab soviel RAM, anosten wie bei CPU anpassen ;-)

image.png

Netzwerkbrücke auswählen, ich hab hier nur eine.

image.png

Per dchp oder static vergeben für ipv4. Ich nehme DHCP, kann ich später immer noch ändern, ist ja ein LXC Container

image.png

er dchp oder static vergeben für ipv6. Ich nehme none disabled, ich brauch jetzt kein ipv6.
Aber kann ich später immer noch ändern, ist ja ein LXC Container

image.png

APT Cache lassen wir leer, also default

image.png

MTU size wer eine andere angeben will, ich lass es leer, also standard 1500

image.png

DNS-Serach Domain nehm ich vom Host

image.png

DNS-Server IP nehm ich auch vom Host

image.png

MAC Adresse manuell vergeben oder wie ich leer lassen, dann wird sie Automatisch erstellt.

image.png

Wer ein VLAN aktiv hat, die VLAN Nummer eingeben, ich hab kein VLAN also lass ichs leer

image.png

Man kann selbst TAGs setzten, ich lass sie bei Standard. Könnt Ihr natürlich ändern mit Semikolon getrennt.

image.png

Wer hat und möchte kann hier seinen Öffentlichen SSH.Key einfügen, copy und paste funktioniert übrigends.
Einfach rechtsklick rein, ist dann einfügen.
Ich habe keinen Key, also lass ichs leer.

image.png

Root access aktivieren, damit Ihr euch auch einloggen könnt.

image.png

Enable Fuse support, hab ich auf yes gesetzt , wer weiß wozu man es noch braucht

image.png

Den Verbose mode brauch ich nicht, wers braucht einschalten

image.png

Jetzt gehts los, mit yes bestätigen

image.png

Wenn wir wollen können wir unsere Auswhl in eine Konfig Datei schreiben um sie beim nächtsen mal zu benutzen.
Im Ersten Punkt am anfang würden wir dann anstatt Advanced Config File nehmen.
Wer weiß obs nützlich ist, wir sagen einfach mal yes

Die config liegt aufm Proxmox Host in

/opt/community-scripts/part-db.conf

image.png

Nun wird gefragt wo das Debian Template zu finden ist, bzw wo es downgeloaded werden soll wenn es nicht vorhanden ist.
Die meisten werden local haben, ich hab einen extra Datastore für ISOs und Templates, deswegen nehme ich mein Datastore.
Mit leertaste auswählen und dann enter drücken

image.png

Er sucht sich als Ziel automatisch den Datastore mit dem größten Speicher
Ich hab zwei Warnungen weil zwei Datastores gerade nicht erreichbar sind)

✔️   Valid Storage Found
  ✔️   Validated Storage | Container: data (Free: 2.5TB  Used: 7.7TB)  <====== Genau hier
backup: error fetching datastores - 500 Can't connect to 192.168.178.120:8007 (Connection timed out)
backupold: error fetching datastores - 500 Can't connect to 192.168.178.120:8007 (Connection timed out)
  ✔️   Cluster is quorate
  ✔️   LXC Template List Updated
  ✔️   LXC Template 'debian-12-standard_12.7-1_amd64.tar.zst' is ready to use.
  ✔️   LXC Container 164 was successfully created.
  ✔️   Started LXC Container
  ✔️   Network in LXC is reacha

Nun installiert er, alles automatisch.
Hier die Komplette ausgabe als Klapp Code

Ausgabe

   ____             __        ____  ____ 
   / __ \____ ______/ /_      / __ \/ __ )
  / /_/ / __ `/ ___/ __/_____/ / / / __  |
 / ____/ /_/ / /  / /_/_____/ /_/ / /_/ / 
/_/    \__,_/_/   \__/     /_____/_____/  
                                          
  🧩  Using Advanced Settings on node vserv0005
  🖥️  Operating System: debian
  🌟  Version: 12
  📦  Container Type: Unprivileged
  🔐  Root Password: ********
  🆔  Container ID: 164
  🏠  Hostname: part-db
  💾  Disk Size: 32 GB
  🧠  CPU Cores: 4
  🛠️  RAM Size: 4096 MiB
  🌉  Bridge: vmbr0
  📡  IPv4: DHCP
  📡  IPv6: Disabled
  📡  APT-Cacher IP Address: Default
  ⚙️  Interface MTU Size: Default
  🔍  DNS Search Domain: Host
  📡  DNS Server IP Address: Host
  🏷️  Vlan: Default
  📡  Tags: community-script;inventory;parts
  🔑  Root SSH Access: yes
  🗂️  Enable FUSE Support: yes
  🔍  Verbose Mode: no
  🚀  Creating a Part-DB LXC using the above advanced settings
  💡  Writing configuration to /opt/community-scripts/part-db.conf
  ✔️   Valid Storage Found
  ✔️   Validated Storage | Container: data (Free: 2.5TB  Used: 7.7TB)
backup: error fetching datastores - 500 Can't connect to 192.168.178.120:8007 (Connection timed out)
backupold: error fetching datastores - 500 Can't connect to 192.168.178.120:8007 (Connection timed out)
  ✔️   Cluster is quorate
  ✔️   LXC Template List Updated
  ✔️   LXC Template 'debian-12-standard_12.7-1_amd64.tar.zst' is ready to use.
  ✔️   LXC Container 164 was successfully created.
  ✔️   Started LXC Container
  ✔️   Network in LXC is reachable
  ✔️   Customized LXC Container
  ✔️   Set up Container OS
  ✔️   Network Connected: 172.0.250.61 fd00::be24:11ff:fe07:e602 
  ✔️   IPv4 Internet Connected
   ✖️   IPv6 Internet Not Connected
  ✔️   Git DNS: github.com:(✔️ ) raw.githubusercontent.com:(✔️ ) api.github.com:(✔️ ) git.community-scripts.org:(✔️ )
  ✔️   Updated Container OS
  ✔️   Installed Dependencies
  ✔️   Setup Node.js 22
  ✔️   Installed Node.js modules: yarn@latest
  ✔️   Setup PostgreSQL 16
  ✔️   PostgreSQL 16 installed
  ✔️   Setting up PHP
  ✔️   Set up PostgreSQL
  ✔️   Installed Part-DB
  ✔️   Created Service
  ✔️   Cleaned
  ✔️   Completed Successfully!

  🚀  Part-DB setup has been successfully initialized!
  💡   Access it using the following URL:
    🌐  http://172.0.250.61

Wenn alles gelaufen ist steht am ende:

  ✔️   Completed Successfully!

  🚀  Part-DB setup has been successfully initialized!
  💡   Access it using the following URL:
    🌐  http://172.0.250.61

Und können dann über die URL auf unser Part DB zugreifen

Sprache und erster Login:

Auf die URL gehen.
So sieht die Seite dann aus:

image.png

Nun auf Das Kopf Symbol klicken und dann Deutsch auswählen

image.png

Nun ncohmal auf das Kopfsymbol und Login

image.png

Nun die Daten eingeben, diese sind zu finden im Container unter im Homeverzeichnis von root

cat ~/partdb.creds

Ausgabe:

Part-DB Credentials
Part-DB Database User: partdb
Part-DB Database Password: <pass>
Part-DB Database Name: partdb

Part-DB Admin User: admin
Part-DB Admin Password: <pass>

image.png

Im ersten Teil können wir unsere Daten vervollstädingen und auf apply changes klicken

image.png

Weiter runterscrollen, wenn wir wollen zwei Wege Auth hinzufügen wenn man möchte

Wie beschrieben:

  1. Google Auth runterladen
  2. Code scannen mit dem Google Authenticator
  3. Den einmal Code  vom Google Authenticator wieder eintippen.
  4. Enable Authenticator App button anklicken.
  5. fertig.

image.png

Noch weiter runterscrollen, dort kann man das Standard Kennwort ändern.
Ich lass es erstmal bei Standard, kann man dort jederzeit ändern, allerdings bekommt man jedes mal ne Warnung das das Kennwort nicht geändert wurde. Also sollte man dieses schon ändern.

image.png

Nun wieder ganz nach oben Scrollen den Register Configuration anklicken

Dort Sprache und Zeitzone einstellen.
Das Theme würd ich auf System lassen, könnt aber natürlich Themes ausprobieren.
Mit gefällt das Standard Theme am besten.
Die Währung Euro passt für mich auch, es gibt zur Zeit auch nur eine Währung.

image.png

Einmal  aus und wieder einloggen damit die Sprache gesetzt wird oder wieder über den Benutzerkopf und dann Sprache noch einmal setzten, dann erspart man sich das ausloggen ;-)

Über den Kopf kann auch Hell Dunkel Modus oder Auto gewählt weerden

image.png

Benutzer-Einrichtung und Installation abgeschlossen.

Erste Schritte, wie legen wir los

Beschreibung:

Die Installation ist geschafft, die Datenbank noch leer.
Das soll sich ändern.

Die Ersteinrichtung besteht aus

Los gehts:

Bauteile Quellen anlegen:

Wir können bei verschiednenen Herstellern Bauteile importieren.
Bei elektronik Bauteilen nehme ich reichelt.
Vor allem weil ich auch in der nähe von Sande wohne , wo Reichelt ansässig ist.
Aber auch wenn Ihr nicht in der nähe seid, Reichelt ist ein Deutscher Anbieter, also erhoff ich mir Beschreibungen in Deutsch.

Dazu auf Tools klicken -> Bauteil aus Informationsquelle erstellen -> Alle verfügbaren Informationsquellen anzeigen anklicken

image.png

Nun gehen wir auf den Register Deaktiviert, denn wir haben noch keine Quellen aktiviert

image.png

Hier sieht man den Namen, und was zur Verfügung gestellt wird.
Um diese zu aktivieren müssen diese in der .env Datei gesetzt werden, siehe dann gelber Kasten

image.png

Wir loggen uns in den LXC Container ein.
Dort liegt datei unter 

/opt/partdb/.env.local

Bei Docker einfach den Enviroment Variablen hinzufügen in der compose File.
Ich nutze hier nur erstmal Reichelt, habe aber Pollin mit aufgeführt

Die Variablen:

Reichelt:
....
# Reichelt provider:
# Reichelt.com offers no official API, so this info provider webscrapes the website t>
# It could break at any time, use it at your own risk
# We dont require an API key for Reichelt, just set this to 1 to enable Reichelt supp>
PROVIDER_REICHELT_ENABLED=1
# The country to get prices for
PROVIDER_REICHELT_COUNTRY=DE
# The language to get results in (en, de, fr, nl, pl, it, es)
PROVIDER_REICHELT_LANGUAGE=de
# Include VAT in prices (set to 1 to include VAT, 0 to exclude VAT)
PROVIDER_REICHELT_INCLUDE_VAT=1
# The currency to get prices in (only for countries with countries other than EUR)
PROVIDER_REICHELT_CURRENCY=EUR
...
Pollin:
....
# Pollin provider:
# Pollin.de offers no official API, so this info provider webscrapes the website to e>
# It could break at any time, use it at your own risk
# We dont require an API key for Pollin, just set this to 1 to enable Pollin support
PROVIDER_POLLIN_ENABLED=1
...

Bei Docker den Container neustarten. In LXC wird es so übernommen nach dem Speichern der Datei.
Nun haben wir unter aktiv Reichelt stehen.

image.png

Lager einrichten:

Ich besitze ein Kleineteilemagazin Drehturm.
Anhand dieses Drehturms richte Ich mein erstes Lager ein.

Mein Turm ist in Folgende Bereiche Einteteilt.
ich fang mit den Etagen von unten an zu zählen falls man oben drauf packen möchte.

Die Etagen haben Buchstaben die Seiten haben Zahlen.
Un innerhalb einer Etage und Seite (Immer ein Kleinteilemagazinkasten)
 Die Nummer mit Etage. Und Dran die Schubladen Nummer.

Beispiel:

T001/A01/005

Auflösung: Turm 001, in Etage 01, auf Seite 01, im Fach 005

Der Turm Selbst  Turm ID : T001


Seite 1 : 01 Seite 2 : 02 Seite 3 : 03 Seite 4 : 04
Etage 3: C C01/001-n C02/001-n C03/001-n C04/001-n
Etage 2: B B01/001-n B03/001-n B03/001-n B04/001-n
Etage 1:  A A01/001-n A02/001-n A03/001-n A04/001-n

image.png 

Auf Tools -> Bearbeiten -> Lagerorte klicken

image.png

Nu als Erstes die Erste Kategorie des Lagerortes angeben. Zum Beispiel der Standort wenn man verschiedene Standort Orte hat.
Selbst wenn man nur einen Hat, jetzt schon definieren, dann hat man beim Expandieren es einfacher.
Ich habe zwei Lager in Oldenburg.
ich gebe trotzdem den ort an, weil ich könnt ja noch einen in der Zukunft in Bremen bekommen.
Also geb ich die Straße als zweiten Parameter an, denn ein Lager zweimal an der gleichen Adresse macht kein Sinnd. Dann die Adresse wieder aufteilen in Sektionen wie Lagernummern zum Beispiel.
Im Ausland werde ich keine Lager haben, Sonst wäre Deutschland das Root Verzeichnis quasi

Also Oldenburg:

Hier den Namen eingeben und nicht auswählbar auch Haken rein.
Warum ist kein Fach oder so, sondern eine Kategorie

image.png
Nun die Straße anlegen.
Hierzu auf neues Element klicken,
Dann die Straße eingeben, als Übergeordnetes Objekt Oldenburg wählen und nicht auswählbar Einhaken

image.png

Nun das gleiche Für T001 den Turm noch machen.
Dann sieht unsere Struktur so aus.

image.png

Nun die Etagen und Seiten anlegen
Wir fangen mit den Etagen an, dann auf anlegen klicken.

image.png

Nun noch eben die Etagen durchgehen als nicht auswählbar.

image.png

Nun die Seiten anlegen.
Jede Etage hat 4 Seiten.
Dieses dann für alle Etagen durchführen.
zum Start ist der Übergeordnete Etage A, dann Etage B usw.
Gott sei Dank, braucht man nach Anlegen nur die Kategorie unten wechseln und kann wieder auf anlegen klicken, denn der Text bleibt stehen, siehe zweite Bild ;-)

image.png

image.png

Auch hier wieder nicht auswählbar machen.

Nun noch die Fächer anlegen

Meistens ist es  so das in einer Etage über alle Seiten der gleiche Schrank mit den gleichen Fächern ist.
Also macht es Sinn eine Etage alle Seiten zu machen dann braucht der Text nicht geändert werden.
Erst wenn es zu einer anderen Etage geht.
Wie viele Fächer da angeben werden hängt vom Magazin ab. Ich mach trotzdem 3 Stellen obwohl ich Ziemlich sicher bin das es keinen Schrank mit über 100 Fächern gibt.
Aber falls doch sind wir gerüstet.
Tipp Speichert die LIste in einem Textdokument ab. So braucht mann dann nur noch fächer löschen falls weniger sind oder nur noch ein paar hinzufügen falls mehre sind.

image.png

Und das gleiche jetzt für Seite 2 bei Etage A, einfach nur die Kategorie ändern, denn alle Seiten sind gleich in Etage A

image.png

Das gleiche jetzt für die Anderen Etagen mit der richtigen Anzahl der Fächer natürlich.
Jetzt sieht das ganze so.

Die zahlen Dahinter sagen aus wie viele Fächer.

image.png

Und diese Fächer sind natürlich auswählbar, aber man kann noch einstellen, leider ging das nicht beim Massen anlegen, das diese nur für Ein Bauteil auswählbar sind. Dieses wenn man möchte nachträglich machen, dann wird dieses Fach beim Bauteil erstellen nicht mehr angezeigt, weil schon ein Bauteil drin. Sehr praktisch um später noch leere Fächer zu finden.

Auch hier wieder die Fächer durch klicken der Reiter optionen bleibt stehen. Also nur das Fachauswählen Haken setzten speichern, nächste. Nur eben kurz warten das auch alles geladen ist, weil sonst gibts Fehler das das Bauteil schon existiert. jQuery hat dann noch nicht alles geladen.

image.png


Aber sonst gehts recht fix

image.png

Fertig Lager eingerichtet.