SimpleHelp Serverproblem

Das ist genau das, was ich tun muss! Es macht mich wahnsinnig, weil ich für das Upgrade meines SimpleHelp-Servers Zugriff auf den Speicherort des Programms brauche, auf den man standardmäßig nicht zugreifen kann. Andernfalls müsste ich den gesamten Container neu aufsetzen! Ich hatte einfach noch keine Zeit, mir alles anzusehen oder Docker Compose zu lernen…

Das ist eine der Grenzen, auf die ich anspiele. CS nimmt dich so sehr an die Hand, dass es leicht ist, sich selbst festzufahren oder faul zu werden.

Versuch mal, in /share/Container/ zu suchen, du solltest /share/Container/<Anwendungsname>/ haben.
Also vielleicht /share/Container/SimpleHelp/<appdata/config/configuration/data/IRGENDWAS HIER>, und dann verschiebst (mv) du diesen Ordner irgendwo anders hin und bind-mountest ihn zurück.
Deine Installationsdokumentation sollte dir sagen, welche Ordner du brauchst (config+cache+tmp oder was auch immer). Und sobald es ein Bind Mount ist, kannst du den Container beliebig oft neu erstellen oder löschen.

Wenn du nie etwas benannt hast, musst du jetzt Verstecken mit anonymen Volumes spielen.
docker inspect --type container -f '{{range $i, $v := .Mounts }}{{printf "%v\n" $v}}{{end}}' <Containername oder ID>
Das sollte dir etwas Nützliches ausgeben.
Ich habe nur ein paar Container, die keinen Status speichern müssen, daher bin ich mir nicht 100% sicher, wonach du suchen musst, aber…

[admin@TheVault arcane]# ls -al /share/ZFS530_DATA/.qpkg/container-station/docker/volumes/
drwx-----x    3 root     root             5 Sep 22 11:06 .
drwx--x---   13 root     root            14 Sep 18 22:41 ..
drwx-----x    3 root     root             3 Sep 11 08:58 3a12c9a67706cd7e7b3bdd16df83391521e4e60d1d4024707b87a7a2325f6eea
brw-------    1 root     root        0,  57 Sep 18 22:41 backingFsBlockDev
-rw-------    1 root     root         65536 Sep 22 11:06 metadata.db
[admin@TheVault arcane]# ls -al /share/ZFS530_DATA/.qpkg/container-station/docker/volumes/3a12c9a67706cd7e7b3bdd16df83391521e4e60d1d4024707b87a7a2325f6eea/
drwx-----x    3 root     root             3 Sep 11 08:58 .
drwx-----x    3 root     root             5 Sep 22 11:06 ..
drwxr-xr-x    2 root     root             2 Sep 11 08:58 _data

Hier ist eines meiner anonymen Volumes. Ich könnte jetzt Sachen herausverschieben.


Meine Container haben nichts Wichtiges in sich. Ich kann also jederzeit alles löschen oder zurücksetzen.

[admin@TheVault arcane]# grep -R '/share/' /share/docker/stacks/
/share/docker/stacks/jellyfin/compose.yaml:      - /share/docker/appdata/jellyfin/cache:/cache
/share/docker/stacks/jellyfin/compose.yaml:      - /share/docker/appdata/jellyfin/config:/config
/share/docker/stacks/jellyfin/compose.yaml:      - /share/Media Library:/mnt/mediaShare:ro
/share/docker/stacks/jellyfin/compose.yaml:      - /usr/share/fonts/:/usr/local/share/fonts/custom:ro

/share/docker/stacks/uptime-kuma/compose.yaml:      - /share/docker/appdata/kuma/data:/app/data

/share/docker/stacks/qbittorrent/compose.yaml:      - /share/docker/appdata/qbittorrent/cache:/cache
/share/docker/stacks/qbittorrent/compose.yaml:      - /share/docker/appdata/qbittorrent/config:/config
/share/docker/stacks/qbittorrent/compose.yaml:      - /share/Public/qBittorrent:/systemSSD
/share/docker/stacks/qbittorrent/compose.yaml:      - /share/Scratch/qBittorrent:/raidHDD

/share/docker/stacks/arcane/compose.yaml:      - /share/docker/appdata/arcane/config:/app/data
/share/docker/stacks/arcane/compose.yaml:      - /share/docker/compose:/app/data/templates
/share/docker/stacks/arcane/compose.yaml:      - /share/docker/stacks:/app/data/projects

/share/docker/stacks/portainer-ce/compose.yaml:      - /share/Container/portainer-ce/data:/data:rw

Kleine Ausnahme, meine ursprüngliche Portainer-Installation, die ich abschaffen werde, sobald Arcane etwas ausgereifter ist. Ich musste CS ein paar Mal neu installieren, während ich gelernt habe, also kannst du /share/Container/ löschen und wirst es vielleicht auch, deshalb nutze ich es nicht.

Da ALLES in /share/docker/ (und ZFS) ist, bekomme ich sehr schöne Snapshots für die gesamte Docker-Umgebung.

Ja, die Daten im Verzeichnis share/Container sind nicht nützlich. Das ist das, was ich als das Dateiformat bezeichnen würde, das CS verwendet, und nicht einfach nur Freigaben deiner Ordner.

Nun, ich habe das Verzeichnis container-station/docker/volumes gefunden, aber während eine meiner Apps dort ist, ist SimpleHelp nicht dabei. Hast du eine Idee, wo es sonst sein könnte?

Okay, lass uns einen Schritt zurückgehen.

Wie hast du CS verwendet, um den Container zu erstellen?
Ich nehme an, wenn du mit einer Anwendung angefangen hättest, hätten wir jetzt nicht so viele Probleme. Hast du den Button + Erstellen (Create) im Container-Tab verwendet?

Ich habe Explore verwendet:

Dann habe ich nach SimpleHelp gesucht:

Und ich habe die Version ausgewählt, die zu diesem Zeitpunkt die neueste war. Seitdem gab es Updates und ich brauche Zugriff auf das Dateisystem, um die Dateien im Grunde zu ersetzen.

OK. Ich glaube, ich habe meine Dateien gefunden. Wie verschiebe ich nun dieses Verzeichnis in ein anderes, auf das ich leichter zugreifen kann?

Oh verdammt, CS/Docker versteckt echt Sachen auf ZFS.

Okay, du musst Folgendes ausprobieren, während dein aktueller Container läuft.

Zuerst starte eine weitere Instanz von SimpleHelp ALS ANWENDUNG,
das ermöglicht dir die Nutzung einer compose.yaml. Du musst vorerst alternative Ports wählen. Achte darauf, dass du den Speicher per Bind-Mount einhängst.

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/something/somewhere/simpleHelp/config:/opt/SimpleHelp/configuration

Schau dir /share/something/somewhere/simpleHelp/config an, hat SimpleHelp dort etwas abgelegt?

/opt/SimpleHelp/configuration/
drwxr-xr-x   16 root     root            18 Sep 29 21:52 .
drwxr-xr-x    9 root     root            19 Sep 29 22:21 ..
drwxr-xr-x    2 root     root             3 Sep 29 21:52 alertsdb
drwxr-xr-x    3 root     root             3 Sep 29 21:52 backups
drwxr-xr-x    2 root     root             2 Sep 29 21:52 branding
drwxr-xr-x    3 root     root             4 Sep 29 21:52 history
drwxr-xr-x    5 root     root             6 Jun  2  2020 html
drwxr-xr-x    2 root     root             2 Sep 29 21:52 notifications
drwxr-xr-x    2 root     root             2 Sep 29 21:52 recordings
drwxr-xr-x    2 root     root             2 Sep 29 21:52 remotework
drwxr-xr-x    2 root     root             2 Sep 29 21:52 secmsg
-rw-r--r--    1 root     root          2284 Sep 29 21:52 serverconfig.xml
-rw-r--r--    1 root     root            86 Sep 29 21:52 simplehelpdisclaimer.txt
drwxr-xr-x    2 root     root             7 Sep 29 22:21 sslconfig
drwxr-xr-x    2 root     root             2 Sep 29 21:52 techprefs
drwxr-xr-x    2 root     root             3 Jun  2  2020 templates
drwxr-xr-x    2 root     root             2 Sep 29 21:52 toolbox
drwxr-xr-x    2 root     root             3 Jun  2  2020 translations

Stoppe deinen neuen Container.

Während der alte Container läuft, per SSH auf das NAS verbinden und ausführen:

stat /share/ZFS*DATA/.qpkg/container-station/docker/zfs/graph/*/opt/SimpleHelp/configuration/simplehelpdisclaimer.txt

Ich habe das Dataset unter 530 gefunden.

  File: '/share/ZFS530_DATA/.qpkg/container-station/docker/zfs/graph/b408809b4fa4d0eaf26237d3accb4052d75f57c95895848036a52d129b870323/opt/SimpleHelp/configuration/simplehelpdisclaimer.txt'
  Size: 86              Blocks: 9          IO Block: 512    regular file
Device: b7h/183d        Inode: 8211        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-09-29 21:53:02.788096554 -0400
Modify: 2025-09-29 21:52:46.781974390 -0400
Change: 2025-09-29 21:52:46.781974390 -0400

Spiegele deinen laufenden Container in das neue Container-Konfigurationsverzeichnis

/usr/bin/rsync -avpX --delete-before /share/ZFS530_DATA/.qpkg/container-station/docker/zfs/graph/b408809b4fa4d0eaf26237d3accb4052d75f57c95895848036a52d129b870323/opt/SimpleHelp/configuration/ /share/something/somewhere/simpleHelp/config/


Stoppe deinen alten Container, passe die Ports deines neuen Containers an (Anwendungen immer durch „Neuerstellen“ anpassen), starte den neuen Container.

Viel Glück.

Noch etwas.

Das neueste Paket stammt von diesem Typen.

Das kopiert die Software von irgendwoher.

Das „5 Jahre alte“ Paket


verwendet wget raw, um die Software zur Build-Zeit direkt von der SH-Website herunterzuladen.
Und das finale Image ist kleiner.

Ich habe mein ursprüngliches Paket aus dem oben gezeigten alhazar-Paket erhalten.

Ich bin mir nicht ganz sicher, wie ich es als Anwendung einrichte. Da bin ich wirklich sehr unwissend. Und ich bin mir auch nicht sicher, was du über Bind-Mount-Storage sagst.

volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/something/somewhere/simpleHelp/config:/opt/SimpleHelp/configuration

Was ist /etc/localtime? Das verstehe ich nicht.

Das SimpleHelp-Verzeichnis befindet sich hier:

/share/ZFS2_DATA/.qpkg/container-station/docker/zfs/graph/ae6c730f350f0edc71392752f1d67c9874b3dda9903540c21a75c0e7a6e4a1ce/opt/SimpleHelp

Im config-Ordner befindet sich Folgendes:

[/share/ZFS2_DATA/.qpkg/container-station/docker/zfs/graph/ae6c730f350f0edc71392752f1d67c9874b3dda9903540c21a75c0e7a6e4a1ce/opt/SimpleHelp] # ls -la configuration
total 1775
drwxrwxr-x 22 Jono 1000      30 2025-09-04 19:38 .
drwxr-xr-x 10 Jono 1000      16 2025-04-10 09:03 ..
drwxr-xr-x  2 Jono 1000       3 2025-09-30 08:27 accessdb
drwxr-xr-x  2 Jono 1000       3 2025-04-10 08:33 alertsdb
drwxr-xr-x  4 Jono 1000       4 2025-04-10 19:33 backups
drwxr-xr-x  2 Jono 1000       7 2025-04-10 21:44 branding
-rw-r--r--  1 Jono 1000      30 2025-05-26 10:47 config.configurable
drwxr-xr-x  4 Jono 1000       5 2025-04-11 10:06 history
-rw-r--r--  1 Jono 1000    1934 2025-05-10 00:30 hostkey.ser
drwxrwxr-x  5 Jono 1000       6 2025-03-12 12:52 html
drwxr-xr-x  2 Jono 1000       2 2025-04-26 08:51 invitations
-rw-r--r--  1 Jono 1000 1555470 2025-04-18 13:26 lastbackup.dat
-rw-r--r--  1 Jono 1000      19 2025-08-30 19:38 latestversion
drwxr-xr-x  2 Jono 1000       3 2025-09-28 19:25 notifications
drwxr-xr-x  2 Jono 1000       3 2025-04-10 09:04 peers
drwxr-xr-x  2 Jono 1000       2 2025-04-10 08:33 recordings
drwxr-xr-x  2 Jono 1000       2 2025-04-10 08:33 remotework
drwxr-xr-x  2 Jono 1000      14 2025-09-30 06:17 secmsg
-rw-r--r--  1 Jono 1000    6531 2025-09-04 19:38 serverconfig.xml
-rw-r--r--  1 Jono 1000    1572 2025-04-10 08:35 serverkeys.dat
-rw-r--r--  1 Jono 1000    2646 2025-04-10 09:02 shlicense.txt
-rw-r--r--  1 Jono 1000     357 2025-09-04 19:38 simplehelpdisclaimer.txt
drwxr-xr-x  2 Jono 1000       2 2025-04-10 08:36 simulations
drwxr-xr-x  2 Jono 1000      10 2025-09-25 16:25 sslconfig
drwxr-xr-x  3 Jono 1000       3 2025-04-10 22:24 technicians
drwxr-xr-x  2 Jono 1000       5 2025-09-29 18:26 techprefs
drwxrwxr-x  2 Jono 1000       3 2025-03-12 12:52 templates
drwxr-xr-x  2 Jono 1000       3 2025-04-10 22:19 toolbox
drwxr-xr-x  2 Jono 1000       2 2025-04-10 08:33 toolbox-resources
drwxrwxr-x  2 Jono 1000       3 2025-03-12 12:52 translations

Wo ich nicht weiterkomme, ist die Einrichtung als neue Anwendung. Ich habe vor einiger Zeit versucht, das YAML-Skript zu ändern, um die Anwendung woanders zu speichern, aber ich konnte sie nicht zum Laufen bringen.

Versuche es mit:

services:
  simplehelp:
    image: tecneo/simplehelp:latest
    container_name: simplehelpnew
    ports:
      - "8680:80"
      - "8681:80/udp"
      - "8643:443"
      - "8643:443/udp"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/stuffz/simpleHelp/config:/opt/SimpleHelp/configuration
    restart: always
1 „Gefällt mir“

Boom! Du bist ein Genie, mein Freund! Lass mich dir ein virtuelles Getränk deiner Wahl spendieren! :smiley:

Das sieht ganz so aus, als würde es GENAU das tun, was ich will.

Zunächst einmal @dolbyman – kannst du diesen Abschnitt mit meinen Docker/CS-Fragen bitte in einen neuen Thread auslagern? Das Ganze entfernt sich ziemlich vom ursprünglichen Thema.

Also, das oben funktioniert für mich aus ein paar Gründen nicht:

1.) Es bindet nur den Konfigurationsbereich des Servers extern ein und um die Server-Software zu aktualisieren, brauche ich Zugriff auf das gesamte SimpleHelp-Verzeichnis.

2.) Es funktioniert einfach nicht. Also, es läuft schon, aber wenn ich mich einloggen will, erkennt es erstens das Passwort des Administrator-Kontos nicht und zweitens, wenn ich mich mit meinem Konto einloggen will, kommt ein Fehler. Das passiert, nachdem ich ein Backup des Konfigurationsordners aus dem ursprünglich laufenden Container kopiert habe. Es scheint, als würde irgendetwas nicht korrekt gelesen werden.

Stattdessen habe ich also dieses YAML verwendet:


services:
  simplehelp:
    image: tecneo/simplehelp:latest
    container_name: simplehelpnew
    ports:
      - "80:80"
      - "80:80/udp"
      - "443:443"
      - "443:443/udp"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp:/opt/SimpleHelp
    restart: always

Das ist sehr ähnlich zu etwas, das ich zuvor schon ausprobiert hatte. Aber erstens hat der Installationsprozess nichts in den Ordner /share/Container/SimpleHelp installiert und zweitens, nachdem ich ein Download des Server-Pakets von der SimpleHelp-Website hineinkopiert habe, bekomme ich beim Starten des Containers folgenden Fehler:

sh: 0: Can't open serverstart.sh

Das wiederholt sich immer wieder, während versucht wird, den Server zu starten. Ich habe bereits ein chmod -r 777 auf das Verzeichnis /share/Container/SimpleHelp ausgeführt, aber das macht keinen Unterschied.

Ich stecke also immer noch fest.

Aber hier ist etwas Interessantes, das ich über CS gelernt habe…

Also, ich habe den Pfad zum Programmverzeichnis gefunden unter:

/share/ZFS2_DATA/.qpkg/container-station/docker/zfs/graph/ae6c730f350f0edc71392752f1d67c9874b3dda9903540c21a75c0e7a6e4a1ce/opt/SimpleHelp

Und rate mal, wenn du den Container stoppst, verschwindet dieser Pfad! Also

/share/ZFS2_DATA/.qpkg/container-station/docker/zfs/graph/

ist noch da, aber alles danach verschwindet einfach. Es taucht wieder auf, wenn der Container neu gestartet wird.

Ich vermute, das hat irgendetwas damit zu tun, warum ich meinen Server nicht mit dem angegebenen Speicherort starten kann. Ich weiß es nicht. Ich stecke schon wieder fest. So nah und doch so fern…

Erledigt

1 „Gefällt mir“

Ja, so funktioniert Docker.
Du würdest dann Anwendung → Neu erstellen. Jedes Mal, wenn du den Container mit dem Image tecneo/simplehelp erstellst, wird wget aufgerufen und der Server beim Build heruntergeladen.

Du solltest Konfigurationsdaten vom Software-Image trennen.

Bind-Mounts sind der letzte Schritt, bevor ein Container gestartet wird. Du hast also ein vollständiges /opt/SimpleHelp aus dem Container-Build und dann mountest du einen leeren Ordner darüber.

Hast du Fehler in der rsync-Ausgabe gesehen?
Hat SimpleHelp intern eine Backup- und Wiederherstellungsfunktion?

Ja, anonyme Mounts oder so ein Kram.
Wenn du genauer hinschaust, weil wir ZFS benutzen, erstellt Docker tatsächlich ein Dataset (QNAP „Share“ so in der Art, aber nicht wirklich) und mountet es in graph/.

Ich kenne mich mit ZFS nicht gut genug aus, aber theoretisch könnten wir das Dataset selbst mounten und dann entweder die Daten herausbewegen oder den Inhalt mit /share/CS/SH/ zusammenführen.
Es ist alles auf deinen Festplatten vorhanden, es wird nur ausgehängt.

Ich erhalte beim Erstellen keine Fehler. Wenn ein „recreate“ immer die neueste Version zieht, würde das funktionieren. Aber ich habe weiterhin einen Fehler in SimpleHelp erhalten, wenn ich mich anmelden wollte.

Das Backup der Einstellungen in SimpleHelp wird als ZIP-Datei heruntergeladen. Es lädt den gesamten Konfigurationsordner herunter.

Und wenn du mit einem sauberen /share/Container/SimpleHelp/config startest und das Zip-Archiv dort entpackst, lädt er dann trotzdem deine alten Einstellungen nicht?

Das klingt jetzt eher nach einem SimpleHelp-Problem.

Wäre das ein großes Upgrade? Oder eher so von 1.2.3.4 auf 1.2.3.7?

Gibt es irgendwelche Hinweise in den Container-Logs?

Nun, das ist interessant… Ich habe daran gearbeitet, Dinge mit diesem Paket hier zu installieren. Du sagst, es soll die allerneueste Version von der SimpleHelp-Website holen. Aber das tut es nicht. Die neueste Version ist 5.5.13. Aber als ich es gebaut habe, kam 5.2.1 heraus. Das könnte erklären, warum ich Probleme damit hatte, dass meine Konfigurationsdatei gelesen wird. Es scheint, als würde wget nicht wirklich „holen“.

Hmm… OK. Warum wird das nicht aktualisiert? Also, meine Probleme hingen zu 100 % damit zusammen, dass ich versucht habe, eine neuere Konfiguration und Client-Software zu verwenden, um mich bei einem fünf Jahre alten Server-Paket anzumelden. Ich bin auf Alzahar/Latest umgestiegen und damit auf 5.5.9 gekommen, aber laut dem Paket und deinen Bildern ist die neueste Version 5.5.13.

Das ist der YAML-Code, den ich habe:

services:
  simplehelp:
    image: alzahar/simplehelpserver
    container_name: simplehelpserver
    networks:
      qnet-network:
        ipv4_address: 192.168.1.20
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: always
networks:
  qnet-network:
    driver_opts:
      iface: eth3
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth3
      config:
        - subnet: 192.168.0.0/23
          gateway: 192.168.1.1

Warum ziehe ich nicht das neueste Paket?