2024-12-28 22:55:49 +00:00

1970 lines
70 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="fr" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="De la doc, encore de la doc">
<meta name="author" content="Djeex">
<link rel="canonical" href="https://docs.djeex.fr/serveex/cloudflare/">
<link rel="prev" href="../authentik/">
<link rel="next" href="../uptime-kuma/">
<link rel="icon" href="/img/logo/book_pixel.svg">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.27">
<title>Cloudflare Zero Trust - Djeex Lab</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.6543a935.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<style>:root{--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 9.5A2.5 2.5 0 0 0 9.5 12a2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 12 9.5m0 3.5a1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1 1 1 0 0 1-1 1m0-3.5A2.5 2.5 0 0 0 9.5 12a2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 12 9.5m0 3.5a1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1 1 1 0 0 1-1 1m0-11A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 14c-2.63 0-5-1.57-6-4a6.505 6.505 0 0 1 8.5-3.5A6.52 6.52 0 0 1 18 12c-1 2.43-3.37 4-6 4m0-6.5A2.5 2.5 0 0 0 9.5 12a2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 12 9.5m0 3.5a1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1 1 1 0 0 1-1 1Z"/></svg>');}</style>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../stylesheets/extra.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-SN71Y331VQ"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-SN71Y331VQ",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-SN71Y331VQ",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>
<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="Cloudflare Zero Trust - Djeex Lab" >
<meta property="og:description" content="De la doc, encore de la doc" >
<meta property="og:image" content="https://docs.djeex.fr/assets/images/social/serveex/cloudflare.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="https://docs.djeex.fr/serveex/cloudflare/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="Cloudflare Zero Trust - Djeex Lab" >
<meta name="twitter:description" content="De la doc, encore de la doc" >
<meta name="twitter:image" content="https://docs.djeex.fr/assets/images/social/serveex/cloudflare.png" >
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="cyan" data-md-color-accent="cyan">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#cloudflare-zero-trust" class="md-skip">
Aller au contenu
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="En-tête">
<a href="../.." title="Djeex Lab" class="md-header__button md-logo" aria-label="Djeex Lab" data-md-component="logo">
<img src="/img/logo/book_pixel.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Djeex Lab
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Cloudflare Zero Trust
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Rechercher" placeholder="Rechercher" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Recherche">
<button type="reset" class="md-search__icon md-icon" title="Effacer" aria-label="Effacer" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initialisation de la recherche
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://git.djeex.fr/Djeex/DjeexLab" title="Aller au dépôt" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z"/></svg>
</div>
<div class="md-source__repository">
Djeex/DjeexLab
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Djeex Lab" class="md-nav__button md-logo" aria-label="Djeex Lab" data-md-component="logo">
<img src="/img/logo/book_pixel.png" alt="logo">
</a>
Djeex Lab
</label>
<div class="md-nav__source">
<a href="https://git.djeex.fr/Djeex/DjeexLab" title="Aller au dépôt" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z"/></svg>
</div>
<div class="md-source__repository">
Djeex/DjeexLab
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Bienvenue sur Djeex Lab
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-ellipsis">
Généralités
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Généralités
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nat/" class="md-nav__link">
<span class="md-ellipsis">
NAT & DHCP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../dns/" class="md-nav__link">
<span class="md-ellipsis">
Zone DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../samba/" class="md-nav__link">
<span class="md-ellipsis">
Samba
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Serveex
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Serveex
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../introduction/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<span class="md-ellipsis">
Le coeur du serveur
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Le coeur du serveur
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../installation/" class="md-nav__link">
<span class="md-ellipsis">
Debian 12
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../docker/" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../swag/" class="md-nav__link">
<span class="md-ellipsis">
SWAG
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" checked>
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
<span class="md-ellipsis">
La sécurité
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
La sécurité
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../wireguard/" class="md-nav__link">
<span class="md-ellipsis">
Wireguard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../authentik/" class="md-nav__link">
<span class="md-ellipsis">
Authentik
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Cloudflare Zero Trust
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Cloudflare Zero Trust
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table des matières">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table des matières
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration-cloudflare" class="md-nav__link">
<span class="md-ellipsis">
Configuration Cloudflare
</span>
</a>
<nav class="md-nav" aria-label="Configuration Cloudflare">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#zone-dns" class="md-nav__link">
<span class="md-ellipsis">
Zone DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cle-api" class="md-nav__link">
<span class="md-ellipsis">
Clé API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cloudflare-zero-trust_1" class="md-nav__link">
<span class="md-ellipsis">
Cloudflare Zero Trust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration-de-swag" class="md-nav__link">
<span class="md-ellipsis">
Configuration de Swag
</span>
</a>
<nav class="md-nav" aria-label="Configuration de Swag">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configuration-du-tunnel" class="md-nav__link">
<span class="md-ellipsis">
Configuration du tunnel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration-de-cloudflare-real-ip" class="md-nav__link">
<span class="md-ellipsis">
Configuration de Cloudflare Real IP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docker-compose" class="md-nav__link">
<span class="md-ellipsis">
Docker compose
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#gerer-plusieurs-tunnels-pour-plusieurs-serveurs" class="md-nav__link">
<span class="md-ellipsis">
Gérer plusieurs tunnels pour plusieurs serveurs
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" >
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
<span class="md-ellipsis">
Monitoring
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4">
<span class="md-nav__icon md-icon"></span>
Monitoring
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../uptime-kuma/" class="md-nav__link">
<span class="md-ellipsis">
Uptime-Kuma
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dozzle/" class="md-nav__link">
<span class="md-ellipsis">
Dozzle
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
<label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
<span class="md-ellipsis">
Media & Seedbox
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5">
<span class="md-nav__icon md-icon"></span>
Media & Seedbox
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../plex/" class="md-nav__link">
<span class="md-ellipsis">
Plex
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../qbittorrent/" class="md-nav__link">
<span class="md-ellipsis">
Qbittorrent
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
<label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
<span class="md-ellipsis">
Cloud Drive & Photos
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6">
<span class="md-nav__icon md-icon"></span>
Cloud Drive & Photos
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../immich/" class="md-nav__link">
<span class="md-ellipsis">
Immich
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nextcloud/" class="md-nav__link">
<span class="md-ellipsis">
Nextcloud
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" >
<label class="md-nav__link" for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
<span class="md-ellipsis">
Développement
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7">
<span class="md-nav__icon md-icon"></span>
Développement
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../code-server/" class="md-nav__link">
<span class="md-ellipsis">
Code-Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../gitea/" class="md-nav__link">
<span class="md-ellipsis">
Gitea
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../it-tools/" class="md-nav__link">
<span class="md-ellipsis">
IT Tools
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8" >
<label class="md-nav__link" for="__nav_3_8" id="__nav_3_8_label" tabindex="0">
<span class="md-ellipsis">
Applications utiles
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8">
<span class="md-nav__icon md-icon"></span>
Applications utiles
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../filebrowser/" class="md-nav__link">
<span class="md-ellipsis">
File Browser
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../adguard/" class="md-nav__link">
<span class="md-ellipsis">
Adguard Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vaultwarden/" class="md-nav__link">
<span class="md-ellipsis">
Vaultwarden
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table des matières">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table des matières
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration-cloudflare" class="md-nav__link">
<span class="md-ellipsis">
Configuration Cloudflare
</span>
</a>
<nav class="md-nav" aria-label="Configuration Cloudflare">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#zone-dns" class="md-nav__link">
<span class="md-ellipsis">
Zone DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cle-api" class="md-nav__link">
<span class="md-ellipsis">
Clé API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cloudflare-zero-trust_1" class="md-nav__link">
<span class="md-ellipsis">
Cloudflare Zero Trust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration-de-swag" class="md-nav__link">
<span class="md-ellipsis">
Configuration de Swag
</span>
</a>
<nav class="md-nav" aria-label="Configuration de Swag">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configuration-du-tunnel" class="md-nav__link">
<span class="md-ellipsis">
Configuration du tunnel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration-de-cloudflare-real-ip" class="md-nav__link">
<span class="md-ellipsis">
Configuration de Cloudflare Real IP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docker-compose" class="md-nav__link">
<span class="md-ellipsis">
Docker compose
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#gerer-plusieurs-tunnels-pour-plusieurs-serveurs" class="md-nav__link">
<span class="md-ellipsis">
Gérer plusieurs tunnels pour plusieurs serveurs
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://git.djeex.fr/Djeex/DjeexLab/src/branch/main/docs/files/serveex/cloudflare.md" title="Editer cette page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M441 58.9 453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2 344 121.9l46.1 46.1-134.3 134.2c-2.9 2.9-6.5 5-10.4 6.1L186.9 325l16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25 175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25c-28.1-28.1-73.7-28.1-101.8 0zM88 64c-48.6 0-88 39.4-88 88v272c0 48.6 39.4 88 88 88h272c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24v112c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40h112c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z"/></svg>
</a>
<h1 id="cloudflare-zero-trust">Cloudflare Zero Trust</h1>
<div class="admonition abstract">
<p class="admonition-title">Objectifs</p>
<ul>
<li>Comprendre le principe des Tunnels Cloudflare</li>
<li>Paramétrer son compte cloudflare</li>
<li>Paramétrer SWAG</li>
<li>Gérer plusieurs tunnels</li>
</ul>
</div>
<p><img alt="cloudfare_tunnels" src="/img/serveex/cloudflared.svg" /></p>
<h2 id="introduction">Introduction</h2>
<hr />
<p>L'architecture <em>Zero Trust</em> est la pratique consistant à concevoir des systèmes fondés sur le principe de <strong>« ne jamais faire confiance</strong>, <strong>toujours vérifier »</strong>, par opposition au principe traditionnel de <strong>« confiance, mais vérifier »</strong>. Ce concept est devenu très populaires récemment, à la suite des attaques toujours plus nombreuses concernant les données des utilisateurs. C'est un concept très large, nous nous concentrerons sur lapplication du <em>Zero Trust</em> aux services Web que nous hébergeons.</p>
<p>Les <em>tunnels Cloudflare</em> offrent un moyen simple d'arriver au <em>Zero Trust</em>, en s'appuyant sur <a href="/serveex/swag">SWAG</a> et <a href="/serveex/authentik">Authentik</a>.</p>
<p>Pour le dire simplement, les Tunnels Cloudflare permettent notamment de :</p>
<ul>
<li>Masquer l'IP de votre serveur (et donc de votre box s'il est hébergé chez vous).</li>
<li>D'authentifier le traffic.</li>
<li>De bénéficier des protection de Cloudflare (attaques DDOS, etc, blacklist, requêtes malveillantes, etc...).</li>
<li>De bénéficier du CDN, c'est à dire du serveur de cache de Cloudlfare, qui permet d'augmenter les performances de vos sites web.</li>
<li>De ne plus avoir besoin de l'ouverture de ports de votre routeur pour les services exposés par SWAG.</li>
</ul>
<p>Ici, nous expliquerons comment associer SWAG aux tunnels Cloudflare.</p>
<div class="admonition warning">
<p class="admonition-title">Limitations</p>
<ul>
<li>N'utilisez pas les tunnels Cloudflare pour exposer un serveur mail</li>
<li>N'utilisez pas les tunnels Cloudflare pour exposer un service vidéo, comme Plex (si vous avez <a href="/serveex/plex">suivi ce guide</a>, Plex n'est pas exposé, c'est donc valide)</li>
<li>N'utilisez pas les tunnels Cloudflare pour utiliser le protocole bittorrent (si vous avez <a href="/serveex/qbittorrent">suivi ce guide</a>, tout est bon)</li>
</ul>
</div>
<h2 id="configuration-cloudflare">Configuration Cloudflare</h2>
<hr />
<h3 id="zone-dns">Zone DNS</h3>
<p>Avant toute chose, vous devez définir Cloudflare comme gestionnaire de votre <a href="../../dns">zone DNS</a>. Si vous avez réservé votre nom de domaine chez Cloudflare, c'est déjà le cas. Sinon, renseignez vous auprès de votre registrar sur comment ajouter des DNS externes. Cloudflare dispose d'<a href="https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/">une documentation expliquant pas à pas comment paramétrer une Zone DNS</a>, que vous ayez un domaine externe ou reservé chez Cloudflare.</p>
<p>Si vous avez qu'un seul serveur à protéger derrière Cloudflare, vous pouvez supprimer l'ensemble des enregistrement DNS existant, par défaut le domaine et tout ses sous-domaines seront directement redirigés vers le tunnel.</p>
<p>Si vous avez des sous-domaines à rediriger vers d'autres serveurs, vous pourrez toujours les déclarer dans la zone DNS à l'aide d'un enregistrement A.</p>
<p>Si vous avez plusieurs serveurs et donc plusieurs tunnels pour un meme domaine principal, <a href="http://192.168.7.80:8005/serveex/cloudflare/#gerer-plusieurs-tunnels-pour-plusieurs-serveurs">voyez ici</a>.</p>
<h3 id="cle-api">Clé API</h3>
<p>Pour commencer, nous devons créer un nouveau jeton API pour Cloudflare et récupérer nos identifiants de zone et de compte. </p>
<p>Sur le tableau de bord de Cloudflare, dans la page de présentation de votre domaine, vous pouvez voir les identifiants de <code>zone</code> et de <code>compte</code> en bas à droite de l'écran. Copiez précieusement ces deux identifiants.</p>
<p><img alt="id and account" src="/img/serveex/cf-id.png" /></p>
<p>Juste en dessous d'eux, il y a un lien intitulé <em>Obtenez votre jeton API</em>. Cliquez dessus. Le périmètre dont nous avons besoin pour le jeton doit inclure <code>Zone:DNS:Edit</code> et <code>Account:Cloudflare Tunnel:Edit</code>. Assurez-vous que votre page de création de token ressemble à celle illustrée dans la capture d'écran ci-dessous. </p>
<p><img alt="API token" src="/img/serveex/cf-token.png" /></p>
<p>Une fois que nous aurons enregistré, notre jeton sera affiché une fois. copiez le précieusement, car vous ne pourrez plus le revoir après la fermeture.</p>
<h3 id="cloudflare-zero-trust_1">Cloudflare Zero Trust</h3>
<p>Vous devez vous inscrire à <em>Cloudflare Teams</em> pour pouvoir accéder au tableau de bord <em>Zero Trust</em> qui gère les tunnels et les politiques d'accès. Il s'agit d'un service premium, mais ils proposent un forfait gratuit pour un maximum de 50 utilisateurs, ce qui devrait suffire pour votre Home Lab. Gardez à lesprit que puisquil sagit dune fonctionnalité premium, ils demandent une carte de crédit valide lors de linscription, mais avec le forfait gratuit, il n'y aura aucun frais. </p>
<p>Inscrivez-vous <a href="https://dash.teams.cloudflare.com/">via ce lien</a>.</p>
<h2 id="configuration-de-swag">Configuration de Swag</h2>
<hr />
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Nous partons du principe que vous avez le domaine <code>mondomaine.fr</code> avec les DNS qui pointent bien vers ceux de Cloudflare, comme vu précédemment.</p>
</div>
<p>SWAG dispose de deux <code>Docker Mods</code> permettant d'y intégrer :</p>
<ul>
<li><strong>Cloudflared</strong>, le conteneur qui permet de créer et de gérer les tunnels</li>
<li><strong>Cloudflared Real IP</strong>, un conteneur qui permet à SWAG d'obtenir la vraie source IP des requêtes depuis internet plutot que celle de Docker (ce qui pourrait entrer en conflit avec le mod de géolocalisatioN DBIP).</li>
</ul>
<p>Ces deux mods, fusionnés dans le conteneur de SWAG, nécessitent un peu de configuration.</p>
<h3 id="configuration-du-tunnel">Configuration du tunnel</h3>
<p>Pour configurer les tunnels, nous aurons besoin de créer un fichier <code>tunnelconfig.yml</code> auquel nous ferons appel dans le <code>compose.yaml</code> de SWAG.</p>
<div class="admonition tip">
<p class="admonition-title">Astuce pour les allergiques au terminal</p>
<p>Vous pouvez utiliser <a href="/serveex/filebrowser">File Browser</a> pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.</p>
</div>
<div class="language-console highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="gp">$ </span>sudo<span class="w"> </span>vi<span class="w"> </span>/docker/swag/config/tunnelconfig.yml
</span></code></pre></div></td></tr></table></div>
<p>Entrez en modification avec la touche <code>i</code> et collez la configuration ci-dessous</p>
<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span>
<span class="normal"><a href="#__codelineno-1-2">2</a></span>
<span class="normal"><a href="#__codelineno-1-3">3</a></span>
<span class="normal"><a href="#__codelineno-1-4">4</a></span>
<span class="normal"><a href="#__codelineno-1-5">5</a></span>
<span class="normal"><a href="#__codelineno-1-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="nt">ingress</span><span class="p">:</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mondomaine.fr</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="w"> </span><span class="nt">service</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">https://mondomaine.fr</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;*.mondomaine.fr&quot;</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="w"> </span><span class="nt">service</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">https://mondomaine..fr</span>
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">service</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">http_status:404</span>
</span></code></pre></div></td></tr></table></div>
<p>Appuyez sur <code>Echap</code> puis sauvegardez et quittez en tapant <code>:x</code> puis en appuyant sur <code>Entrée</code>.</p>
<h3 id="configuration-de-cloudflare-real-ip">Configuration de Cloudflare Real IP</h3>
<p>A présent, nous allons configurer le bon fonctionnement du mode <em>Cloudflare Real IP</em></p>
<p>Ouvrez le fichier <code>nginx.conf</code></p>
<p><div class="language-console highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="gp">$ </span>sudo<span class="w"> </span>vi<span class="w"> </span>/docker/swag/config/nginx/nginx.conf
</span></code></pre></div></td></tr></table></div>
Entrez en modification avec la touche <code>i</code> et collez la configuration ci-dessous à la fin de la section <code>http</code></p>
<p><div class="language-properties highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span>
<span class="normal"><a href="#__codelineno-3-2">2</a></span>
<span class="normal"><a href="#__codelineno-3-3">3</a></span>
<span class="normal"><a href="#__codelineno-3-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="na">real_ip_header</span><span class="w"> </span><span class="s">X-Forwarded-For;</span>
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="na">real_ip_recursive</span><span class="w"> </span><span class="s">on;</span>
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="na">include</span><span class="w"> </span><span class="s">/config/nginx/cf_real-ip.conf;</span>
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="na">set_real_ip_from</span><span class="w"> </span><span class="s">127.0.0.1;</span>
</span></code></pre></div></td></tr></table></div>
Appuyez sur <code>Echap</code> puis sauvegardez et quittez en tapant <code>:x</code> puis en appuyant sur <code>Entrée</code>.</p>
<h3 id="docker-compose">Docker compose</h3>
<p>Ouvrez Dockge, éditez la stack SWAG avec cette configuration</p>
<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-4-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-4-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-4-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-4-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-4-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-4-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-4-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-4-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-4-10">10</a></span>
<span class="normal"><a href="#__codelineno-4-11">11</a></span>
<span class="normal"><a href="#__codelineno-4-12">12</a></span>
<span class="normal"><a href="#__codelineno-4-13">13</a></span>
<span class="normal"><a href="#__codelineno-4-14">14</a></span>
<span class="normal"><a href="#__codelineno-4-15">15</a></span>
<span class="normal"><a href="#__codelineno-4-16">16</a></span>
<span class="normal"><a href="#__codelineno-4-17">17</a></span>
<span class="normal"><a href="#__codelineno-4-18">18</a></span>
<span class="normal"><a href="#__codelineno-4-19">19</a></span>
<span class="normal"><a href="#__codelineno-4-20">20</a></span>
<span class="normal"><a href="#__codelineno-4-21">21</a></span>
<span class="normal"><a href="#__codelineno-4-22">22</a></span>
<span class="normal"><a href="#__codelineno-4-23">23</a></span>
<span class="normal"><a href="#__codelineno-4-24">24</a></span>
<span class="normal"><a href="#__codelineno-4-25">25</a></span>
<span class="normal"><a href="#__codelineno-4-26">26</a></span>
<span class="normal"><a href="#__codelineno-4-27">27</a></span>
<span class="normal"><a href="#__codelineno-4-28">28</a></span>
<span class="normal"><a href="#__codelineno-4-29">29</a></span>
<span class="normal"><a href="#__codelineno-4-30">30</a></span>
<span class="normal"><a href="#__codelineno-4-31">31</a></span>
<span class="normal"><a href="#__codelineno-4-32">32</a></span>
<span class="normal"><a href="#__codelineno-4-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;3.8&quot;</span>
</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="nt">services</span><span class="p">:</span>
</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span>
</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4"></a><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lscr.io/linuxserver/swag:latest</span>
</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5"></a><span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">swag</span>
</span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6"></a><span class="w"> </span><span class="nt">cap_add</span><span class="p">:</span>
</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">NET_ADMIN</span>
</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8"></a><span class="w"> </span><span class="nt">env_file</span><span class="p">:</span>
</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">.env</span>
</span><span id="__span-4-10"><a id="__codelineno-4-10" name="__codelineno-4-10"></a><span class="w"> </span><span class="nt">environment</span><span class="p">:</span>
</span><span id="__span-4-11"><a id="__codelineno-4-11" name="__codelineno-4-11"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DOCKER_MODS=linuxserver/mods:swag-dbip|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-auto-reload|linuxserver/mods:universal-cloudflared|linuxserver/mods:swag-cloudflare-real-ip</span>
</span><span id="__span-4-12"><a id="__codelineno-4-12" name="__codelineno-4-12"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PUID=${PUID}</span>
</span><span id="__span-4-13"><a id="__codelineno-4-13" name="__codelineno-4-13"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PGID=${PGID}</span>
</span><span id="__span-4-14"><a id="__codelineno-4-14" name="__codelineno-4-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">TZ=Europe/Paris</span>
</span><span id="__span-4-15"><a id="__codelineno-4-15" name="__codelineno-4-15"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">URL=${DOMAIN}</span>
</span><span id="__span-4-16"><a id="__codelineno-4-16" name="__codelineno-4-16"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SUBDOMAINS=wildcard</span>
</span><span id="__span-4-17"><a id="__codelineno-4-17" name="__codelineno-4-17"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">VALIDATION=dns</span>
</span><span id="__span-4-18"><a id="__codelineno-4-18" name="__codelineno-4-18"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DNSPLUGIN=${PLUGIN}</span>
</span><span id="__span-4-19"><a id="__codelineno-4-19" name="__codelineno-4-19"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">EMAIL=${EMAIL}</span>
</span><span id="__span-4-20"><a id="__codelineno-4-20" name="__codelineno-4-20"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CF_ZONE_ID=${ZONE_ID}</span>
</span><span id="__span-4-21"><a id="__codelineno-4-21" name="__codelineno-4-21"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CF_ACCOUNT_ID=${ACCOUNT_ID}</span>
</span><span id="__span-4-22"><a id="__codelineno-4-22" name="__codelineno-4-22"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CF_API_TOKEN=${API_TOKEN}</span>
</span><span id="__span-4-23"><a id="__codelineno-4-23" name="__codelineno-4-23"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CF_TUNNEL_NAME=${TUNNEL_NAME}</span>
</span><span id="__span-4-24"><a id="__codelineno-4-24" name="__codelineno-4-24"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CF_TUNNEL_PASSWORD=${TUNNEL_PW}</span>
</span><span id="__span-4-25"><a id="__codelineno-4-25" name="__codelineno-4-25"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml</span>
</span><span id="__span-4-26"><a id="__codelineno-4-26" name="__codelineno-4-26"></a><span class="w"> </span><span class="nt">extra_hosts</span><span class="p">:</span>
</span><span id="__span-4-27"><a id="__codelineno-4-27" name="__codelineno-4-27"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${DOMAIN}:127.0.0.1</span>
</span><span id="__span-4-28"><a id="__codelineno-4-28" name="__codelineno-4-28"></a><span class="w"> </span><span class="nt">ports</span><span class="p">:</span>
</span><span id="__span-4-29"><a id="__codelineno-4-29" name="__codelineno-4-29"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">81:81</span>
</span><span id="__span-4-30"><a id="__codelineno-4-30" name="__codelineno-4-30"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span>
</span><span id="__span-4-31"><a id="__codelineno-4-31" name="__codelineno-4-31"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/docker/swag/config:/config</span>
</span><span id="__span-4-32"><a id="__codelineno-4-32" name="__codelineno-4-32"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/docker/swag/config/fail2ban/fail2ban.sqlite3:/dashboard/fail2ban.sqlite3:ro</span>
</span><span id="__span-4-33"><a id="__codelineno-4-33" name="__codelineno-4-33"></a><span class="w"> </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">unless-stopped</span>
</span></code></pre></div></td></tr></table></div>
<div class="admonition tip">
<p class="admonition-title">Astuce</p>
<p>Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1">1</a></span>
<span class="normal"><a href="#__codelineno-5-2">2</a></span>
<span class="normal"><a href="#__codelineno-5-3">3</a></span>
<span class="normal"><a href="#__codelineno-5-4">4</a></span>
<span class="normal"><a href="#__codelineno-5-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="nt">services</span><span class="p">:</span>
</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span>
</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a><span class="w"> </span><span class="c1">#...</span>
</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a><span class="w"> </span><span class="nt">labels</span><span class="p">:</span>
</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">com.centurylinklabs.watchtower.enable=true</span>
</span></code></pre></div></td></tr></table></div></p>
</div>
<p>Et renseignez le <code>.env</code> les infos que vous avez trouvées et notées tout au long de ce guide</p>
<div class="language-properties highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-6-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-6-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-6-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-6-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-6-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-6-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-6-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-6-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-6-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="na">PUID</span><span class="o">=</span>
</span><span id="__span-6-2"><a id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="na">PGID</span><span class="o">=</span>
</span><span id="__span-6-3"><a id="__codelineno-6-3" name="__codelineno-6-3"></a><span class="na">DOMAIN</span><span class="o">=</span>
</span><span id="__span-6-4"><a id="__codelineno-6-4" name="__codelineno-6-4"></a><span class="na">PLUGIN</span><span class="o">=</span>
</span><span id="__span-6-5"><a id="__codelineno-6-5" name="__codelineno-6-5"></a><span class="na">EMAIL</span><span class="o">=</span>
</span><span id="__span-6-6"><a id="__codelineno-6-6" name="__codelineno-6-6"></a><span class="na">ZONE_ID</span><span class="o">=</span>
</span><span id="__span-6-7"><a id="__codelineno-6-7" name="__codelineno-6-7"></a><span class="na">ACCOUNT_ID</span><span class="o">=</span>
</span><span id="__span-6-8"><a id="__codelineno-6-8" name="__codelineno-6-8"></a><span class="na">API_TOKEN</span><span class="o">=</span>
</span><span id="__span-6-9"><a id="__codelineno-6-9" name="__codelineno-6-9"></a><span class="na">TUNNEL_NAME</span><span class="o">=</span>
</span><span id="__span-6-10"><a id="__codelineno-6-10" name="__codelineno-6-10"></a><span class="na">TUNNEL_PW</span><span class="o">=</span>
</span></code></pre></div></td></tr></table></div>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Valeur</th>
<th>Exemples</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-properties highlight"><span class="na">PUID</span><span class="o">=</span></code></td>
<td>A renseigner avec les infos de votre user (trouvables via la commande <code class="language-console highlight"><span class="gp">$ </span>id<span class="w"> </span>nomdutilisateur</code>)</td>
<td><code>1000</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">GUID</span><span class="o">=</span></code></td>
<td>A renseigner avec les infos de votre user (trouvables via la commande <code class="language-console highlight"><span class="gp">$ </span>id<span class="w"> </span>nomdutilisateur</code>)</td>
<td><code>1000</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">DOMAIN</span><span class="o">=</span></code></td>
<td>Le domaine que vous avez réservé</td>
<td><code>mondomaine.fr</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">PLUGIN</span><span class="o">=</span></code></td>
<td>Le fournisseur de zone DNS, ici Cloudflare. Pensez à renseigner <code>cloudflare.ini</code> (voir <a href="https://docs.linuxserver.io/general/swag/#create-container-via-dns-validation-with-a-wildcard-cert">guide de swag</a>)</td>
<td><code>cloudflare</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">EMAIL</span><span class="o">=</span></code></td>
<td>Votre email pour le certificat</td>
<td><code>votre@email.fr</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">ZONE_ID</span><span class="o">=</span></code></td>
<td>L'ID de Zone que vous avez noté précédemment</td>
<td><code>aNhcz1l3JfWbFZo2XMpzQlP2iOqk</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">ACCOUNT_ID</span><span class="o">=</span></code></td>
<td>L'ID de Compte que vous avez noté précédemment</td>
<td><code>buKsjNHLyzKMM1qYnzOy4s7SHfly</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">API_TOKEN</span><span class="o">=</span></code></td>
<td>Le jeton d'API que vous avez noté précédemment</td>
<td><code>53ydYus9TFFk1DOXNdP87iIcJtQjoW</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">TUNNEL_NAME</span><span class="o">=</span></code></td>
<td>Le nom de votre tunnel</td>
<td><code>mon_tunnel</code></td>
</tr>
<tr>
<td><code class="language-properties highlight"><span class="na">TUNNEL_PW</span><span class="o">=</span></code></td>
<td>Un mot de passe fort généré aléatoirement</td>
<td><code>iSzKRmP4VbnlsMvdSdgBEJiJi</code></td>
</tr>
</tbody>
</table>
<p>Une fois fait, déployez la stack. Cela prendra un peu de temps, vérifiez les logs, vous devriez arriver à <code>serveur ready</code></p>
<p>Une fois le conteneur en ligne, vérifiez dans cloudflare que votre tunnel est bien présent dans la section <em>Networks &gt; Tunnels</em> de <a href="https://one.dash.cloudflare.com/">Cloudflare Zero Trust</a>. Par défaut, l'ensemble des sous domaine sont redirigés vers le tunnel, sans avoir besoin de les déclarer <a href="../../dns">dans votre zone DNS</a>.</p>
<div class="admonition tip">
<p class="admonition-title">Astuce</p>
<p>Si vous voulez exposer un service sans tunnel, vous pouvez toujours déclarer un enregistrement A <a href="../../dns">dans votre zone DNS</a>. En cas de problème de résolution, désactivez la fonction <em>proxy</em> pour cet enregistrement. Par exemple pour <code>sous.mondomaine.fr</code></p>
<p><img alt="dns" src="/img/serveex/cf-dns.png" /></p>
</div>
<h2 id="gerer-plusieurs-tunnels-pour-plusieurs-serveurs">Gérer plusieurs tunnels pour plusieurs serveurs</h2>
<hr />
<p>Par défaut, l'ensemble des sous domaine de votre nom de domaine pointent vers le tunnel que vous avez créé. Mais si vous avez un second serveur, vous pouvez avoir un second tunnel en changeant seulement le nom de tunnel dans la configuration de l'instance swag de votre serveur.</p>
<p>Vous devrez ensuite dans votre zone DNS rediriger les sous domaine souhaité vers le bon tunnel. Pour cela, faites comme suit.</p>
<p>Rendez-vous dans dans la section <em>Networks &gt; Tunnels</em> de <a href="https://one.dash.cloudflare.com/">Cloudflare Zero Trust</a>.</p>
<p>Notez les deux ID des tunnels</p>
<p><img alt="tunnels_id" src="/img/serveex/cf-tunnels-id.png" /></p>
<p>Rendez-vous à présent dans la section DNS de <a href="https://dash.cloudflare.com/">cloudflare</a>, après avoir cliqué sur le nom de domaine concerné. </p>
<p>Cliquez sur <code>ajouter un enregistrement</code> et ajoutez deux enregistrements comme suit en ajoutant bien <code>.cfargotunnel.com</code> après vos id de tunnels.</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Nom</th>
<th>Cible</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>CNAME</code></td>
<td><code>sousdomaine1</code></td>
<td><code>votreiddetunnel1.cfargotunnel.com</code></td>
</tr>
<tr>
<td><code>CNAME</code></td>
<td><code>sousdomaine2</code></td>
<td><code>votreiddetunnel2.cfargotunnel.com</code></td>
</tr>
</tbody>
</table>
<p>Si vous avez de nombreux sous-domaines, vous pouvez déclarer un seul sous domaine par tunnel comme ci-dessus, puis déclarer vos autres sous domaine en les faisant pointer vers ces sous domaines de référence.</p>
<p>Ainsi, en cas de changement d'id de tunnel, vous n'aurez qu'à le changer que pour un seul sous-domaine.
Par exemple :</p>
<ul>
<li>
<p>Le serveur de <code>sousdomaine1</code> doit egalement etre la cible de sub1, et sub2 :</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Nom</th>
<th>Cible</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>CNAME</code></td>
<td><code>sub1</code></td>
<td><code>sousdomaine1</code></td>
</tr>
<tr>
<td><code>CNAME</code></td>
<td><code>sub2</code></td>
<td><code>sousdomaine1</code></td>
</tr>
</tbody>
</table>
</li>
<li>
<p>Le serveur de <code>sousdomaine2</code> doit egalement etre la cible de sub3, et sub4 :</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Nom</th>
<th>Cible</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>CNAME</code></td>
<td><code>sub3</code></td>
<td><code>sousdomaine2</code></td>
</tr>
<tr>
<td><code>CNAME</code></td>
<td><code>sub4</code></td>
<td><code>sousdomaine2</code></td>
</tr>
</tbody>
</table>
</li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
Retour en haut de la page
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
&copy; 2020-2024 djeex.fr
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://discord.gg/nAwtwCxQ" target="_blank" rel="noopener" title="discord.gg" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M524.531 69.836a1.5 1.5 0 0 0-.764-.7A485.065 485.065 0 0 0 404.081 32.03a1.816 1.816 0 0 0-1.923.91 337.461 337.461 0 0 0-14.9 30.6 447.848 447.848 0 0 0-134.426 0 309.541 309.541 0 0 0-15.135-30.6 1.89 1.89 0 0 0-1.924-.91 483.689 483.689 0 0 0-119.688 37.107 1.712 1.712 0 0 0-.788.676C39.068 183.651 18.186 294.69 28.43 404.354a2.016 2.016 0 0 0 .765 1.375 487.666 487.666 0 0 0 146.825 74.189 1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.12 430.4a1.86 1.86 0 0 0-1.019-2.588 321.173 321.173 0 0 1-45.868-21.853 1.885 1.885 0 0 1-.185-3.126 251.047 251.047 0 0 0 9.109-7.137 1.819 1.819 0 0 1 1.9-.256c96.229 43.917 200.41 43.917 295.5 0a1.812 1.812 0 0 1 1.924.233 234.533 234.533 0 0 0 9.132 7.16 1.884 1.884 0 0 1-.162 3.126 301.407 301.407 0 0 1-45.89 21.83 1.875 1.875 0 0 0-1 2.611 391.055 391.055 0 0 0 30.014 48.815 1.864 1.864 0 0 0 2.063.7A486.048 486.048 0 0 0 610.7 405.729a1.882 1.882 0 0 0 .765-1.352c12.264-126.783-20.532-236.912-86.934-334.541ZM222.491 337.58c-28.972 0-52.844-26.587-52.844-59.239s23.409-59.241 52.844-59.241c29.665 0 53.306 26.82 52.843 59.239 0 32.654-23.41 59.241-52.843 59.241Zm195.38 0c-28.971 0-52.843-26.587-52.843-59.239s23.409-59.241 52.843-59.241c29.667 0 53.307 26.82 52.844 59.239 0 32.654-23.177 59.241-52.844 59.241Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["content.action.edit", "search.highlight", "search.suggest", "navigation.top", "content.code.copy", "navigation.sections", "navigation.indexes", "navigation.tracking", "navigation.path"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copi\u00e9 dans le presse-papier", "clipboard.copy": "Copier dans le presse-papier", "search.result.more.one": "1 de plus sur cette page", "search.result.more.other": "# de plus sur cette page", "search.result.none": "Aucun document trouv\u00e9", "search.result.one": "1 document trouv\u00e9", "search.result.other": "# documents trouv\u00e9s", "search.result.placeholder": "Taper pour d\u00e9marrer la recherche", "search.result.term.missing": "Non trouv\u00e9", "select.version": "S\u00e9lectionner la version"}}</script>
<script src="../../assets/javascripts/bundle.ad660dcc.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-MML-AM_CHTML"></script>
</body>
</html>