2023 lines
99 KiB
HTML
Executable File
2023 lines
99 KiB
HTML
Executable File
|
|
<!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/swag/">
|
|
|
|
|
|
<link rel="prev" href="../docker/">
|
|
|
|
|
|
<link rel="next" href="../wireguard/">
|
|
|
|
|
|
<link rel="icon" href="/img/logo/book_pixel.svg">
|
|
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.27">
|
|
|
|
|
|
|
|
<title>SWAG - 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="SWAG - 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/swag.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/swag/" >
|
|
|
|
<meta name="twitter:card" content="summary_large_image" >
|
|
|
|
<meta name="twitter:title" content="SWAG - 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/swag.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="#swag" 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">
|
|
|
|
SWAG
|
|
|
|
</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--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" checked>
|
|
|
|
|
|
<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="true">
|
|
<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 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">
|
|
SWAG
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
SWAG
|
|
</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="#installation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Installation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dashboard" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Dashboard
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dbip" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DBIP
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#exposer-dockge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Exposer Dockge
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#exposer-un-autre-service-avec-swag" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Exposer un autre service avec SWAG
|
|
</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_3" >
|
|
|
|
|
|
<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="false">
|
|
<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">
|
|
<a href="../cloudflare/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Cloudflare Zero Trust
|
|
</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_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="#installation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Installation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dashboard" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Dashboard
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dbip" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DBIP
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#exposer-dockge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Exposer Dockge
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#exposer-un-autre-service-avec-swag" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Exposer un autre service avec SWAG
|
|
</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/swag.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="swag">SWAG</h1>
|
|
<p><a href="https://docs.linuxserver.io/general/swag/">Swag</a> est le noyau de ce homelab. C'est un reverse proxy puissant qui permet d'exposer des services sur le net via un ou des noms de domaines, en se chargeant de l'émission des certificats SSL (pour garder des connexions chiffrées), du routage des requêtes et de la sécurisation des accès (par authent HTTP ou par SSO comme Authelia ou Authentik). Toute la doc nécessaire ce <a href="https://docs.linuxserver.io/general/swag">situe ici</a>.</p>
|
|
<p>Ci-dessous, vous trouverez un exemple, exposant Dockge.</p>
|
|
<div class="admonition abstract">
|
|
<p class="admonition-title">Objectif</p>
|
|
<ul>
|
|
<li>Installer Swag</li>
|
|
<li>Activer le SSL</li>
|
|
<li>Accéder au tableau de bord</li>
|
|
<li>Configurer le blocage régional</li>
|
|
<li>Exposer Dockge</li>
|
|
</ul>
|
|
</div>
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Info</p>
|
|
<p>Ce tutoriel part du principe que vous avez un nom de domaine qui pointe vers votre serveur, et que votre box a une règle NAT qui redirige le port <code>443</code> vers l'adresse IP et le port <code>443</code> de votre serveur. Le nom de domaine d'exemple sera <code>mondomaine.fr</code>.</p>
|
|
</div>
|
|
<p>Nous installerons SWAG, ainsi que le mod dbip servant à bloquer les connexions en fonction de la géoloc, ainsi que le mod dashboard qui permet de piloter le fonctionnement de swag, fail2ban et la géoloc.</p>
|
|
<p><strong>Principe d'un reverse proxy et application dans notre cas :</strong></p>
|
|
<p><img alt="Picture" src="/img/serveex/reverse-proxy.svg" /></p>
|
|
<h2 id="installation">Installation</h2>
|
|
<hr />
|
|
<p>Plan des fichiers que nous allons modifier :</p>
|
|
<div class="language-bash 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>
|
|
<span class="normal"><a href="#__codelineno-0-2"> 2</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-3"> 3</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-4"> 4</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
|
|
<span class="normal"><a href="#__codelineno-0-13">13</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>root
|
|
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>└──<span class="w"> </span>docker
|
|
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="w"> </span>└──<span class="w"> </span>swag
|
|
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="w"> </span>├──<span class="w"> </span>config
|
|
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="w"> </span>│<span class="w"> </span>├──<span class="w"> </span>dns-conf
|
|
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="w"> </span>│<span class="w"> </span>│<span class="w"> </span>└──<span class="w"> </span>ovh.ini
|
|
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="w"> </span>│<span class="w"> </span>└──<span class="w"> </span>nginx
|
|
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="w"> </span>│<span class="w"> </span>├──<span class="w"> </span>dbip.conf
|
|
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="w"> </span>│<span class="w"> </span>├──<span class="w"> </span>nginx.conf
|
|
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="w"> </span>│<span class="w"> </span>└──<span class="w"> </span>proxy-confs
|
|
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="w"> </span>│<span class="w"> </span>└──<span class="w"> </span>dockge.subdomain.conf<span class="w"> </span>
|
|
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="w"> </span>├──<span class="w"> </span>compose.yml
|
|
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span>└──<span class="w"> </span>.env
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Ouvrez Dockge dans votre navigateur, cliquez sur <code>compose</code>, nommez la stack <code>swag</code> et copiez la conf ci-dessous</p>
|
|
<div class="annotate">
|
|
<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>
|
|
<span class="normal"><a href="#__codelineno-1-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-11">11</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-12">12</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-13">13</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-14">14</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-15">15</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-16">16</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-17">17</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-18">18</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-19">19</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-20">20</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-21">21</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-22">22</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-23">23</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-24">24</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-25">25</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-26">26</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-27">27</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-28">28</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-29">29</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-30">30</a></span>
|
|
<span class="normal"><a href="#__codelineno-1-31">31</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">version</span><span class="p">:</span><span class="w"> </span><span class="s">"2"</span>
|
|
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="nt">services</span><span class="p">:</span>
|
|
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span>
|
|
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-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-1-5"><a id="__codelineno-1-5" name="__codelineno-1-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-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="w"> </span><span class="nt">cap_add</span><span class="p">:</span>
|
|
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-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-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8"></a><span class="w"> </span><span class="nt">env_file</span><span class="p">:</span>
|
|
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-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-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10"></a><span class="w"> </span><span class="nt">environment</span><span class="p">:</span>
|
|
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11"></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-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12"></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-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">EXTRA_DOMAINS=${DOMAINS}</span>
|
|
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14"></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 class="w"> </span><span class="c1"># (1)!</span>
|
|
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15"></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-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16"></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-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17"></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-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></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</span>
|
|
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span>
|
|
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></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-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="w"> </span><span class="nt">ports</span><span class="p">:</span>
|
|
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">80:80</span>
|
|
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">443:443</span>
|
|
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24"></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 class="w"> </span><span class="c1"># (2)!</span>
|
|
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25"></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><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26"></a><span class="w"> </span><span class="nt">networks</span><span class="p">:</span>
|
|
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">swag</span>
|
|
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28"></a>
|
|
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29"></a><span class="nt">networks</span><span class="p">:</span>
|
|
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span>
|
|
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31"></a><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">swag_default</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
</div>
|
|
<ol>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Couvre les sous-domaines</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Nécessaire pour le dashboard</li>
|
|
</ol>
|
|
<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-2-1">1</a></span>
|
|
<span class="normal"><a href="#__codelineno-2-2">2</a></span>
|
|
<span class="normal"><a href="#__codelineno-2-3">3</a></span>
|
|
<span class="normal"><a href="#__codelineno-2-4">4</a></span>
|
|
<span class="normal"><a href="#__codelineno-2-5">5</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="nt">services</span><span class="p">:</span>
|
|
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span>
|
|
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a><span class="w"> </span><span class="c1">#...</span>
|
|
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="w"> </span><span class="nt">labels</span><span class="p">:</span>
|
|
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-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>Puis dans le <code>.env</code> :</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">DOMAIN</span><span class="o">=</span>
|
|
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="na">DOMAINS</span><span class="o">=</span>
|
|
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="na">EMAIL</span><span class="o">=</span>
|
|
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="na">PLUGIN</span><span class="o">=</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Remplissez comme suit </p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Propriété</th>
|
|
<th>Valeur</th>
|
|
<th>Exemples</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code class="language-properties highlight"><span class="na">DOMAIN</span></code></td>
|
|
<td>Votre domaine (cela couvre aussi tous les sous-domaines)</td>
|
|
<td><code>mondomaine.fr</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code class="language-properties highlight"><span class="na">DOMAINS</span></code></td>
|
|
<td>Vos éventuels autres domaines</td>
|
|
<td><code>monsecondomaine.fr</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code class="language-properties highlight"><span class="na">EMAIL</span></code></td>
|
|
<td>Votre email, pour générer le certificat</td>
|
|
<td><code>votre@email.fr</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code class="language-properties highlight"><span class="na">PLUGIN</span></code></td>
|
|
<td>Le plugin pour générer le certificat, lié à votre <a href="https://docs.linuxserver.io/general/swag/">fournisseur de zone DNS</a></td>
|
|
<td><code>ovh</code><br><code>cloudflare</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Ici nous partons du principe que votre zone DNS est chez OVH. Déployez la stack une premiere fois. Dans les logs vous verrez qu'il n'arrivera pas à créer de certificat SSL car le fichier ovh.ini renvoi une erreur. Arretez la stack.</p>
|
|
<p>En CLI, allez dans le dossier dns-conf et éditez le fichier <code>ovh.ini</code> :</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-4-1">1</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="gp">$ </span>sudo<span class="w"> </span>vi<span class="w"> </span>/docker/swag/config/dns-conf/ovh.ini
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Voici ce qui s'affiche :</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-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>
|
|
<span class="normal"><a href="#__codelineno-5-6">6</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="c1"># Instructions: https://github.com/certbot/certbot/blob/master/certbot-dns-ovh/certbot_dns_ovh/__init__.py#L20</span>
|
|
</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="c1"># Replace with your values</span>
|
|
</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a><span class="na">dns_ovh_endpoint</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ovh-eu</span>
|
|
</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a><span class="na">dns_ovh_application_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
|
|
</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="na">dns_ovh_application_secret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
|
|
</span><span id="__span-5-6"><a id="__codelineno-5-6" name="__codelineno-5-6"></a><span class="na">dns_ovh_consumer_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
Authentifiez vous et créez <a href="https://www.ovh.com/auth/?onsuccess=https%3A%2F%2Fwww.ovh.com%2Fauth%2Fapi%2FcreateToken">votre token ici</a>. </p>
|
|
<p>Les permissions à configurer sont les suivantes :</p>
|
|
<ul>
|
|
<li><code>GET /domain/zone/*</code></li>
|
|
<li><code>PUT /domain/zone/*</code></li>
|
|
<li><code>POST /domain/zone/*</code></li>
|
|
<li><code>DELETE /domain/zone/*</code></li>
|
|
</ul>
|
|
<p>Notez les 3 clés temporairement et renseignez le fichier <code>ovh.ini</code>. (avec vim, <code>i</code> pour passer en modif, <code>Echap</code> quand c'est fini, <code>:x</code> pour sauvegarder et quitter)</p>
|
|
<p>Sauvegardez et quittez le fichier. </p>
|
|
<p>Configurez aussi swag pour qu'il accède à DBIP, le module de gestion des accès par géolocalisation /Ouvrez le fichier nginx.conf</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-6-1">1</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="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>
|
|
<p>Et ajoutez la ligne suivante en dessous de la section <code>http</code> :</p>
|
|
<div class="language-nginx highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="k">include</span><span class="w"> </span><span class="n">/config/nginx/dbip.conf</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Relancez la stack dans Dockge, cette fois le certificat SSL est bien émis ! Vérifiez dans les logs que le serveur est bien ready.</p>
|
|
<h2 id="dashboard">Dashboard</h2>
|
|
<hr />
|
|
<p>Accedez au dashboard via votre réseau local en tapant <code>http//ipdevotreserveur:81</code>
|
|
A gauche, vous trouverez la liste des services actuellement "proxied" (aucun pour le moment). A droite, les IP bannies. En-dessous, une liste d'indicateurs. pour le détail, <a href="https://www.linuxserver.io/blog/introducing-swag-dashboard">c'est par ici</a>.</p>
|
|
<p><img alt="picture" src="https://www.linuxserver.io/user/pages/03.blog/introducing-swag-dashboard/example.png" /></p>
|
|
<h2 id="dbip">DBIP</h2>
|
|
<hr />
|
|
<p>DBIP permet de bloquer les connexions en fonction des pays. Il s'appuie sur le fichier de config nommé <code>dbip.conf</code> dans <code>/docker/swag/config/nginx</code>. <a href="https://virtualize.link/secure/">Plus d'info ici</a>.</p>
|
|
<p>Dans cet exemple, nous allons le configurer pour bloquer une liste de pays connus pour etre à l'origine de la plupart des connexions malveillantes. Nous allons également configurer une variable au cas où nous souhaiterions permettre au réseau interne du serveur, au réseau local de votre box ainsi qu'à un éventuel vpn en 10.x.x.x de pouvoir accéder à vos services, mais pas directement à internet.</p>
|
|
<p>La configuration est activable ou désactivable pour chaque service qui sera proxied (voir exemple de Dockge plus bas).</p>
|
|
<p>Ouvrez <code>dbip.conf</code> :</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-8-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="gp">$ </span>sudo<span class="w"> </span>vi<span class="w"> </span>/docker/swag/config/nginx/dbip.conf
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Faites vos modifications (<a href="https://github.com/linuxserver/docker-mods/tree/swag-dbip">voir documentation</a>), ou prenez l'exemple suivant: </p>
|
|
<div class="language-nginx highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1"> 1</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-2"> 2</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-3"> 3</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-4"> 4</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-5"> 5</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-6"> 6</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-11">11</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-12">12</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-13">13</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-14">14</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-15">15</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-16">16</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-17">17</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-18">18</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-19">19</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-20">20</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-21">21</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-22">22</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-23">23</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-24">24</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-25">25</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-26">26</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-27">27</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-28">28</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-29">29</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-30">30</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-31">31</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-32">32</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-33">33</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-34">34</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-35">35</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-36">36</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-37">37</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-38">38</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-39">39</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-40">40</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-41">41</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-42">42</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-43">43</a></span>
|
|
<span class="normal"><a href="#__codelineno-9-44">44</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="k">geoip2</span><span class="w"> </span><span class="s">/config/geoip2db/dbip-country-lite.mmdb</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a><span class="w"> </span><span class="kn">auto_reload</span><span class="w"> </span><span class="s">1w</span><span class="p">;</span>
|
|
</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3"></a><span class="w"> </span><span class="kn">$geoip2_data_continent_code</span><span class="w"> </span><span class="s">continent</span><span class="w"> </span><span class="s">code</span><span class="p">;</span>
|
|
</span><span id="__span-9-4"><a id="__codelineno-9-4" name="__codelineno-9-4"></a><span class="w"> </span><span class="kn">$geoip2_data_country_iso_code</span><span class="w"> </span><span class="s">country</span><span class="w"> </span><span class="s">iso_code</span><span class="p">;</span>
|
|
</span><span id="__span-9-5"><a id="__codelineno-9-5" name="__codelineno-9-5"></a><span class="p">}</span>
|
|
</span><span id="__span-9-6"><a id="__codelineno-9-6" name="__codelineno-9-6"></a>
|
|
</span><span id="__span-9-7"><a id="__codelineno-9-7" name="__codelineno-9-7"></a><span class="c1"># Country Codes: https://en.wikipedia.org/wiki/ISO_3166-2</span>
|
|
</span><span id="__span-9-8"><a id="__codelineno-9-8" name="__codelineno-9-8"></a>
|
|
</span><span id="__span-9-9"><a id="__codelineno-9-9" name="__codelineno-9-9"></a><span class="k">map</span><span class="w"> </span><span class="nv">$geoip2_data_country_iso_code</span><span class="w"> </span><span class="nv">$geo-whitelist</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-9-10"><a id="__codelineno-9-10" name="__codelineno-9-10"></a><span class="w"> </span><span class="c1"># default yes;</span>
|
|
</span><span id="__span-9-11"><a id="__codelineno-9-11" name="__codelineno-9-11"></a><span class="w"> </span><span class="c1"># Example for whitelisting a country, comment out 'default yes;' above and uncomment 'default no;' and the whitelisted country below</span>
|
|
</span><span id="__span-9-12"><a id="__codelineno-9-12" name="__codelineno-9-12"></a><span class="w"> </span><span class="kn">default</span><span class="w"> </span><span class="s">no</span><span class="p">;</span>
|
|
</span><span id="__span-9-13"><a id="__codelineno-9-13" name="__codelineno-9-13"></a><span class="w"> </span><span class="kn">FR</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-14"><a id="__codelineno-9-14" name="__codelineno-9-14"></a><span class="p">}</span>
|
|
</span><span id="__span-9-15"><a id="__codelineno-9-15" name="__codelineno-9-15"></a>
|
|
</span><span id="__span-9-16"><a id="__codelineno-9-16" name="__codelineno-9-16"></a><span class="k">map</span><span class="w"> </span><span class="nv">$geoip2_data_country_iso_code</span><span class="w"> </span><span class="nv">$geo-blacklist</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-9-17"><a id="__codelineno-9-17" name="__codelineno-9-17"></a><span class="w"> </span><span class="kn">default</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-18"><a id="__codelineno-9-18" name="__codelineno-9-18"></a><span class="w"> </span><span class="c1"># Example for blacklisting a country, uncomment the blacklisted country below</span>
|
|
</span><span id="__span-9-19"><a id="__codelineno-9-19" name="__codelineno-9-19"></a><span class="w"> </span><span class="kn">CN</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#China</span>
|
|
</span><span id="__span-9-20"><a id="__codelineno-9-20" name="__codelineno-9-20"></a><span class="w"> </span><span class="kn">RU</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Russia</span>
|
|
</span><span id="__span-9-21"><a id="__codelineno-9-21" name="__codelineno-9-21"></a><span class="w"> </span><span class="kn">HK</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Hong Kong</span>
|
|
</span><span id="__span-9-22"><a id="__codelineno-9-22" name="__codelineno-9-22"></a><span class="w"> </span><span class="kn">IN</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#India</span>
|
|
</span><span id="__span-9-23"><a id="__codelineno-9-23" name="__codelineno-9-23"></a><span class="w"> </span><span class="kn">IR</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Iran</span>
|
|
</span><span id="__span-9-24"><a id="__codelineno-9-24" name="__codelineno-9-24"></a><span class="w"> </span><span class="kn">VN</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Vietnam</span>
|
|
</span><span id="__span-9-25"><a id="__codelineno-9-25" name="__codelineno-9-25"></a><span class="w"> </span><span class="kn">TR</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Turkey</span>
|
|
</span><span id="__span-9-26"><a id="__codelineno-9-26" name="__codelineno-9-26"></a><span class="w"> </span><span class="kn">EG</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Egypt</span>
|
|
</span><span id="__span-9-27"><a id="__codelineno-9-27" name="__codelineno-9-27"></a><span class="w"> </span><span class="kn">MX</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Mexico</span>
|
|
</span><span id="__span-9-28"><a id="__codelineno-9-28" name="__codelineno-9-28"></a><span class="w"> </span><span class="kn">JP</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Japan</span>
|
|
</span><span id="__span-9-29"><a id="__codelineno-9-29" name="__codelineno-9-29"></a><span class="w"> </span><span class="kn">KR</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#South Korea</span>
|
|
</span><span id="__span-9-30"><a id="__codelineno-9-30" name="__codelineno-9-30"></a><span class="w"> </span><span class="kn">KP</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#North Korea</span>
|
|
</span><span id="__span-9-31"><a id="__codelineno-9-31" name="__codelineno-9-31"></a><span class="w"> </span><span class="kn">PE</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Peru</span>
|
|
</span><span id="__span-9-32"><a id="__codelineno-9-32" name="__codelineno-9-32"></a><span class="w"> </span><span class="kn">BR</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Brazil</span>
|
|
</span><span id="__span-9-33"><a id="__codelineno-9-33" name="__codelineno-9-33"></a><span class="w"> </span><span class="kn">UA</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Ukraine</span>
|
|
</span><span id="__span-9-34"><a id="__codelineno-9-34" name="__codelineno-9-34"></a><span class="w"> </span><span class="kn">ID</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Indonesia</span>
|
|
</span><span id="__span-9-35"><a id="__codelineno-9-35" name="__codelineno-9-35"></a><span class="w"> </span><span class="kn">TH</span><span class="w"> </span><span class="s">no</span><span class="p">;</span><span class="w"> </span><span class="c1">#Thailand</span>
|
|
</span><span id="__span-9-36"><a id="__codelineno-9-36" name="__codelineno-9-36"></a><span class="w"> </span><span class="p">}</span>
|
|
</span><span id="__span-9-37"><a id="__codelineno-9-37" name="__codelineno-9-37"></a>
|
|
</span><span id="__span-9-38"><a id="__codelineno-9-38" name="__codelineno-9-38"></a><span class="k">geo</span><span class="w"> </span><span class="nv">$lan-ip</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-9-39"><a id="__codelineno-9-39" name="__codelineno-9-39"></a><span class="w"> </span><span class="kn">default</span><span class="w"> </span><span class="s">no</span><span class="p">;</span>
|
|
</span><span id="__span-9-40"><a id="__codelineno-9-40" name="__codelineno-9-40"></a><span class="w"> </span><span class="kn">10.0.0.0/8</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-41"><a id="__codelineno-9-41" name="__codelineno-9-41"></a><span class="w"> </span><span class="kn">172.16.0.0/12</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-42"><a id="__codelineno-9-42" name="__codelineno-9-42"></a><span class="w"> </span><span class="kn">192.168.0.0/16</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-43"><a id="__codelineno-9-43" name="__codelineno-9-43"></a><span class="w"> </span><span class="kn">127.0.0.1</span><span class="w"> </span><span class="s">yes</span><span class="p">;</span>
|
|
</span><span id="__span-9-44"><a id="__codelineno-9-44" name="__codelineno-9-44"></a><span class="p">}</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Sauvegardez et quittez. Redémarrez la stack.</p>
|
|
<p>Dans les fichiers de conf des domaines (section suivante), vous pourrez activer ou désactiver la whitelist ou la blacklist (<a href="https://www.forum-nas.fr/threads/tuto-installer-swag-en-docker-reverse-proxy.15057/">voir documentation ici</a>). Dans notre cas, la whitelist laisse uniquement passer les requêtes françaises. La blacklist laisse passer tout le monde sauf la liste de pays mentionnée. On utilisera donc la blacklist, sur ce modèle :</p>
|
|
<div class="language-nginx highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1"> 1</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-2"> 2</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-3"> 3</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-4"> 4</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-5"> 5</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-6"> 6</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-10-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1"></a><span class="w"> </span><span class="k">server</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2"></a><span class="w"> </span><span class="kn">listen</span><span class="w"> </span><span class="mi">443</span><span class="w"> </span><span class="s">ssl</span><span class="p">;</span>
|
|
</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3"></a><span class="w"> </span><span class="kn">listen</span><span class="w"> </span><span class="s">[::]:443</span><span class="w"> </span><span class="s">ssl</span><span class="p">;</span>
|
|
</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4"></a>
|
|
</span><span id="__span-10-5"><a id="__codelineno-10-5" name="__codelineno-10-5"></a><span class="w"> </span><span class="kn">server_name</span><span class="w"> </span><span class="s">some-app.*</span><span class="p">;</span>
|
|
</span><span id="__span-10-6"><a id="__codelineno-10-6" name="__codelineno-10-6"></a><span class="w"> </span><span class="kn">include</span><span class="w"> </span><span class="s">/config/nginx/ssl.conf</span><span class="p">;</span>
|
|
</span><span id="__span-10-7"><a id="__codelineno-10-7" name="__codelineno-10-7"></a><span class="w"> </span><span class="kn">client_max_body_size</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
|
</span><span id="__span-10-8"><a id="__codelineno-10-8" name="__codelineno-10-8"></a>
|
|
</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9"></a><span class="w"> </span><span class="kn">if</span><span class="w"> </span><span class="s">(</span><span class="nv">$geo-blacklist</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">no)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kn">return</span><span class="w"> </span><span class="mi">404</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
|
|
</span><span id="__span-10-10"><a id="__codelineno-10-10" name="__codelineno-10-10"></a>
|
|
</span><span id="__span-10-11"><a id="__codelineno-10-11" name="__codelineno-10-11"></a><span class="w"> </span><span class="kn">location</span><span class="w"> </span><span class="s">/</span><span class="w"> </span><span class="p">{</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<h2 id="exposer-dockge">Exposer Dockge</h2>
|
|
<hr />
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Au préalable</p>
|
|
<p>Nous partons du principe que vous avez créé dans votre <a href="../../dns">zone DNS</a> un sous domaine du type <code>dockge.mondomaine.fr</code> avec pour <code>CNAME</code> <code>mondomaine.fr</code> et <a href="/serveex/cloudflare">à moins que vous utilisiez Cloudflare Zero Trust</a>, que que vous avez déjà redirigé le port <code>443</code> de votre box vers le <code>443</code> de votre serveur dans <a href="../../nat">les règles NAT</a>.</p>
|
|
</div>
|
|
<p>Il s'agit maintenant d'exposer Dockge sur internet, afin de pouvoir y accéder et gérer vos conteneurs sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configuré un sous domaine <code>dockge.mondomaine.fr</code> dans votre zone DNS dont le <code>CNAME</code> pointe sur <code>mondomaine.fr</code>.</p>
|
|
<p>Ouvrez le fichier dockge.subdomain.conf :</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-11-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="gp">$ </span>sudo<span class="w"> </span>vi<span class="w"> </span>/docker/swag/config/nginx/proxy-confs/dockge.subdomain.conf
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<p>Paramétrez le comme tel :</p>
|
|
<div class="annotate">
|
|
<div class="language-nginx highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1"> 1</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-2"> 2</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-3"> 3</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-4"> 4</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-5"> 5</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-6"> 6</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-11">11</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-12">12</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-13">13</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-14">14</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-15">15</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-16">16</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-17">17</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-18">18</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-19">19</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-20">20</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-21">21</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-22">22</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-23">23</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-24">24</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-25">25</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-26">26</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-27">27</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-28">28</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-29">29</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-30">30</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-31">31</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-32">32</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-33">33</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-34">34</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-35">35</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-36">36</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-37">37</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-38">38</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-39">39</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-40">40</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-41">41</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-42">42</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-43">43</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-44">44</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-45">45</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-46">46</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-47">47</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-48">48</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-49">49</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-50">50</a></span>
|
|
<span class="normal"><a href="#__codelineno-12-51">51</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="c1">## Version 2023/12/19</span>
|
|
</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a>
|
|
</span><span id="__span-12-3"><a id="__codelineno-12-3" name="__codelineno-12-3"></a><span class="k">server</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-12-4"><a id="__codelineno-12-4" name="__codelineno-12-4"></a><span class="w"> </span><span class="kn">listen</span><span class="w"> </span><span class="mi">443</span><span class="w"> </span><span class="s">ssl</span><span class="w"> </span><span class="s">http2</span><span class="p">;</span>
|
|
</span><span id="__span-12-5"><a id="__codelineno-12-5" name="__codelineno-12-5"></a><span class="w"> </span><span class="kn">listen</span><span class="w"> </span><span class="s">[::]:443</span><span class="w"> </span><span class="s">ssl</span><span class="w"> </span><span class="s">http2</span><span class="p">;</span>
|
|
</span><span id="__span-12-6"><a id="__codelineno-12-6" name="__codelineno-12-6"></a>
|
|
</span><span id="__span-12-7"><a id="__codelineno-12-7" name="__codelineno-12-7"></a><span class="w"> </span><span class="c1"># indique que le sous-domaine doit être dirigé</span>
|
|
</span><span id="__span-12-8"><a id="__codelineno-12-8" name="__codelineno-12-8"></a><span class="w"> </span><span class="kn">server_name</span><span class="w"> </span><span class="s">dockge.*</span><span class="p">;</span><span class="w"> </span>
|
|
</span><span id="__span-12-9"><a id="__codelineno-12-9" name="__codelineno-12-9"></a>
|
|
</span><span id="__span-12-10"><a id="__codelineno-12-10" name="__codelineno-12-10"></a><span class="w"> </span><span class="kn">include</span><span class="w"> </span><span class="s">/config/nginx/ssl.conf</span><span class="p">;</span>
|
|
</span><span id="__span-12-11"><a id="__codelineno-12-11" name="__codelineno-12-11"></a>
|
|
</span><span id="__span-12-12"><a id="__codelineno-12-12" name="__codelineno-12-12"></a><span class="w"> </span><span class="kn">client_max_body_size</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
|
</span><span id="__span-12-13"><a id="__codelineno-12-13" name="__codelineno-12-13"></a>
|
|
</span><span id="__span-12-14"><a id="__codelineno-12-14" name="__codelineno-12-14"></a><span class="w"> </span><span class="c1">#if ($lan-ip = yes) { set $geo-whitelist yes; }</span>
|
|
</span><span id="__span-12-15"><a id="__codelineno-12-15" name="__codelineno-12-15"></a><span class="w"> </span><span class="c1">#if ($geo-whitelist = no) { return 404; }</span>
|
|
</span><span id="__span-12-16"><a id="__codelineno-12-16" name="__codelineno-12-16"></a><span class="w"> </span><span class="c1"># indique que les pays dans la blacklist sont intedits</span>
|
|
</span><span id="__span-12-17"><a id="__codelineno-12-17" name="__codelineno-12-17"></a><span class="w"> </span><span class="kn">if</span><span class="w"> </span><span class="s">(</span><span class="nv">$geo-blacklist</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">no)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kn">return</span><span class="w"> </span><span class="mi">404</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span>
|
|
</span><span id="__span-12-18"><a id="__codelineno-12-18" name="__codelineno-12-18"></a>
|
|
</span><span id="__span-12-19"><a id="__codelineno-12-19" name="__codelineno-12-19"></a><span class="w"> </span><span class="c1"># enable for ldap auth (requires ldap-location.conf in the location block)</span>
|
|
</span><span id="__span-12-20"><a id="__codelineno-12-20" name="__codelineno-12-20"></a><span class="w"> </span><span class="c1">#include /config/nginx/ldap-server.conf;</span>
|
|
</span><span id="__span-12-21"><a id="__codelineno-12-21" name="__codelineno-12-21"></a>
|
|
</span><span id="__span-12-22"><a id="__codelineno-12-22" name="__codelineno-12-22"></a><span class="w"> </span><span class="c1"># enable for Authelia (requires authelia-location.conf in the location block)</span>
|
|
</span><span id="__span-12-23"><a id="__codelineno-12-23" name="__codelineno-12-23"></a><span class="w"> </span><span class="c1">#include /config/nginx/authelia-server.conf;</span>
|
|
</span><span id="__span-12-24"><a id="__codelineno-12-24" name="__codelineno-12-24"></a>
|
|
</span><span id="__span-12-25"><a id="__codelineno-12-25" name="__codelineno-12-25"></a><span class="w"> </span><span class="c1"># enable for Authentik (requires authentik-location.conf in the location block)</span>
|
|
</span><span id="__span-12-26"><a id="__codelineno-12-26" name="__codelineno-12-26"></a><span class="w"> </span><span class="c1">#include /config/nginx/authentik-server.conf;</span>
|
|
</span><span id="__span-12-27"><a id="__codelineno-12-27" name="__codelineno-12-27"></a>
|
|
</span><span id="__span-12-28"><a id="__codelineno-12-28" name="__codelineno-12-28"></a><span class="w"> </span><span class="kn">location</span><span class="w"> </span><span class="s">/</span><span class="w"> </span><span class="p">{</span>
|
|
</span><span id="__span-12-29"><a id="__codelineno-12-29" name="__codelineno-12-29"></a><span class="w"> </span><span class="c1"># enable the next two lines for http auth</span>
|
|
</span><span id="__span-12-30"><a id="__codelineno-12-30" name="__codelineno-12-30"></a><span class="w"> </span><span class="c1">#auth_basic "Restricted";</span>
|
|
</span><span id="__span-12-31"><a id="__codelineno-12-31" name="__codelineno-12-31"></a><span class="w"> </span><span class="c1">#auth_basic_user_file /config/nginx/.htpasswd;</span>
|
|
</span><span id="__span-12-32"><a id="__codelineno-12-32" name="__codelineno-12-32"></a>
|
|
</span><span id="__span-12-33"><a id="__codelineno-12-33" name="__codelineno-12-33"></a><span class="w"> </span><span class="c1"># enable for ldap auth (requires ldap-server.conf in the server block)</span>
|
|
</span><span id="__span-12-34"><a id="__codelineno-12-34" name="__codelineno-12-34"></a><span class="w"> </span><span class="c1">#include /config/nginx/ldap-location.conf;</span>
|
|
</span><span id="__span-12-35"><a id="__codelineno-12-35" name="__codelineno-12-35"></a>
|
|
</span><span id="__span-12-36"><a id="__codelineno-12-36" name="__codelineno-12-36"></a><span class="w"> </span><span class="c1"># enable for Authelia (requires authelia-server.conf in the server block)</span>
|
|
</span><span id="__span-12-37"><a id="__codelineno-12-37" name="__codelineno-12-37"></a><span class="w"> </span><span class="c1">#include /config/nginx/authelia-location.conf;</span>
|
|
</span><span id="__span-12-38"><a id="__codelineno-12-38" name="__codelineno-12-38"></a>
|
|
</span><span id="__span-12-39"><a id="__codelineno-12-39" name="__codelineno-12-39"></a><span class="w"> </span><span class="c1"># enable for Authentik (requires authentik-server.conf in the server block)</span>
|
|
</span><span id="__span-12-40"><a id="__codelineno-12-40" name="__codelineno-12-40"></a><span class="w"> </span><span class="c1">#include /config/nginx/authentik-location.conf;</span>
|
|
</span><span id="__span-12-41"><a id="__codelineno-12-41" name="__codelineno-12-41"></a>
|
|
</span><span id="__span-12-42"><a id="__codelineno-12-42" name="__codelineno-12-42"></a><span class="w"> </span><span class="kn">include</span><span class="w"> </span><span class="s">/config/nginx/proxy.conf</span><span class="p">;</span>
|
|
</span><span id="__span-12-43"><a id="__codelineno-12-43" name="__codelineno-12-43"></a><span class="w"> </span><span class="kn">include</span><span class="w"> </span><span class="s">/config/nginx/resolver.conf</span><span class="p">;</span>
|
|
</span><span id="__span-12-44"><a id="__codelineno-12-44" name="__codelineno-12-44"></a>
|
|
</span><span id="__span-12-45"><a id="__codelineno-12-45" name="__codelineno-12-45"></a><span class="w"> </span><span class="kn">set</span><span class="w"> </span><span class="nv">$upstream_app</span><span class="w"> </span><span class="s">dockge</span><span class="p">;</span><span class="w"> </span><span class="c1"># (1)!</span>
|
|
</span><span id="__span-12-46"><a id="__codelineno-12-46" name="__codelineno-12-46"></a><span class="w"> </span><span class="kn">set</span><span class="w"> </span><span class="nv">$upstream_port</span><span class="w"> </span><span class="mi">5001</span><span class="p">;</span><span class="w"> </span><span class="c1"># (2)!</span>
|
|
</span><span id="__span-12-47"><a id="__codelineno-12-47" name="__codelineno-12-47"></a><span class="w"> </span><span class="kn">set</span><span class="w"> </span><span class="nv">$upstream_proto</span><span class="w"> </span><span class="s">http</span><span class="p">;</span>
|
|
</span><span id="__span-12-48"><a id="__codelineno-12-48" name="__codelineno-12-48"></a><span class="w"> </span><span class="kn">proxy_pass</span><span class="w"> </span><span class="nv">$upstream_proto://$upstream_app:$upstream_port</span><span class="p">;</span>
|
|
</span><span id="__span-12-49"><a id="__codelineno-12-49" name="__codelineno-12-49"></a>
|
|
</span><span id="__span-12-50"><a id="__codelineno-12-50" name="__codelineno-12-50"></a><span class="w"> </span><span class="p">}</span>
|
|
</span><span id="__span-12-51"><a id="__codelineno-12-51" name="__codelineno-12-51"></a><span class="p">}</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
</div>
|
|
<ol>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Nom du conteneur</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Port interne conteneur</li>
|
|
</ol>
|
|
<p>Sauvegardez et quittez. La configuration va se mettre à jour en quelques secondes. </p>
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Info</p>
|
|
<p>Par défaut, swag ne connait pas le nom "dockge". Pour qu'il puisse y accéder, vous devez rajouter le réseau de swag dans le <code>compose.yml</code> de dockge. </p>
|
|
</div>
|
|
<p>Rendez-vous sur la stack de dockge, puis cliquez sur <code>éditer</code>, et ajouter le réseau de Swag dans le fichier de conf sur ce modele (les champs <code>networks</code>) :</p>
|
|
<div class="annotate">
|
|
<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1"> 1</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-2"> 2</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-3"> 3</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-4"> 4</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-5"> 5</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-6"> 6</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-7"> 7</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-8"> 8</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-9"> 9</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-10">10</a></span>
|
|
<span class="normal"><a href="#__codelineno-13-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="nt">services</span><span class="p">:</span>
|
|
</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="w"> </span><span class="nt">dockge</span><span class="p">:</span>
|
|
</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3"></a><span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="c1">#...</span>
|
|
</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4"></a><span class="w"> </span><span class="c1"># ... </span>
|
|
</span><span id="__span-13-5"><a id="__codelineno-13-5" name="__codelineno-13-5"></a><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w"> </span><span class="c1"># (1)!</span>
|
|
</span><span id="__span-13-6"><a id="__codelineno-13-6" name="__codelineno-13-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">swag</span><span class="w"> </span><span class="c1"># (2)!</span>
|
|
</span><span id="__span-13-7"><a id="__codelineno-13-7" name="__codelineno-13-7"></a>
|
|
</span><span id="__span-13-8"><a id="__codelineno-13-8" name="__codelineno-13-8"></a><span class="nt">networks</span><span class="p">:</span><span class="w"> </span><span class="c1"># (3)!</span>
|
|
</span><span id="__span-13-9"><a id="__codelineno-13-9" name="__codelineno-13-9"></a><span class="w"> </span><span class="nt">swag</span><span class="p">:</span><span class="w"> </span><span class="c1"># (6)!</span>
|
|
</span><span id="__span-13-10"><a id="__codelineno-13-10" name="__codelineno-13-10"></a><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">swag_default</span><span class="w"> </span><span class="c1"># (4)!</span>
|
|
</span><span id="__span-13-11"><a id="__codelineno-13-11" name="__codelineno-13-11"></a><span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"> </span><span class="c1"># (5)!</span>
|
|
</span></code></pre></div></td></tr></table></div>
|
|
</div>
|
|
<ol>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Relie le conteneur au réseau custom. A faire pour chaque conteneur à exposer de la stack </li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Nom du réseau déclaré dans la stack</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Défini le réseau custom</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Nom véritable du réseau externe</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Précise que c'est un réseau à rechercher en externe</li>
|
|
<li><img alt="👉" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/1f449.svg" title=":point_right:" /> Nom du réseau déclaré dans la stack</li>
|
|
</ol>
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Info</p>
|
|
<p>Ici nous partons du principe que le nom du réseau de Swag est <code>swag_default</code>. </p>
|
|
</div>
|
|
<p>Déployez à nouveau la stack.</p>
|
|
<p>Patientez puis tapez <code>https://dockge.mondomaine.fr</code> dans votre navigateur, vous devriez être redirigé vers dockge. Vous pouvez vérifier le statut du service via le dashboard (depuis votre réseau local, http://ipdevotreserveur:81)</p>
|
|
<h2 id="exposer-un-autre-service-avec-swag">Exposer un autre service avec SWAG</h2>
|
|
<hr />
|
|
<p>Swag dispose de modeles pour la plupart des services connus, nommés <code>nomduservice.subdomain.conf.sample</code>. Il vous suffit de créer le sous-domaine dans votre zone DNS chez votre registrar (comme OVH par exemple), de le faire pointer sur votre domaine principale (via un enregistrement CNAME) et de copier en renommant <code>nomduservice.subdomain.conf.sample</code> en <code>nomduservice.subdomain.conf</code>. </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-14-1">1</a></span>
|
|
<span class="normal"><a href="#__codelineno-14-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>/docker/swag/config/proxy-confs
|
|
</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2"></a><span class="gp">$ </span>sudo<span class="w"> </span>cp<span class="w"> </span>nomduservice.subdomain.conf.sample<span class="w"> </span>nomduservice.subdomain.conf
|
|
</span></code></pre></div></td></tr></table></div>
|
|
<div class="admonition failure">
|
|
<p class="admonition-title">Si le sous domaine n'est pas redirigé correctement</p>
|
|
<ul>
|
|
<li>
|
|
<p>éditez le fichier et vérifiez notamment le nom du conteneur dans <code class="language-nginx highlight"><span class="k">set</span><span class="w"> </span><span class="nv">$upstream_app</span><span class="w"> </span><span class="s">nomduconteneur</span><span class="p">;</span></code></p>
|
|
</li>
|
|
<li>
|
|
<p>vérifiez que vous avez bien ajouté le réseau de swag dans le <code>compose.yml</code> du conteneur (via Dockge par exemple).</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p>Vous pouvez aussi choisir le sous-domaine en changeant la variable <code class="language-nginx highlight"><span class="k">server_name</span><span class="w"> </span><span class="s">votresousdomaine.*</span><span class="p">;</span></code> et en renommant le fichier <code>votresousdomaine.subdomain.conf</code>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</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">
|
|
© 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> |