Migration von CodiMD 2.4.1 zu Hedgedoc 1.9.0

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

3 Kommentare

  1. Danke msc,

    ich habe mir die Optionen angesehen. Und auch noch ein paar andere gesetzt. Danke für den Hinweis! Hedgedoc habe ich gewählt, weil mir die Entwicklung etwas agiler vorkommt und es als Fork von HackMD/CodiMD wirklich freie Software ist. Die Arbeit am neuen Frontend finde ich ebenfalls super. Ja, ich musste auf ein paar Features verzichten, aber das wird vermutlich bald dann deutlich besser werden. Außerdem habe ich immer noch einen CodiMD zur Verfügung. Bei meinem Arbeitgeber haben wir ein entsprechendes System.

    Gruß Ulli

  2. Respekt! Du solltest noch ein wenig an den Einstellungen schrauben. Ein guter Anfang wären die folgenden Optionen…
    CMD_ALLOW_ANONYMOUS=false
    CMD_ALLOW_ANONYMOUS_EDITS=true
    CMD_ALLOW_ANONYMOUS_VIEWS=true
    CMD_DEFAULT_PERMISSION=private
    Warum hast du dich für einen Wechsel nach Hedgedoc entschieden?

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.