Mayan EDMS auf Ubuntu 22.04lts mit Docker installieren

Ich habe bereits erfolglos versucht Mayan EDMS auf Ubtunu 22.04lts Server und Debian 11 zu installieren. Wie gesagt, leider erfolglos! Es scheint das es erheblich Abhängigkeiten im Python Teil des Mayan EDMS zu Paketen wheel und gevent gibt, bei welchen Ubuntu schon zu weit fortgeschritten ist und bei Debian wiederum meckert Mayan-EMDS wiederum an irgend etwas, was mit dem Redis zu tun hat herum . Aus diesem Grunde hab ich die Arbeit von mehreren Tagen zur Dokumentation der Installation verworfen (seufz) und werden in diesem Artikel die Installation auf Ubuntu 22.04lts mit Docker durchführen. Da ich die Mayan EDMS Software als Server testen möchte habe ich bei der Ubunt-Installation auf einen Desktop verzichtet und nur den SSH Server mit genommen. Ziel ist es bei diesem Test einen sauberen Installationspfad zu notieren, um nach der Gegenüberstellung der DMS Optionen (Paperless-NGX, Docspell und Mayan EMDS) selber nur die minimal notwendigen Pakete zu installieren.

Werfen wir einen flüchtigen Blick auf das Framework von Mayan-DMS.

1. Eventuell vorhandene alte Docker Versionen deinstallieren im Ubuntu Server 22.04lts

Zuerst schmeißen wir mal alle ggf. vorhandenen Docker Versionen aus unserem Ubuntu 22.04lts raus.

user@2204lts:~$ sudo apt-get remove docker docker-engine docker.io containerd runc
[sudo] password for user: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package docker-engine

2. System aktualisieren

Als nächstes Updaten wir unser Ubtuntu 22.04lts Server auf den aktuellen Stand.

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Hui, da wurde doch einiges im Ubuntu Repo aktualisiert. Mal gut, dass ich diesen Update immer mache und auch jedem vor dem Einsatz neuer Software empfehle.

3. Docker installieren

Da ich schon alle möglichen Installationsvarianten ausprobiert habe, nutze ich diesmal die hoffentlich einzige auf der Webseite funktionierte Variante: Simple Docker installation

Ich muss zugeben, dass die Software es einem nicht leicht macht sie ins Herz zu schließen, jedoch sind die Feedbacks und das dazu existierende Buch für mich der Setin des Anstoßes es zu versuchen.

user@2204lts:~$ wget -qO- https://get.docker.com/ | sh

<snip>

Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:46 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:00:51 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Okay, docker ist installiert. Es ist die Community Variante 20.10.17 geworden. Noch einen kurzen Check, ob sie im systemctl eingetragen ist.

user@2204lts:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-28 16:27:10 UTC; 2min 41s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 2016 (dockerd)
      Tasks: 9
     Memory: 30.8M
        CPU: 451ms
     CGroup: /system.slice/docker.service
             └─2016 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.033208375Z" level=info msg="scheme \"unix\" not registered, fallback to de>
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.033240425Z" level=info msg="ccResolverWrapper: sending update to cc: {[{un>
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.033254276Z" level=info msg="ClientConn switching balancer to \"pick_first\>
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.118707666Z" level=info msg="Loading containers: start."
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.299497285Z" level=info msg="Default bridge (docker0) is assigned with an I>
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.401235272Z" level=info msg="Loading containers: done."
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.420854967Z" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=o>
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.421146384Z" level=info msg="Daemon has completed initialization"
Aug 28 16:27:10 2204lts systemd[1]: Started Docker Application Container Engine.
Aug 28 16:27:10 2204lts dockerd[2016]: time="2022-08-28T16:27:10.450391870Z" level=info msg="API listen on /run/docker.sock"

Das sieht ganz gut aus. Dann werde ich den Server mal rebooten und schauen, ob es reboot fest eingetragen ist.

user@2204lts:~$ sudo reboot
Connection to 192.168.2.154 closed by remote host.
Connection to 192.168.2.154 closed.

Ich bin zu frieden, der Docker ist reboot fest. Nicht das nach einem Neustart oder einen gewerkschaftlich angeordneten Denkpause das Troubleshooting los geht…

4. Mayan-EDMS Docker Container pullen

Die Anleitung sagt einfach den Container pullen. Dann machen wir das mal.

user@2204lts:~$ docker pull mayanedms/mayanedms:s4
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=mayanedms%2Fmayanedms&tag=s4": dial unix /var/run/docker.sock: connect: permission denied

Ach nö, “permission denied”. Also auf ein neues als ROOT..

user@2204lts:~$ sudo docker pull mayanedms/mayanedms:s4

s4: Pulling from mayanedms/mayanedms
1efc276f4ff9: Pull complete 
2f770c646b15: Pull complete 
673175948bc9: Pull complete 
cbdc76b5f0af: Pull complete 
2f3f3ee42e75: Pull complete 
ecaf49efbf15: Pull complete 
Digest: sha256:e8839ce27df60822c9af9af4d9eac5c6cdf137491043f06fd33a905bfafb833e
Status: Downloaded newer image for mayanedms/mayanedms:s4
docker.io/mayanedms/mayanedms:s4

Das sieht doch schon besser aus und ich würde behaupten, der Container ist da. Was kommt als nächstes dran… Redis oder PostGreSQL?

5. PostGreSQL Container pullen

Die Anleitung will als nächstes PostGreSQL und hier fällt mir gleich mal was auf. In allen anderen Anleitungen stand nie eine Version dabei, wohingegen nun explizit Version 12.11-alpine gefordert wird und nicht die latest and greatest. Das notiere ich mir gleich mal, das könnte nämlich bei meinen vorherigen Versuchen mit dem BareMetal-Setup einen starken Einfluss gehabt haben – Bazies!!!

user@2204lts:~$ sudo docker pull postgres:12.11-alpine
12.11-alpine: Pulling from library/postgres
213ec9aee27d: Pull complete 
85c3ef7cf9a6: Pull complete 
ac29cc04759a: Pull complete 
bd81f2ca8725: Pull complete 
3131bb88b0c3: Pull complete 
d434034b6768: Pull complete 
3e565c14669c: Pull complete 
01f499824d81: Pull complete 
Digest: sha256:6eca42e0c08b02c7cf53c8d60b735071165e22b9bb5e505e0b2a150f94fa84cb
Status: Downloaded newer image for postgres:12.11-alpine
docker.io/library/postgres:12.11-alpine

Auch hier wieder die Installation mit ROOT permissions… schmeckt mir nicht, aber ist ja erstmal nur für den Vergleichstest. (knurr)

Jetzt ist mit Sicherheit Redis dran..

6. Redis Container pullen

Auch hier wieder eine wundersame Entdeckung. Ebenfalls nicht die latest and greatest Redis Version, sondern explizit Version 6.2-alpine. Mir wird immer klarer, warum meine Installationsversuche in die Hose gegangen sind. Kann das dann mal bitte jemand in die anderen Anleitungen bei Mayan-EDMS eintragen? Oder wollen die ihre Software nicht am Markt sehen; Fragen über Fragen??

user@2204lts:~$ sudo docker pull redis:6.2-alpine
6.2-alpine: Pulling from library/redis
213ec9aee27d: Already exists 
c99be1b28c7f: Pull complete 
8ff0bb7e55e3: Pull complete 
477c33011f3e: Pull complete 
2bbc51a93257: Pull complete 
2d27eae19281: Pull complete 
Digest: sha256:fad643c78fadb65fdfe79e19a37b0923ae48e69b4a1e7c6be2e94e080f2554b4
Status: Downloaded newer image for redis:6.2-alpine
docker.io/library/redis:6.2-alpine

Die notwendigen Container habe ich gepullt. Nun müssen diese noch mit mit einer minimalen Konfig gestartet werden. Egal was da jetzt in dem Template steht. bei mir laufen die jetzt auf der Default-Bridge. Ich hab da jetzt keine Lust auf Experimente im Routing/Switching…

7. PostGreSQL Container anlegen und starten

Die Programierer haben da wohl auch keine Lust auf Netzwerkspielereien gehabt und nehmen ebenso die Default-Bridge. Ich bin beruhigt… dann wollen wir den Container mal anlegen und starten.

user@2204lts:~$ sudo docker run -d --name mayan-edms-postgres --restart=always -p 5432:5432 -e POSTGRES_USER=mayan -e POSTGRES_DB=mayan -e POSTGRES_PASSWORD=mayanuserpass -v /docker-volumes/mayan-edms/postgres:/var/lib/postgresql/data postgres:12.11-alpine
1b1e445f8093ad36278427354a06025c6d4dec631d8eaeeb3e024ad147784833

Das hat Docker ohne zu murren gefressen. Schauen wir mal nach, ob der Container tatsächlich angelegt wurde und fliegt.

user@2204lts:~$ sudo docker container ls -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED              STATUS              PORTS                                       NAMES
1b1e445f8093   postgres:12.11-alpine   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   mayan-edms-postgres

Sehr schön, der Container wird auf die Default-Bridge mit altem IP und neuem IPv6 mit Port TCP 5432 durchgereicht, laufen tut er natürlich auch. 🙂

Dann bringen wir mal den Key-Value-Store in Form unseres knuffigen Redis-Containers an den Start.

8. Redis Container anlegen und starten

Auch beim Redis Container wird alles auf die Default-Bridge gelegt und die notwendigen Parameter mit in den Docker gegebenen. Dann wollen wir den mal starten, den Container.

user@2204lts:~$ sudo docker run \
-d \
--name mayan-edms-redis \
--restart=always \
-p 6379:6379 \
-v /docker-volumes/mayan-edms/redis:/data \
redis:6.2-alpine \
redis-server \
--databases \
"3" \
--maxmemory-policy \
allkeys-lru \
--save \
"" \
--requirepass mayanredispassword

Boom, das hat Docker ohne Wiederworte gefressen. Ich sehe lieber mal nach.

user@2204lts:~$ sudo docker container ls -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES
da18af735024   redis:6.2-alpine        "docker-entrypoint.s…"   33 seconds ago   Up 32 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   mayan-edms-redis
1b1e445f8093   postgres:12.11-alpine   "docker-entrypoint.s…"   5 minutes ago    Up 5 minutes    0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   mayan-edms-postgres

Sehr schön, da waren es schon zwei Container. Der Redis Container macht ebenso altes und modernes IP auf TCP Port 6379. Sehr schön. Irgendwann stelle ich meine ganze Bude hier auf IPv6 only um!

9. Mayan-EDMS Container anlegen und starten

Bisher war ja alles Vorgeplänkel für unseren Mayan-EDMS. Dann wollen wir mal diesen Container auf die Startrampe schieben.

user@2204lts:~$ sudo docker run \
-d \
--name mayan-edms \
--restart=always \
-p 80:8000 \
-e MAYAN_CELERY_BROKER_URL="redis://:mayanredispassword@172.17.0.1:6379/0" \
-e MAYAN_CELERY_RESULT_BACKEND="redis://:mayanredispassword@172.17.0.1:6379/1" \
-e MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'172.17.0.1'}}" \
-e MAYAN_LOCK_MANAGER_BACKEND="mayan.apps.lock_manager.backends.redis_lock.RedisLock" \
-e MAYAN_LOCK_MANAGER_BACKEND_ARGUMENTS="{'redis_url':'redis://:mayanredispassword@172.17.0.1:6379/2'}" \
-v /docker-volumes/mayan-edms/media:/var/lib/mayan \
mayanedms/mayanedms:s4
a38e59294fcd7883e5fc46995da0057e307674569f90df5b3e961604cadf78a4

Auch ohne zu mucken angelegt und gestartet. Das einzige, was dem geneigten Docker Nutzer sofort auffält, ist das der Container interne Port 8000 auf den Host Port 80 gemapped wird. Also sollte mich auf der Ubuntu 22.04lts Server Adresse 192.168.2.154 auf Port 80 ein Webinterface vom Mayan-EDMS Server anlächeln und HTTP-Session annehmen. Bevor ich das Teste, sehe ich mir das allerdings nochmal aus der Docker Perspektive an, und Prüfe ob alle drei Container sauber laufen. Ihr wisst schon…Pferde und Apothekken und so…

user@2204lts:~$ sudo docker container ls -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                                       NAMES
a38e59294fcd   mayanedms/mayanedms:s4   "entrypoint.sh run_a…"   3 minutes ago    Up 3 minutes    0.0.0.0:80->8000/tcp, :::80->8000/tcp       mayan-edms
da18af735024   redis:6.2-alpine         "docker-entrypoint.s…"   6 minutes ago    Up 6 minutes    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   mayan-edms-redis
1b1e445f8093   postgres:12.11-alpine    "docker-entrypoint.s…"   11 minutes ago   Up 11 minutes   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   mayan-edms-postgres
user@2204lts:~$ 

Ich bin hoch erfreut und werde mal vorsichtig am Web Interface mit einem Firefox anklopfen.

10. Erster Webkontakt mit Mayan-EDMS

Pray the lord!!!

Aus meiner Perspektive ein ziemliches Wunder, der Bock läuft endlich. Vermutlich fühlt sich es so bei einem Modelbauer an, wenn das erstemal nach einigen Rückschlägen endlich das zusammengebaute ferngesteurte Auto einen kleinen ruckler tut… was für eine schwere Geburt..

1st Mayan Web Contact
Der Mayan-Webservice ist erreichbar und mach nach dem Einloggen mit den angezeigten Admincredentials einen sehr aufgeräumten eindruck. Eigentlich ganz schön clean. Allerdings wie immer, bitte setzen sie die Sonnebrille auf.
Logged in in Mayan EDMS
Der erste Login im Mayan Webinterface.

Noch ein schneller Reboot-Test, ob die Container auch automatisch wieder hoch kommen oder ich ein Script bauen muss. Das sieht soweit auch ganz gut aus. Das soll es dann fürs Erste mit der Installation von Mayan-EDMS gewesen sein.

Das könnte dich auch interessieren …

4 Antworten

  1. Michael sagt:

    Oh, Du verwendest ja docker, aber nicht docker-compose.
    Das würde es vereinfachen.
    https://docs.mayan-edms.com/chapters/docker/install_docker_compose.html

    Imm darauf achten, das Du die aktuellsten Versionen von docker und docker-compose verwendest.

    Debian 11 (extra Sourcen)
    docker –version && sudo docker compose version
    Docker version 20.10.17, build 100c701
    Docker Compose version v2.6.0

    Besser wäre natürlich podman.

    VG

    Michael

    • admin sagt:

      Hallo Michael,

      ich habe es versucht und es ging leider nicht.
      Das Debian 11 mit ständig Zicken gemacht
      und so bin ich auf pures Docker ausgewichen.
      Für einen Vergleich ausreichend, für den späteren Dauerbetrieb zugegeben
      keine Lösung. Werde ich mich ggf. noch mit befassen. 😉

      VG, Eric

  2. Michael sagt:

    https://docs.mayan-edms.com/chapters/portainer/installation.html

    Die Anleitung funktioniert auf einem Debian 11 ruck zuck.

    Wofür entscheiden man sich, Paperless-ngx, Docspell oder Mayan-DMS ?

    Danke für dein Sharen hier.

    VG

    Michael

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert