Logiciels et internet

Auto-héberger ses sites sans ouvrir de port avec Cloudflare

Webmaster
· 4 min de lecture · Aucun commentaire

Héberger ses sites web chez soi, sur un petit serveur, c’est tentant : pas d’abonnement à payer chaque mois, et la maîtrise totale de sa machine. Mais la méthode classique a un gros défaut : il faut ouvrir des ports sur sa box et exposer directement son adresse IP sur Internet, avec tous les risques que cela comporte.

Il existe une solution plus simple et plus sûre : le tunnel Cloudflare. C’est le serveur lui-même qui établit une connexion vers Cloudflare. Les visiteurs passent par Cloudflare, sans jamais atteindre directement votre box. Résultat : aucun port à ouvrir, une adresse IP qui reste cachée, et le HTTPS géré automatiquement, gratuitement.

Je viens de migrer mon blog de mon VPS vers un mini PC installé chez moi, sous Debian 13 avec ISPConfig 3. Voici, étape par étape, comment faire la même chose avec vos sites.

Dans les exemples, remplacez monsite.fr par votre nom de domaine.

1. ISPConfig : préparer le site

Dans Sites Web → Ajouter un nouveau site, ajoutez votre nom de domaine :
  • Domaine : monsite.fr, avec l’Auto-Sous-domaine www
  • SSL / Let’s Encrypt : ne pas cocher. Votre serveur n’aura pas besoin de certificat : c’est Cloudflare qui assure le HTTPS pour les visiteurs.
  • Onglet Redirection : laissez Rewrite HTTP to HTTPS décoché (c’est le cas par défaut). S’il était coché, le site tournerait en boucle de redirection une fois derrière le tunnel.
Dans l’onglet Options du site, ajoutez dans Apache Directives : 

SetEnvIf X-Forwarded-Proto "https" HTTPS=on

Le tunnel arrive en HTTP sur Apache : cette ligne indique à PHP que le visiteur est bien en HTTPS. Sans elle, certaines applications (WordPress, par exemple) génèrent des liens en http:// ou redirigent en boucle.

Ajoutez le domaine sans www, pour qu’il redirige vers votre site. Dans Sites web→ Alias → Ajouter un nouvel alias:
  • Domaine : monsite.fr
  • Site web parent: www.monsite.fr
  • Type de redirection : R=301,L
  • Chemin de redirection: https://www.monsite.fr/
  • Auto-Subdomain : None

Les visiteurs qui tapent monsite.fr sont ainsi redirigés vers www.monsite.fr. Votre site n’est accessible que sous une seule adresse, ce qui est préférable pour le référencement.


Transférez votre site. Le plus simple est le SFTP : créez un accès dans Sites → utilisateur SSH/SFTP, puis connectez-vous avec FileZilla (protocole SFTP, port 22) et déposez vos fichiers dans le dossier web. Si votre site utilise une base de données, créez-la dans Sites → Base de données et importez-y votre sauvegarde.

Facultatif : tester en local avant la mise en ligne. Sur votre ordinateur, ajoutez dans le fichier /etc/hosts :

IP_LOCALE_DU_SERVEUR   monsite.fr www.monsite.fr

Ouvrez le site dans votre navigateur pour vérifier qu’il fonctionne, puis supprimez cette ligne, sinon votre ordinateur continuera d’aller sur le serveur local au lieu du site en ligne.

2. Serveur : afficher la vraie IP des visiteurs

Avec le tunnel, Apache voit toutes les visites arriver de 127.0.0.1. Ce réglage lui permet de récupérer la vraie adresse des visiteurs (utile pour les statistiques et les journaux).

À faire une seule fois, même si vous avez plusieurs sites. En SSH sur votre serveur :

sudo a2enmod remoteip
sudo nano /etc/apache2/conf-available/remoteip.conf

Collez les lignes suivantes :

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 127.0.0.1

Enregistrez et quittez, puis :

sudo a2enconf remoteip && sudo systemctl reload apache2

3. Cloudflare : publier le site

Ajouter le domaine

Ajoutez votre domaine dans Cloudflare (offre gratuite). Cloudflare importe automatiquement les enregistrements DNS existants.

Vérifiez les enregistrements importés et laissez-les en DNS only (nuage gris). Votre site reste ainsi servi par votre ancien hébergement pendant la transition.
Chez l’hébergeur de votre nom de domaine (OVH, LWS…) :
  • vérifiez que le DNSSEC est désactivé. S’il est actif, désactivez-le et attendez quelques heures avant de continuer, sinon votre domaine deviendra inaccessible ;
  • remplacez les serveurs DNS de l’hébergeur par les deux serveurs fournis par Cloudflare.
Patientez jusqu’à ce que le domaine passe en Actif dans Cloudflare : de quelques minutes à quelques heures (jusqu’à 24 h).

Créer le tunnel (une seule fois)

Allez dans Réseau → Tunnels et créez un tunnel. Un seul tunnel suffit pour tous vos sites.

Choisissez votre système, exécutez en SSH sur votre serveur les commandes affichées, et attendez que le statut passe à Sain.

Régler le HTTPS

Une fois le domaine actif, allez dans SSL/TLS → Certificats de périphérie et activez Toujours utiliser HTTPS ainsi que Réécritures HTTPS automatiques.


Basculer le site

Les deux étapes suivantes coupent le site quelques minutes : enchaînez-les.

Dans la gestion du domaine, section DNS → Enregistrements, supprimez les enregistrements A (ou CNAME) de monsite.fr et de www, ceux qui pointent vers l’ancien hébergement. Ne touchez pas aux enregistrements MX et TXT, qui servent à la messagerie.

Retournez dans la gestion du tunnel, cliquez sur celui que vous avez créé, puis Ajouter une route → Application publiée, et ajoutez ces deux routes :

  • sous-domaine : vide, domaine : monsite.fr, URL du service : http://localhost:80
  • sous-domaine : www, domaine : monsite.fr, URL du service : http://localhost:80

Cloudflare crée automatiquement les nouveaux enregistrements DNS.

4. Tester

Depuis un téléphone en 4G (Wi-Fi coupé), ouvrez https://monsite.fr et https://www.monsite.fr, puis vérifiez :

  • l’affichage des pages et des images
  • le cadenas dans la barre d’adresse
  • l’accès à l’administration de votre site

En cas de problème :

  • Erreur 1033: le tunnel n’est pas connecté. Vérifiez sur le serveur avec systemctl status cloudflared
  • Erreur 502: vérifiez l’URL du service ( http://localhost:80).
  • Page par défaut d’Apache: le domaine ne correspond à aucun site dans ISPConfig. Vérifiez que le site est créé avec www.monsite.fr et que l’alias monsite.fr est bien ajouté.
  •  Trop de redirections: vérifiez que Rewrite HTTP to HTTPS est décoché dans ISPConfig et que la directive SetEnvIf est bien présente.

Écrire un commentaire

Vérification anti-spam*

Fil RSS des commentaires de cet article