Skip to content

HackMD configuration

Marc Farré edited this page Sep 26, 2017 · 1 revision

Install et config de HackMd

Repose sur node.js

Installation avec docker

Pré requis

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

sudo apt install docker-compose

Installation du docker

sudo su
mkdir /var/www/docker
cd /var/www/docker	
git clone https://github.com/hackmdio/docker-hackmd.git
cd docker-hackmd
docker-compose up

Configurer le reverse proxy avec apache :

ProxyPass / http://83.166.144.90:3000/
ProxyPassReverse / http://83.166.144.90:3000/
ProxyRequests Off
ProxyPreserveHost Off

Lancement au démarrage de la machine

sudo nano /etc/rc.local

Rajouter cette ligne :

docker-compose -f /var/www/docker/docker-hackmd/docker-compose.yml up &

En vrac, ma tentative infructueuse d'install sans docker

Faire en entier cette notice : https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04 Et remplacer tout ce qui est nvm install 6.0.0 et après par 6.11.1 (pas la dernière version)

su ubuntu cd /var/www/wiki.communecter.org

git clone https://github.com/hackmdio/hackmd.git cd hackmd

sudo npm install -g node-gyp; sudo npm link node-gyp sudo npm install -g webpack; sudo npm link webpack sudo npm install -g common-chunks-webpack-plugin; sudo npm link common-chunks-webpack-plugin sudo npm install -g extract-text-webpack-plugin; sudo npm link extract-text-webpack-plugin sudo npm install -g i18n-webpack-plugin; sudo npm link i18n-webpack-plugin sudo npm install -g compression-webpack-plugin; sudo npm link compression-webpack-plugin sudo npm install -g html-webpack-plugin; sudo npm link html-webpack-plugin sudo npm install -g copy-webpack-plugin; sudo npm link copy-webpack-plugin

sudo ./bin/setup

nano config.json "domain": "test.make.social", "db": { "username": "hackmd", "password": "NSx^1SeT@byuTfYoOXBd", "database": "hackmd", "host": "localhost", "port": "3306", "dialect": "mysql"

NODE_ENV=production HMD_PROTOCOL_USESSL=true DEBUG=false HMD_ALLOW_ORIGIN=localhost,wiki.communecter.org,test.make.social HMD_DB_URL=mysql://localhost:3306/hackmd

sudo npm run build

sudo ufw allow 3000

sudo nodejs app.js

http://test.make.social:3000/

Puis, l'ajouter au démarrage du serveur :

NODE_ENV=production HMD_PROTOCOL_USESSL=true DEBUG=false HMD_ALLOW_ORIGIN=localhost,wiki.communecter.org,test.make.social HMD_DB_URL=mysql://localhost:3306/hackmd nodejs /var/www/test.make.social/public_html/app.js


https://github.com/hackmdio/hackmd/issues/86


Ceci est le cache Google de https://blog.matuni.xyz/archives/2017/05. Il s'agit d'un instantané de la page telle qu'elle était affichée le 10 mai 2017 07:45:36 GMT. La page actuelle peut avoir changé depuis cette date. En savoir plus Version intégraleVersion en texte seulAfficher la sourceAstuce : Pour trouver rapidement votre terme de recherche sur cette page, appuyez sur Ctrl+F ou sur ⌘+F (Mac), puis utilisez la barre de recherche. Archives may 2017 Mettre en place Hackmd sur son propre serveur

Written by Mathias B. / 09 may 2017 / no comments Salut à tou-te-s,

J'écris cet article « bloc notes » car je viens de terminer l'installation de Hackmd pour Unixcorn, que par expérience je sais que ce n'est pas un logiciel des plus simples à installer et que ça fera un peu de documentation francophone. Préparer le serveur pour Hackmd

Ici ce sera ce que vous voulez, un VPS, un conteneur sur votre hyperviseur ou même un serveur dédié. Sachez qu'une fois l'installation passée Hackmd ne consomme que très peu de ressources. Deux cœurs, 2 Go de mémoire vive et un peu de bande passante suffiront amplement à combler ses besoins.

Ici j'ai créé un conteneur LXC non privilégié Debian 8 Jessie, sur lequel j'ai installé NodeJs. Installation de NodeJs

Pour faire ça de la manière la plus confortable possible il est bon de passer par les dépôts officiels du projet. Pour ce faire lancez ce petit script proposé :

curl -sL https://deb.nodesource.com/setup_7.x | bash -

Il vous ajoute les dépôts, la clé de signature des paquets et recharge le cache. Vous n'avez plus qu'à lancer l'installation :

apt install nodejs build-essential

Pour information le paquet build-essential est nécessaire pour l'installation des dépendances du projet qui sera réalisée un peu plus tard. Préparer la base de donnée J'utilise ici le serveur de base de donnée PostgreSQL. Il tourne sur un autre conteneur auquel celui, créé précédemment, se connecte par un réseau local virtuel. Créons donc l'utilisateur nécessaire, sa base de donnée et attribuons lui un mot-de-passe :

su - postgres psql CREATE USER hackmd; ALTER USER hackmd WITH PASSWORD 'tonsupermotdepasse'; CREATE DATABASE hackmd; \q

Pour permettre l'accès à cette base par le réseau il faut adapter le fichier pb_hba.conf en y ajoutant la ligne suivante :

host hackmd hackmd adresse.ip.de.hackmd/0 md5

Une fois fait ne pas oublier de relancer PostgreSQL avec un petit :

service postgresql restart

Installation des dépendances

Le développeur d'Hackmd a bien fait les choses, l'installation en elle même est très simple. Il faut cloner le dépôt et exécuter le script d'installation fournit, ce qui se résume aux étapes suivantes :

git clone https://github.com/hackmdio/hackmd.git cd hackmd ./bin/setup

Configuration d'Hackmd

Voilà venu le moment de mettre le nez dans les fichiers de configuration. Éditez le fichier config.json et faites en sorte de renseigner correctement les lignes suivantes :

"production": { "domain": "pad.unixcorn.org", "db": { "username": "hackmd", "password": "votresupermotdepasee", "database": "hackmd", "host": "adresse.ip.de.postgresql", "port": "5432", "dialect": "postgres" },

Vous devez ensuite noter les variables d'environnement nécessaires au lancement des directives NodeJs, ici voici celles que j'utilise : NODE_ENV=production HMD_PROTOCOL_USESSL=true Build et lancement du serveur

On génère les assets avec la commande suivante :

NODE_ENV=production HMD_PROTOCOL_USESSL=true npm run build

L'opération peut prendre beaucoup de temps suivant la configuration matérielle de votre machine, soyez patient-e. Une fois terminé vous pouvez lancer le serveur avec la commande qui suit :

NODE_ENV=production HMD_PROTOCOL_USESSL=true nodejs app.js

Plus qu'à configurer votre reverse proxy, ici je donnerais l'exemple de configuration d'Nginx. Proxy Nginx

L'exemple suivant prends en compte une redirection vers HTTPS par défaut, l'intégration de certificats Let's Encrypt fournis par l'utilitaire acme.sh ainsi que des paramètres TLS avancés (cyphers, HSTS...).

server {
  listen 80;
 listen [::]:80;
  server_name votresuper.nomdedomaine.lol;

  # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name votresuper.nomdedomaine.lol;

  # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
  ssl_certificate /root/.acme.sh/pad.unixcorn.org_ecc/fullchain.cer;
  ssl_certificate_key /root/.acme.sh/pad.unixcorn.org_ecc/pad.unixcorn.org.key;
  ssl_session_timeout 1d;
  ssl_session_cache shared:SSL:50m;
 ssl_session_tickets off;

  # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  # modern configuration. tweak to your needs.
  ssl_protocols TLSv1.2;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;

  # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
  add_header Strict-Transport-Security max-age=15768000;

  # OCSP Stapling ---    # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;

  ## verify chain of trust of OCSP response using Root CA and Intermediate certs
  ssl_trusted_certificate /root/.acme.sh/pad.unixcorn.org_ecc/ca.cer;

  location / {
  proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header Host $http_host;
   proxy_set_header X-NginX-Proxy true;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host;
   proxy_http_version 1.1;
   proxy_pass http://votre.ip.serveur.hackmd:3000;
   proxy_cache_bypass $http_upgrade;
      proxy_redirect off;
  }
}

Testez votre configuration, rechargez là et hop terminé !

Clone this wiki locally