Chaotikum Wiki (Mirror)

md (Hedgedoc)

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

Tags: infrasystem, container, productive, magrathea, ldapconnected, malte

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

Wartung

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

[dynamischer Inhalt des Wiki-Plugins „NEWPAGE” — im Mirror nicht verfügbar]

SeiteBeschreibung
Wartung md (Hedgedoc)Wartung md (Hedgedoc) | Wann | 15.09.2021 16:08 | | Warum | Update | | System | infrastruktur:container:md | | Ansprechperson | Malte | Agenda Sicherheitsupdate…
Wartung md (Hedgedoc)Wartung md (Hedgedoc) | Wann | 18.09.2022 18:00 | | Warum | backup einrichten | | System | infrastruktur:container:md | | Ansprechperson | paul |
Wartung md (Hedgedoc)Wartung md (Hedgedoc) | Wann | 21.10.2022 16:35 | | Warum | Reperatur nach Crash und Update | | System | infrastruktur:container:md | | Ansprechperson | Malte |…
Wartung md (Hedgedoc)Wartung md (Hedgedoc) | Wann | 01.06.2024 15:00 | | Warum | Update | | System | infrastruktur:container:md | | Ansprechperson | Malte |