Migration von CodiMD 2.4.1 zu Hedgedoc 1.9.0

Veröffentlicht von

CodiMD ist mein favorisiertes Hackpad, ich finde es richtig gut, da ich in Markdown und mit multimedialer Unterstützung in dieser Art von Pads arbeiten kann. Eine Teilnehmerin im EBmooc focus sagte kürzlich, CodiMD sei ein Etherpad "in schön". Ich benutze beides gerne, aber eben für unterschiedliche Einsatzzwecke.

Noch besser finde ich aber, dass Hedgedoc – die Open Source Variante von Hackmdio/CodiMD – nun auch erwachsen geworden ist und eine super Alternative darstellt. Ich zeige euch in diesem Beitrag die paar Schritte die notwenig sind, um von Hackmdio/CodiMD 2.4.1 zur Open Source Variante Hedgedoc 1.9.0 zu migrieren.

Mein Setting

Ich betreibe Hackmdio/CodiMD in einem Docker Container. Dieser Docker Container wird über eine Konfigurationsdatei mittels Umgebungsvariablen passend eingestellt. Da ihr diesen Beitrag gefunden habt, gehe ich davon aus, dass ihr Hackmdio/CodiMD lauffähig via Docker betreibt.

Ich habe davor einen nginx Reverse Proxy geschaltet, das dürfte so ungefähr die Standardkonfiguration sein wie hier beschrieben wird.

Konfiguriert wird Hackmdio/CodiMD über die Datei /opt/codimd/deployments/docker-compose.yml. Der Pfad kann bei euch natürlich ein anderer sein. Ich packe mir WebApps immer in /opt/

Zunächst habe ich die CodiMD Instanz angehalten sudo docker-compose -f /opt/codimd/deployments/docker-compose.yml down und sowohl die Datenbank als auch die Docker VM gesichert. Das solltet ihr auch tun, falls etwas schief läuft. Wie ihr das macht kommt auf eure Gegebenheiten an.

Dann sind einige kleinere Änderungen in der Konfigurationsdatei gegenüber CodiMD vorzunehmen. Ich habe das in der Datei direkt kommentiert.

version: "3"
services:
  #database:
  # Ich brauche das nicht, da ich einen externen Datenbankserver betreibe.
  #  image: postgres:11.6-alpine
  #  environment:
  #    - POSTGRES_USER=codimd
  #    - POSTGRES_PASSWORD=change_password
  #    - POSTGRES_DB=codimd
  #  volumes:
  #    - "database-data:/var/lib/postgresql/data"
  #  restart: always
  codimd:
    # you can use image or custom build below
    # Ihr kommentiert einfach das hackmd Image aus und setzt das hedgedoc Image
    #image: hackmdio/hackmd:2.4.1
    image: quay.io/hedgedoc/hedgedoc:1.9.0
    # build:
    #   context: ..
    #   dockerfile: ./deployments/Dockerfile
    #   Die Eigentliche Konfiguration erfolgt über die Umgebungsvariablen
    environment:
      - CMD_DB_URL=mysql://codimd:XXXXXXXXX@XXXXXXXX/codimd
      - CMD_USECDN=false
      - CMD_SESSION_SECRET=XXXXXXXXXXX
      - CMD_DOMAIN=codimd.XXXXXXXX.de
      - CMD_PROTOCOL_USESSL=true
      # Die beiden folgenden Optionen musste ich hinzufügen. 
      # Immer darauf achten, dass true und false klein geschrieben werden!
      - CMD_USESSL=false
      - CMD_URL_ADDPORT=false
    # -CMD_WHATEVER_YOU_NEED
   # bei mir z.B. User Management mit OAUTH2, was er problemlos übernommen hat
    #depends_on:
    # nicht relevant für mich
    #  - database
    ports:
      - "3000:3000"
    volumes:
      # Das Uploaddirectory musste geändert werden, da sich der Mountpiont innerhalb des Images verändern wird.
      #- upload-data:/home/hackmd/app/public/uploads
      - upload-data:/hedgedoc/public/uploads
    restart: always
volumes:
  # Database Volume nicht relevant für mich, da ich eigene Datenbank betreibe.
  #database-data: {}
  upload-data: {}

Danach habe ich mit sudo docker-compose -f /opt/codimd/deployments/docker-compose.yml up & den Container neu gestartet. Docker zieht sich dann automatisch das Hedgedoc-Image. Danach lief Hedgedoc dann auch faktisch sofort.

Fertiggstellung der Konfiguration

Eure bestehenden Notizen sollten sofort in Hedgedoc erscheinen. Ihr könnt auch schon mit neuen Notizen starten. Was ihr (vermutlich) nicht könnt ist Bilder hochladen. Dazu ist noch ein Schritt erfoderlich. hackmdio/CodiMD läuft mit einem anderen Nutzer als Hedgedoc

Wenn das Image läuft könnt ihr den Namen mittels ps docker herausfinden. Dann schaut ihr euch die Berechtigungen an mit docker exec <image_name> ls -lan /hedgedoc/public. Ich musste das Upload Verzeichnis dann lediglich dem Hedgedoc Benutzer zuweisen mitdocker exec <image_name> chown -R 10000:10000 /hedgedoc/public/upload, dann ging auch das Bilder hochladen wieder.

Insofern Migration erfolgreich!

Was klappt nicht

Eigentlich funktioniert alles, aber der Umfang der Features von Hedgedoc ist noch nicht so wie beim Hackmdio/CodiMD. Was ich vermisse sind spoiler, also einklappbare Bereiche und CSV Rendering. Beides benutze ich ganz gerne. Hier ein Screenshot der Funktion aus Hackmdio/CodiMD.

Lizenzhinweis:

Das Beitragbild "Hedgedoc Logo 4b" stammt von Éric Gaspar, Studio Éricandmarie, Paris und steht unter Copyright. Nutzung unter Bezug auf die Usage Guidlines aus dem Hedgehoc Projekt

Die Anleitung zur Migration von CodiMD 2.4.1 zu Hedgedoc 1.9.0 von Ulrich Ivens steht unter der Lizenz CC BY-SA 4.0 .

Creative Commons License

Kommentar hinterlassen

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