Closed microplayer closed 3 years ago
Hi everybody, after a full night of sleep my initial level of disappointment lowered substantially. So this morning I rechecked things. Being logged in as a Standard User I read more thoroughly through the Server Error: 500 message and stumbled upon an entry stating: "src/EventSubscriber/LogSystem/LogAccessDeniedSubscriber.php (line 58)" This AccessDenied led me to to idea to check if the Admin User is also experiencing this odd behaviour when trying to look at components. The answer was: NO. Therefore I changed the title of this issue to "Possible Access Rights Issue"
Please have a look at the attached hardcopies. As described in german language above when opening this issue, I am not aware of any glitch and weirdness when I entered my first categories and parts.
I had one issue however during installation of the docker image: No luck whatsoever trying to install the SQLITE database using "docker exec --user=www-data partdb bin/console doctrine:migrations:migrate" as described here: [https://github.com/Part-DB/Part-DB-symfony/blob/master/docs/docker/docker-install.md] Loads and loads of error messages from the Symfony Framework.
Installation of DB finally went through when I logged in right into the Bash shell of the container "sudo docker exec -it partdb /bin/bash", when I became "root" and was able start "/var/www/html/bin/console doctrine:migrations:migrate " manually.
PLEASE BE AWARE: In my case the PHP(?) "bin/console" command was not part of the container's $PATH environment variable! This forced me also to first identify the full path to the "bin/console" command.
In order to make installation simpler for Docker hobbyists like me, you possible want to check PATH settings and access rights for "--user=www-data" inside the container.
Anyway, thank you very much for this impressive piece of software! Especially the responsive design is a major plus for me. It does not force me to sit at the desk to check and change inventory. I can do it on my iPad right from the couch. Thumbs up!
Kind regards, Microplayer
OK, since I'm still alone here I tried to follow a different path to install the SQLITE DB in a freshly installed container based on jbtronics/part-db1:master. As I explained in my initial post I was not able to run the "sudo docker exec --user=www-data partdb /var/www/html/bin/console doctrine:migrations:migrate" command to create the SQLITE DB on my Synology.
Many, many lines of messages starting with: [2021-05-26T17:16:52.680344+00:00] php.INFO: User Deprecated: Since symfony/monolog-bridge 5.2: Passing an actionLevel (int|string) as constructor's 3rd .....
So I accessed the container by "docker exec -it npartb /bin/bash". There I ended up as "root": root@68108039e087:/var/www/html# whoami root root@68108039e087:/var/www/html# su www-data This account is currently not available. Trying to become www-data in order to run /bin/console from inside the container did fail :-/
Seems as if I could not become www-data to run "bin/console" is caused by the fact that www-data is not allowed to login to do the DB creation work:
cat /etc/passwd ... www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin ...
One workaround is providing the login shell for www-data upfront: su -s /bin/bash -c "/var/www/html/bin/console doctrine:migrations:migrate" www-data
But that failed also with the same load of error messages as cited above: WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]:
yes
[2021-05-26T17:16:52.680344+00:00] php.INFO: User Deprecated: Since symfony/monolog-bridge 5.2: Passing an actionLevel (int|string) as constructor's 3rd
... ten's to one hundred+ of lines ... then ...:
In AbstractSQLiteDriver.php line 70:
An exception occurred in driver: SQLSTATE[HY000] [14] unable to open database file
In PDOConnection.php line 31:
SQLSTATE[HY000] [14] unable to open database file
In PDOConnection.php line 27:
SQLSTATE[HY000] [14] unable to open database file
doctrine:migrations:migrate [--write-sql [WRITE-SQL]] [--dry-run] [--query-time] [--allow-no-migration] [--all-or-nothing [ALL-OR-NOTHING]] [--configuration CONFIGURATION] [--db-configuration DB-CONFIGURATION] [--] [
Unless I'm teached otherwise I would assume that something is really broken in the documentation how to bring up Part-DB in a container.
Kind regards, Microplayer
@Jan: Please try to help out here. Just one gentle push into to right direction needed.
Wie sind die Volumes in den Container eingebunden, und hat Docker die Zugriffsrechte auf die Ordner, wenn ein Ordner des NAS per Bind-Mount an den Container übergeben hat?
An alle Leser: Entschuldigung für das Format, ich weiß aber nicht, auf welche Schlüssel das Markup reagiert...
........ @jbtronics - Danke für das Interesse an meinem Fall!
Ich glaube aber, die IDs kommen aus meiner manuellen Rechtevergabe der gemounteten Directories im Container.
Die Gruppe=33 kommt vermutlich aus der expliziten Rechtevergabe innerhalb des Containers, die ich
beginnenden in /var/www/html gestartet hatte.
Die Rechte auf "public_media" und "uploads" habe ich im Part-DB Container explizit manuell gesetzt auf
UID=33=www-data und GID=33=www-data. Siehe auch weiter unten.
chown -R www-data uploads
chgrp -R www-data uploads
und
chown -R www-data public
chgrp -R www-data public
Warum der User aus der "Außen"-Sicht der Synology inzwischen auf 2=bin bzw. 4=sync steht, kann ich aktuell nicht beantworten... Vielleicht passiert beim Anlegen der DB als "root" im Container?
total 48 drwxr-xr-x 13 www-data www-data 4096 May 27 22:02 . drwxrwxrwx 21 www-data www-data 4096 May 27 22:01 .. -rw-r--r-- 1 www-data www-data 4371 Mar 14 22:46 .htaccess drwxr-xr-x 8 www-data www-data 4096 May 27 22:01 build drwxr-xr-x 10 www-data www-data 4096 May 27 22:01 bundles drwxr-xr-x 4 www-data www-data 4096 May 27 22:02 ckeditor drwxr-xr-x 2 www-data www-data 4096 May 27 22:02 icons drwxr-xr-x 14 www-data www-data 4096 May 27 22:01 img -rw-r--r-- 1 www-data www-data 1074 Mar 14 22:46 index.php -rw-r--r-- 1 www-data www-data 386 Mar 14 22:46 manifest.json drwxr-xr-x 4 www-data www-data 4096 May 27 22:21 media
total 664 drwxr-xr-x 2 www-data www-data 4096 May 27 22:31 . drwxrwxrwx 21 www-data www-data 4096 May 27 22:01 .. -rwxr-xr-x 1 root root 323584 May 27 22:31 app.db -rwxr-xr-x 1 www-data www-data 348160 May 25 10:25 app.db.rzink
Die in GitHub angegebene Zeile zum Anlegen der DB funktioniert - wenigstens bei mir - nicht: "docker exec --user=www-data partdb bin/console doctrine:migrations:migrate". Denn der user "www-data" hat in /etc/passwd des Containers keine eigene Shell gesetzt: www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin - siehe auch oben
Ich habe mir mit ""sudo docker exec -it partdb /bin/bash" beholfen und dann als "root" im Container explizit /bin/bash gesetzt und dann lediglich noch "/www/html/bin/console doctrine:migrations:migrate " manuell aufgerufen.
-> Dies halte ich tatsächlich für einen offensichtlichen Fehler in der Beschreibung zur Erstellung der DB auf GitHub - bis zum Beweis des Gegenteils durch Erläuterung meiner Fehlkonfiguration ;-)
Im nächsten Schritt habe ich dann die Ownership der DB auf www-data umgestellt:
root@68108039e087:/var/www/html/uploads# chown -R www-data /var/www/html/uploads/app.db root@68108039e087:/var/www/html/uploads# chgrp -R www-data /var/www/html/uploads/app.db root@68108039e087:/var/www/html/uploads# chmod og+w /var/www/html/uploads/app.db
Und da stehe ich jetzt.
Aus 3-5 ähnlichen Situationen habe ich leider bemerkt, das ich StorageLocations und Categories anlegen, umbennen und löschen konnte. Aber sobald ich Teile anlege und diese mit Bildern oder Attachments versehen, bekomme ich die weiter oben in Github gelisteten Error 500. Die Datenbank kann dann nur noch eingeschränkt bis gar nicht genutzt werden.
Leider habe ich keine Liste erlaubter Bild-Formate gefunden. Ebenso keine Übersicht, was in der 1.0.0.-alpha tunlichst vermieden werden sollte, weil eben "Alpha". Gehören vielleicht doch Attachments dazu?
Oder erlebe ich eine nicht offensichtliche Einschränkung von SQLITE?
Um ehrlich zu sein, glaube ich aktuell nicht mehr so recht an ein Rechteproblem. Eher vermute ich, dass meine Tests genau an den Stellen erfolgen, an denen der Alpha-Character zutage tritt... Da lasse ich mich aber gerne belehren.
Ich würde gerne mit der 1.0.0 weiterarbeiten, das sie mir von allen Optionen im Internet konzeptuell und grafisch am besten gefällt. Weitere Fragen zur Config beantworte ich deshalb sehr gerne. Danke für die Hilfe!
Microplayer
Wie oben erwähnt, läßt sich das Kommando zum Anlegen der SQLite-DB für den Docker Container leider nicht ausführen: "sudo docker exec --user=www-data partdb /var/www/html/bin/console doctrine:migrations:migrate". Mein Workaround, ausgeführt in der SSH-Console der Synology, funktioniert wie folgt:
Für mich scheint die DB jetzt immerhin so weit "vollständig" und reibungslos zu funktionieren, dass ich beim nächsten Fehler mit nicht unterstützten JPG-Files diese Dateien immerhin wieder problemlos mit dem Part-DB-GUI aus der DB löschen konnte. Und eben ohne das die ganze DB unbenutzbar wurde.
@Jan: Bitte überprüfe die in Github beschriebene Methode zum Anlegen der SQLite Datenbank. Ich sehe hier einen Fehler, der mich zu diesem recht aufwendigen Workaround getrieben hat. Sollte ich dagegen einen Fehler gemacht haben, so lerne ich gerne von Kundigeren.
Grüße, Microplayer
UPDATE! - Nachfolgend die korrigierte Fassung. Habe versehentliche eine Experimentierfassung kopiert.
---------------
Der Vollständigkeit noch mein "docker-compose-zPart-DB.yaml" angepasst für die Synology:
Der Container wird also als "admin" über die CLI auf der DiskStation per YAML erzeugt.
Bedingt natürlich SSH-Zugang auf die DiskStation. Das Image muss auch "irgendwie" auf die
Synology kommen... Mein Weg: "docker save" vom PC, TAR auf die SYNO kopieren, "docker load".
Grüße, Microplayer
--------------- docker-compose-zPart-DB.yaml ------------------
version: '3.3'
# Microplayer, 07.06.2021 - "Long Syntax" für Volumes hat auf der Synology bei mir nicht funktioniert
# Siehe: https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes
services:
zpartdb:
container_name: zpartdb
# By default zPart-DB will be running under Port 8092, you can change it here
# Auf dem PC ist natürlich die Synology auf Port 8092 zu adressieren: http://192.168.98.40:8092
ports:
- '8092:80'
volumes:
# Den kompletten Pfad auf der Synology zum einzuhängenden Verzeichnis in den Container angeben
- /volume1/docker/zPart-DB/uploads:/var/www/html/uploads
- /volume1/docker/zPart-DB/public_media:/var/www/html/public/media
# Ausführliche Darstellung der Volumes und Mountpoint von oben - Source=NAS-Pfad:Target=Pfad im Container
restart: unless-stopped
image: rzink-part-db1-image
Hi everybody,
after two weeks with Part-DB 1.0.0, many hours on the CLI of my Synology, reading and testing and scripting with Docker, PHP, GitHub, docker build and others I seem to have made relevant progress on my personal learning curve ;-)
In retrospective, it looks like the issues that convinced me to open this case were caused by a coincidence of multiple quirks in the Part-DB installation on my side together with lack of knowledge about the inner workings of the "Part-DB package" as a whole. I will close this issue.
Sorry for any inconvenience,
Microplayer
Hallo! Ich habe gerade erst mit einiger Mühe Part-DB "Version: 1.0.0-alpha" auf der Basis des Docker-Containers auf GitHub auf einer Synology DiskStation mit aktuellem DSM DSM 6.2.4-25556 ans Laufen gebracht. Die SQLITE Datenbank app.db liegt mit 336kB im Docker-Verzeichnis auf der Synology.
Heute, nach dem Anlegen von 88 Kategorien und lediglich 2 Komponenten kann ich die Komponenten zwar über die Suche oben rechts finden, angezeigt werden für diese Komponenten in der Maske aber nur Fragezeichen. Beim Klick auf die Fragezeichen des Namens erscheint dann die angehängte Fehlermeldung. Ich habe lediglich Informationen wie Name, Preis, Anzahl, Lieferant eingetragen, aber keine Bilder oder Dokumentation angehängt. Weder die Synology, noch der Container wurden "unterbrochen" oder neu gestartet, die Browser-Verbindung zum PC (aktuelles Mac 10.14.6 Mojave mit aktuellem Safari 14.1) wurde während der Anlage ebenfalls nicht unterbrochen.
Ich befürchte anhand der Fehlermeldungen, das die Datenbank korrupt ist. Eine Reparaturfunktion habe ich nicht gefunden.
Daraus ergeben sich für mich einige Frage:
Grüße, Microplayer (gleiche Meldung auch bei mikrocontroller.net angelegt)