====== md (Hedgedoc) ====== | Verantwortung | Malte | | Container | md | | W. Ports | keine | | OS | Debian 12.5 | | Server | [[infrastruktur:server:magrathea]] | | Zustand | Produktiv | {{tag>infrasystem container productive magrathea ldapconnected malte}} Dies ist die technische Doku zu unserem Container md. [[hackspace:infrastruktur: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 [[https://github.com/nodesource/distributions/blob/master/README.md#debinstall|NodeSource]], da Version aus Debian-Paketquellen zu alt: curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs === PostgreSQL === [[https://www.postgresql.org/download/linux/debian/|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 [[https://docs.hedgedoc.org/setup/manual-setup/|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. {{NEWPAGE>infrastruktur:wartung#pagetemplates:wartungstemplate:md|md }} {{topic>:infrastruktur:wartung?wartungsfenster +md &nodate&nouser&desc&table}} ~~NOCACHE~~