Ce tutoriel trouve son utilité dans un environnement répressif, dans lequel il pourrait être utile de cacher l’adresse IP réelle d’un serveur web.
Dans ce tutoriel, l’architecture que nous allons monter consiste à monter sur un VPS un conteneur docker contenant le CMS WordPress, associé à un conteneur TOR hidden service. Le conteneur WordPress n’exposant aucun port sur Internet, il ne peut être joint avec une adresse IP v4 ou v6.
Le conteneur TOR hidden service fera l’interface entre le monde des clients TOR et le conteneur WordPress.
Le résultat que nous allons obtenir est un site web WordPress accessible uniquement via TOR sur une adresse en .onion. Ce site web n’aura pas de nom de domaine au sens classique du terme (uniquement une adresse onion TOR) et donc n’aura pas besoin de quémander un certificat https à Letsencrypt (la sécurité des accès sera assurée par le réseau TOR lui-même).
Installation
L’installation se fait grâce à deux conteneurs docker, il faut donc que votre serveur soit prêt à lancer des services docker. Si ce n’est pas le cas, vous trouverez le guide d’installation docker sous Ubuntu ici et celui de Devuan ici.
Dans un répertoire dédié, créons le fichier docker-compose.yml contenant (remplacer votre_mot_de_passe par votre mot de passe aux 3 endroits) :
services:
wordpress_db:
image: mariadb:latest
container_name: wordpress_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: votre_mot_de_passe
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: votre_mot_de_passe
volumes:
- ./db_data:/var/lib/mysql
networks:
- tor_network
wordpress:
image: wordpress:latest
container_name: wordpress_app
restart: unless-stopped
depends_on:
- wordpress_db
environment:
WORDPRESS_DB_HOST: wordpress_db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: votre_mot_de_passe
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wordpress_data:/var/www/html
networks:
- tor_network
tor:
image: bariskisir/hiddenservicereverseproxy
container_name: tor_proxy
restart: unless-stopped
depends_on:
- wordpress
environment:
APP_IP_DOMAIN: wordpress
APP_PORT: 80
volumes:
# Persistance des clés .onion (ne pas perdre ce volume !)
- ./tor_data:/var/lib/tor
networks:
- tor_network
user: root
entrypoint: ["/bin/sh", "-c"]
command:
- |
chown -R tor:tor /var/lib/tor
chmod 700 /var/lib/tor
exec /entrypoint.sh
networks:
tor_network:
driver: bridge
volumes:
db_data:
wordpress_data:
tor_data: # Ce volume contient tes clés privées .onion
On lance ensuite ce service par la commande classique :
docker compose up -d
Lors du premier lancement l’adresse .onion de votre site web apparaît dans le résultat de la commande :
docker logs tor_proxy
Elle est également disponible (et par la suite aussi) dans le fichier ./tor_data/hidden_service/hostname
Avec un navigateur TOR (TOR Browser ou Brave en mode TOR), ouvrez votre site .onion pour faire la configuration initiale de WordPress

Choisissez le français puis cliquez sur « Continuer »

Mettez un titre à votre site puis choisissez un identifiant (ie un nom d’auteur pour bloguer) et son mot de passe. L’adresse email est obligatoire pour pouvoir cliquer sur « Installer WordPress ».

Voilà, c’est installé. Il reste à cliquer sur « Se connecter » et renseigner le login et le mot de passe qu’on a donné.

On arrive alors sur le tableau de bord de configuration classique de WordPress.

A partir de là, on sort du scope de l’article car l’utilisation de WordPress nécessite un minimum d’investissement personnel. Si vous souhaitez apprendre les arcanes de l’utilisation de WordPress, il faut prendre un bon bouquin, comme celui-ci :
Voilà, vous avez votre site WordPress accessible uniquement via TOR.

