Benutzer-Werkzeuge

Webseiten-Werkzeuge


infrastruktur:container:md

md (Hedgedoc)

Verantwortung Malte
Container md
W. Ports keine
OS Debian 12.5
Server magrathea
Zustand Produktiv

Dies ist die technische Doku zu unserem Container md. Nutzerinfos zu hedgedoc findest du hier.

In diesem Container läuft Hedgedoc unter https://md.chaotikum.org

Langfristig soll hiermit das veraltete CodiMD unter https://docs.chaotikum.org abgelöst werden. Eine Migration ist leider nicht möglich, da das CodiMD zu alt ist und mit SQLite aufgesetzt wurde.

Services

Serviceübersicht Version
nodejs 20.14.0-1nodesource1
postgresql 16+260.pgdg100+1
Hedgedoc 1.9.9

Updates

Da die gesamte Konfiguration über den systemd-Service erfolgt (siehe unten) kann für ein Update einfach /opt/hedgedoc komplett gelöscht und neu installiert werden:

mv /opt/hedgedoc /opt/hedgedoc-old
wget https://github.com/hedgedoc/hedgedoc/releases/download/1.9.0/hedgedoc-1.9.9.tar.gz
tar xvf hedgedoc-1.9.9.tar.gz
mv hedgedoc /opt/
chown -R hedgedoc:hedgedoc /opt/hedgedoc
cd /opt/hedgedoc
./bin/setup

Uploads migrieren:

cp /opt/hedgedoc-old/public/uploads/* /opt/hedgedoc/public/uploads/

Installation und Konfiguration

Dependencies

Node.js

Manuelle Installation über NodeSource, da Version aus Debian-Paketquellen zu alt:

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs

PostgreSQL

Anleitung

# Create the file repository configuration:
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
 
# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
 
# Update the package lists:
apt-get update
 
# Install the latest version of PostgreSQL.
apt-get -y install postgresql

In der Datei

vim /etc/postgresql/13/main/pg_hba.conf

den Eintrag local all postgres von peer auf md5 ändern, damit auch über den lokalen Socket die internen Passwörter von PostgreSQL verwendet werden.

systemctl restart postgresql

Passwort vergeben:

su postgres
psql postgres
\password postgres
\q
exit

Datenbank anlegen:

psql -U postgres
CREATE DATABASE hedgedoc;
\q

Yarn

npm install --global yarn
apt install git

Installation

User anlegen:

adduser hedgedoc

Anleitung

wget https://github.com/hedgedoc/hedgedoc/releases/download/1.8.2/hedgedoc-1.8.2.tar.gz
tar xvf hedgedoc-1.8.2.tar.gz
mv hedgedoc /opt/
chown -R hedgedoc:hedgedoc /opt/hedgedoc
cd /opt/hedgedoc
./bin/setup

Service anlegen:

vim /etc/systemd/system/hedgedoc.service
systemctl enable hedgedoc
systemctl start hedgedoc

Konfiguration

Alles wird über den Service in /etc/systemd/system/hedgedoc.service konfiguriert:

[Unit]
Description=HedgeDoc - The best platform to write and share markdown.
Documentation=https://docs.hedgedoc.org/
After=postgresql.service

[Service]
Type=exec
Restart=always
RestartSec=2s
ExecStart=/usr/bin/yarn start --production
User=hedgedoc
Group=hedgedoc
WorkingDirectory=/opt/hedgedoc
Environment=CMD_DOMAIN=md.chaotikum.org
Environment=CMD_PROTOCOL_USESSL=true
Environment=CMD_HSTS_ENABLE=true
Environment=CMD_DB_URL=postgres://postgres:PASSWORD_CHANGE_ME@localhost:5432/hedgedoc
Environment=CMD_LINKIFY_HEADER_STYLE=gfm
Environment=CMD_SESSION_SECRET=PASSWORD_CHANGE_ME
Environment=CMD_HOST=::
Environment=CMD_PORT=8080
Environment=CMD_URL_ADDPORT=443
Environment=CMD_ALLOW_FREEURL=true
Environment=CMD_ALLOW_ANONYMOUS=true
Environment=CMD_ALLOW_ANONYMOUS_EDITS=true
Environment=CMD_ALLOW_ANONYMOUS_VIEWS=true
Environment=CMD_DEFAULT_PERMISSION=freely
Environment=CMD_EMAIL=false
Environment=CMD_ALLOW_EMAIL_REGISTER=false
Environment=CMD_LDAP_URL=ldaps://ldap.chaotikum.net
Environment=CMD_LDAP_BINDDN=uid=codi,ou=services,dc=chaotikum,dc=org
Environment=CMD_LDAP_BINDCREDENTIALS=PASSWORD_CHANGE_ME
Environment=CMD_LDAP_SEARCHBASE=dc=chaotikum,dc=org
Environment=CMD_LDAP_SEARCHFILTER=(&(objectClass=OrganizationalPerson)(uid={{username}})(memberOf=cn=freigeschaltet,ou=groups,dc=chaotikum,dc=org))
Environment=CMD_LDAP_USERNAMEFIELD=displayName
Environment=CMD_LDAP_USERIDFIELD=uid

[Install]
WantedBy=multi-user.target
  • Das Datenbankpassword muss das Passwort sein, dass man für den Postgres-User `postgres` in Postgres gesetzt hat. Der Linux-User `postgres` hat kein Password und darf auch keins bekommen!
  • Das Session-Secret ist einfach irgendwas. Zum Beispiel vier UUIDs in Kleinbuchstaben ohne Bindestriche hintereinander. Wenn sich das ändert, müssen sich alle User neu anmelden. Das ist nicht schlimm.
  • Die LDAP-Credentials sind das Passwort des Users `codi` in unserem LDAP. Der heißt aus historischen Gründen noch so und wird auch mindestens so lange weiter so heißen, wie das alte CodiMD noch existiert.

Wartung

In das Textfeld einfach das Datum der Wartung eintragen, am besten in der Form yyyy-mm-dd.

Du besitzt nicht die Benutzerrechte um Seiten hinzuzufügen.
Wartung md (Hedgedoc)Wartung md (Hedgedoc) Wann 01.06.2024 15:00 Warum Update System md Ansprechperson Malte wartungsfenster md done
Wartung md (Hedgedoc)Wartung md (Hedgedoc) Wann 21.10.2022 16:35 Warum Reperatur nach Crash und Update System md Ansprechperson Malte wartungsfenster md done yarn hatte sich irgendwie verschluckt und das führte zu dem Fehler
Wartung md (Hedgedoc)Wartung md (Hedgedoc) Wann 18.09.2022 18:00 Warum backup einrichten System md Ansprechperson paul wartungsfenster md done
Wartung md (Hedgedoc)Wartung md (Hedgedoc) Wann 15.09.2021 16:08 Warum Update System md Ansprechperson Malte wartungsfenster md done Agenda * Sicherheitsupdate wegen <https://nvd.nist.gov/vuln/detail/CVE-2021-39175>
infrastruktur/container/md.txt · Zuletzt geändert: 01.06.2024 15:29 von Malte