anciennement SPACE OASIS

Dons & participations financières en 2019

Comme chaque année, depuis des années, 2019 fut une année de choix... Voici donc mes dons cette année :

  • Livre “Inégalités en France 2019”
  • GMIC
  • Fedilab / Mastalab
  • APRIL
  • digiKam
  • Framasoft
  • Wikidébats
  • Pompiers
  • Internet Archive (archive.org)
  • Médecins sans frontières
  • Greenpeace
  • Handicap International
  • Unicef
  • WWF
  • Croix Rouge Française

Convertir une page de dokuwiki en markdown

Voilà quelques temps déjà je me suis décidé à maximiser progressivement mon utilisation de la syntaxe Markdown, c'est pourquoi j'ai installé il y a quelques mois le filtre adapté pour Drupal (pour rappel le CMS utilisé pour réaliser ce blog). Après m'être aussi familiarisé avec lui sur le réseau social diaspora* et la rédaction de documentations professionnelles je poursuis cet effort en prévoyant de migrer progressivement de DokuWiki vers Wiki.js (qui permet de rédiger directement des pages de wiki en markdown), à cet effet je me suis posé la question de savoir s'il était possible à minima de récupérer certains articles sans avoir à les réécrire. Et c'est effectivement le cas. Je vous expose donc une méthode manuelle reposant sur l'utilitaire de conversion en ligne de commande Pandoc.

Il m'aurait été possible de décrire comment convertir tout le wiki puisque dokuwiki stocke les pages sous forme de fichiers, mais ce n'est pas l'objet de ce tutoriel qui se veut plus simple à comprendre et généralisable à d'autres systèmes de wiki sans avoir nécessairement accès au Back office du serveur.

Prérequis

  • Une instance de dokuwiki (forcément)
  • Pandoc 2.6 minimum

Installation de Pandoc sous Linux

Fedora / Redhat / Centos, etc.

sudo dnf update
sudo dnf install pandoc

Debian, Ubuntu, Raspbian, Mint, etc.

sudo apt update ; sudo apt upgrade
sudo apt install pandoc

Installation manuelle de la version la plus récente de Pandoc

Pour connaître le lien de téléchargement de la dernière version (actuellement 2.7.3) : c'est par ici

VERSION=2.7.3
TGZ=https://github.com/jgm/pandoc/releases/download/$VERSION/pandoc-$VERSION-linux.tar.gz
DEST=$HOME/.local
wget -O pandoc.tar.gz $TGZ
tar xvzf pandoc.tar.gz --strip-components 1 -C $DEST
cd $DEST/bin

Conversion de page dokuwiki en markdown

wget -O fichier.dokuwiki "http://mon.instance.dokuwiki/mapage?do=export_raw"
# ou wget -O fichier.dokuwiki "http://mon.insance.dokuwiki/?id=mapage&do=export_raw"
pandoc -f dokuwiki -t markdown fichier.dokuwiki -o fichier.md
# préférable dans le cas ou vous avez suivi l'étape d'installation manuelle :
# ./pandoc -f dokuwiki -t markdown fichier.dokuwiki -o fichier.md

Installer un certificat électronique sur un serveur web derrière un reverse proxy avec ubuntu, apache et certbot

Si vous avez plusieurs serveurs serveurs web sur un votre réseau local et que vous souhaitez que plusieurs d'entre eux soient accessibles depuis internet par le même port (au hasard 80 ou 443 par exemple), il est fort probable que vous fassiez appel à un reverse-proxy, qui est un moyen somme toute assez commode pour y parvenir.

De même si vous souhaitez chiffrer le contenu publié en SSL/TLS, certbot est devenu ces dernières années un incontournable, de par sa simplicité et sa gratuité.

Faire que les deux fonctionnent nécessite bien sûr une configuration particulaire, voici donc comment procéder dans le cas ou vous avez créé un sous-domaine (A record) chez votre fournisseur de noms de domaine :

  • le nom du sous domaine sera : sous.domaine.com
  • l'adresse ip du serveur sur le réseau local : 192.168.1.123
  • l'adresse ip du serveur web dans la DMZ : 192.168.1.210
  • le port de l'application sur le serveur web local : 9000
  • la racine des fichiers du serveur web local : /racine/des/fichiers/de/mon/serveurweb (généralement sous ubuntu ou debian : /var/www ou /var/www/html etc.)

Du côté de la machine qui va servir de proxy inverse (reverse proxy) accessible par internet (en DMZ) :

Créer un nouveau fichier de configuration pour apache :

touch /etc/apache2/sites-available/mon-reverse-proxy1.conf
nano /etc/apache2/sites-available/mon-reverse-proxy1.conf

Et y ajouter :

# Si ce n'est déjà fait (peu probable par défaut...)
# NameVirtualHost *:80
# Listen 80
# NameVirtualHost *:443
# Listen 443
# Surtout :

# Nécessaire pour la validation du certificat électronique
<VirtualHost *:80>
ServerName nom.de.sous.domaine
ServerAdmin mon.adresse@e.mail
    <LocationMatch "/*">
    order allow,deny
    allow from all
    Satisfy any
    ProxyPass http://192.168.1.123
    ProxyPassReverse http://192.168.1.123
    </LocationMatch>
</virtualHost>

<VirtualHost *:443>
ServerName nom.de.sous.domaine
ServerAdmin mon.adresse@e.mail
ProxyRequests Off
ProxyPreserveHost On
SSLEngine on
SSLProxyEngine On
SSLProxyCheckPeerExpire On
SSLProxyVerifyDepth     10
SSLCertificateFile      /etc/letsencrypt/live/videos.espitallier.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/videos.espitallier.net/privkey.pem
    <LocationMatch "/*">
    order allow,deny
    allow from all
    Satisfy any
    ProxyPass http://192.168.1.123:9000
    ProxyPassReverse http://192.168.1.123:9000
    </LocationMatch>
</virtualHost>

Enregistrer le fichier puis :

sudo a2ensite mon-reverse-proxy1
sudo service apache2 restart

Du côté du serveur web de l'application (192.168.1.123) pour créer le certificat :

# Si certbot n'est pas encore installé :
# sudo apt install certbot # dans le cas de debian ou ubuntu par exemple
# ensuite
sudo certbot certonly

Répondre aux questions :

  • 2: Place files in webroot directory (webroot)
  • Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): sous.domaine.com
  • Input the webroot for sous.domaine.com: (Enter 'c' to cancel): /racine/des/fichiers/de/mon/serveurweb

Automatiser le renouvellement du certificat

Création du script

sudo nano /usr/local/sbin/certbot-renew.sh

Auquel on ajoute

sudo certbot -q renew
# Par clé SSH et à supposer que le dossier 192.168.1.210:/etc/letsencrypt/live/sous.domaine.com/ a été créé
sudo scp /etc/letsencrypt/live/sous.domaine.com/fullchain.pem sudouser@192.168.1.210:/etc/letsencrypt/live/sous.domaine.com/
sudo scp /etc/letsencrypt/live/sous.domaine.com/privkey.pem sudouser@192.168.1.210:/etc/letsencrypt/live/sous.domaine.com/

On le rend exécutable

chmod +x /usr/local/sbin/certbot-renew.sh

Autoriser la copie par SSH sans mot de passe

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh root@192.168.1.100 'cat >> .ssh/authorized_keys'

Planification du script

sudo crontab -e
# Une fois par mois
00   5   *   1   *           /usr/local/sbin/certbot-renew.sh

Pages

Subscribe to ESPITALLIER.NET RSS