Benutzer-Werkzeuge

Webseiten-Werkzeuge


infrastruktur:container:md

Dies ist eine alte Version des Dokuments!


md (Hedgedoc)

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

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übersichtVersion
nodejs 16.6.0-1nodesource1
postgresql 13+226.pgdg100+1
Hedgedoc 1.8.2

Installation und Konfiguration

Dependencies

Node.js

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

curl -fsSL https://deb.nodesource.com/setup_16.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,ou=internal,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

infrastruktur/container/md.1628774116.txt.gz · Zuletzt geändert: 12.08.2021 13:15 von Lukas Ruge