dp-salad-docs/.vitepress/dist/faq.html
2025-01-04 22:46:09 -07:00

74 lines
No EOL
39 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>FAQ | DP-Salad</title>
<meta name="description" content="A guide to fully deploy the DP-Salad Stack">
<meta name="generator" content="VitePress v1.5.0">
<link rel="preload stylesheet" href="/assets/style.CpK5ZA6m.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.D2AcNbxn.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.Chl5AtGS.js">
<link rel="modulepreload" href="/assets/chunks/framework.DtMx7FFi.js">
<link rel="modulepreload" href="/assets/faq.md.By3ovNs1.lean.js">
<link rel="icon" type="image/x-icon" href="/asset/favicon.ico">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"dark",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-39b851b6><!--[--><!--]--><!--[--><span tabindex="-1" data-v-a06310ac></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-a06310ac> Skip to content </a><!--]--><!----><header class="VPNav" data-v-39b851b6 data-v-1125fe0e><div class="VPNavBar" data-v-1125fe0e data-v-8c74a6bf><div class="wrapper" data-v-8c74a6bf><div class="container" data-v-8c74a6bf><div class="title" data-v-8c74a6bf><div class="VPNavBarTitle has-sidebar" data-v-8c74a6bf data-v-91ea8bb2><a class="title" href="/" data-v-91ea8bb2><!--[--><!--]--><!--[--><img class="VPImage logo" src="/saladicon.png" alt data-v-e838cdb3><!--]--><span data-v-91ea8bb2>DP-Salad</span><!--[--><!--]--></a></div></div><div class="content" data-v-8c74a6bf><div class="content-body" data-v-8c74a6bf><!--[--><!--]--><div class="VPNavBarSearch search" data-v-8c74a6bf><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-8c74a6bf data-v-d62dda7e><span id="main-nav-aria-label" class="visually-hidden" data-v-d62dda7e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-d62dda7e data-v-f334ebb6><!--[--><span data-v-f334ebb6>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/faq" tabindex="0" data-v-d62dda7e data-v-f334ebb6><!--[--><span data-v-f334ebb6>FAQ</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docker-compose" tabindex="0" data-v-d62dda7e data-v-f334ebb6><!--[--><span data-v-f334ebb6>Docker Compose</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/maintenance/maintain-guide" tabindex="0" data-v-d62dda7e data-v-f334ebb6><!--[--><span data-v-f334ebb6>Maintenance</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-d62dda7e data-v-f1cced18><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-f1cced18><span class="text" data-v-f1cced18><!----><span data-v-f1cced18>Install</span><span class="vpi-chevron-down text-icon" data-v-f1cced18></span></span></button><div class="menu" data-v-f1cced18><div class="VPMenu" data-v-f1cced18 data-v-b71e5dd0><div class="items" data-v-b71e5dd0><!--[--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/install/requirements" data-v-15160b25><!--[--><span data-v-15160b25>DP-Salad Requirements</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/install/dp-setup" data-v-15160b25><!--[--><span data-v-15160b25>Installing Debian and Portainer</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/install/dp-config" data-v-15160b25><!--[--><span data-v-15160b25>Configuration</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/install/salad-setup" data-v-15160b25><!--[--><span data-v-15160b25>DP-Salad Setup</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-d62dda7e data-v-f1cced18><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-f1cced18><span class="text" data-v-f1cced18><!----><span data-v-f1cced18>Config</span><span class="vpi-chevron-down text-icon" data-v-f1cced18></span></span></button><div class="menu" data-v-f1cced18><div class="VPMenu" data-v-f1cced18 data-v-b71e5dd0><div class="items" data-v-b71e5dd0><!--[--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/configuration/swag-config" data-v-15160b25><!--[--><span data-v-15160b25>Swag Config</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/configuration/auth-config" data-v-15160b25><!--[--><span data-v-15160b25>Authelia Config</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/configuration/lldap-config" data-v-15160b25><!--[--><span data-v-15160b25>LLDAP Config</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/configuration/authy-duo-config" data-v-15160b25><!--[--><span data-v-15160b25>Authy/Duo Config</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-d62dda7e data-v-f1cced18><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-f1cced18><span class="text" data-v-f1cced18><!----><span data-v-f1cced18>Misc</span><span class="vpi-chevron-down text-icon" data-v-f1cced18></span></span></button><div class="menu" data-v-f1cced18><div class="VPMenu" data-v-f1cced18 data-v-b71e5dd0><div class="items" data-v-b71e5dd0><!--[--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/x11-guide" data-v-15160b25><!--[--><span data-v-15160b25>X11 Guide</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b71e5dd0 data-v-15160b25><a class="VPLink link" href="/cf-tunnel" data-v-15160b25><!--[--><span data-v-15160b25>Cloudflare Tunneling</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-8c74a6bf data-v-407d5c63><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="true" data-v-407d5c63 data-v-2994eab3 data-v-2ed556eb><span class="check" data-v-2ed556eb><span class="icon" data-v-2ed556eb><!--[--><span class="vpi-sun sun" data-v-2994eab3></span><span class="vpi-moon moon" data-v-2994eab3></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-8c74a6bf data-v-d10923a3 data-v-f1cced18><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-f1cced18><span class="vpi-more-horizontal icon" data-v-f1cced18></span></button><div class="menu" data-v-f1cced18><div class="VPMenu" data-v-f1cced18 data-v-b71e5dd0><!----><!--[--><!--[--><!----><div class="group" data-v-d10923a3><div class="item appearance" data-v-d10923a3><p class="label" data-v-d10923a3>Appearance</p><div class="appearance-action" data-v-d10923a3><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="true" data-v-d10923a3 data-v-2994eab3 data-v-2ed556eb><span class="check" data-v-2ed556eb><span class="icon" data-v-2ed556eb><!--[--><span class="vpi-sun sun" data-v-2994eab3></span><span class="vpi-moon moon" data-v-2994eab3></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-8c74a6bf data-v-661d4f1a><span class="container" data-v-661d4f1a><span class="top" data-v-661d4f1a></span><span class="middle" data-v-661d4f1a></span><span class="bottom" data-v-661d4f1a></span></span></button></div></div></div></div><div class="divider" data-v-8c74a6bf><div class="divider-line" data-v-8c74a6bf></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-39b851b6 data-v-e758e1b7><div class="container" data-v-e758e1b7><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e758e1b7><span class="vpi-align-left menu-icon" data-v-e758e1b7></span><span class="menu-text" data-v-e758e1b7>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e758e1b7 data-v-ebf966df><button data-v-ebf966df>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-39b851b6 data-v-6b9869d7><div class="curtain" data-v-6b9869d7></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-6b9869d7><span class="visually-hidden" id="sidebar-aria-label" data-v-6b9869d7> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-71286ee5><section class="VPSidebarItem level-0" data-v-71286ee5 data-v-877bfe94><!----><div class="items" data-v-877bfe94><!--[--><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/home" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>Legacy Instructions</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-71286ee5><section class="VPSidebarItem level-0 collapsible" data-v-71286ee5 data-v-877bfe94><div class="item" role="button" tabindex="0" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><h2 class="text" data-v-877bfe94>Configuration</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-877bfe94><span class="vpi-chevron-right caret-icon" data-v-877bfe94></span></div></div><div class="items" data-v-877bfe94><!--[--><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/configuration/auth-config" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>Authelia Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/configuration/authy-duo-config" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>DP-Salad Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/configuration/lldap-config" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>LLDAP Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/configuration/swag-config" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>Swag Config</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-71286ee5><section class="VPSidebarItem level-0 collapsible" data-v-71286ee5 data-v-877bfe94><div class="item" role="button" tabindex="0" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><h2 class="text" data-v-877bfe94>Install</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-877bfe94><span class="vpi-chevron-right caret-icon" data-v-877bfe94></span></div></div><div class="items" data-v-877bfe94><!--[--><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/install/dp-config" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>DP-Salad Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/install/dp-setup" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>DP-Salad Setup</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/install/requirements" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>DP-Salad Minimum Requirements</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/install/salad-setup" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>Salad Setup</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-71286ee5><section class="VPSidebarItem level-0 collapsible" data-v-71286ee5 data-v-877bfe94><div class="item" role="button" tabindex="0" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><h2 class="text" data-v-877bfe94>Maintenance</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-877bfe94><span class="vpi-chevron-right caret-icon" data-v-877bfe94></span></div></div><div class="items" data-v-877bfe94><!--[--><div class="VPSidebarItem level-1 is-link" data-v-877bfe94 data-v-877bfe94><div class="item" data-v-877bfe94><div class="indicator" data-v-877bfe94></div><a class="VPLink link link" href="/maintenance/maintain-guide" data-v-877bfe94><!--[--><p class="text" data-v-877bfe94>Maintenance of the DP-SALA/D Stack</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-39b851b6 data-v-cc09d6e0><div class="VPDoc has-sidebar has-aside" data-v-cc09d6e0 data-v-f87ade32><!--[--><!--]--><div class="container" data-v-f87ade32><div class="aside" data-v-f87ade32><div class="aside-curtain" data-v-f87ade32></div><div class="aside-container" data-v-f87ade32><div class="aside-content" data-v-f87ade32><div class="VPDocAside" data-v-f87ade32 data-v-c0d770e2><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-c0d770e2 data-v-154faa32><div class="content" data-v-154faa32><div class="outline-marker" data-v-154faa32></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-154faa32>On this page</div><ul class="VPDocOutlineItem root" data-v-154faa32 data-v-a993366b><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-c0d770e2></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-f87ade32><div class="content-container" data-v-f87ade32><!--[--><!--]--><main class="main" data-v-f87ade32><div style="position:relative;" class="vp-doc _faq" data-v-f87ade32><div><h1 id="frequently-asked-questions" tabindex="-1">Frequently Asked Questions <a class="header-anchor" href="#frequently-asked-questions" aria-label="Permalink to &quot;Frequently Asked Questions&quot;">​</a></h1><h2 id="how-do-i-insert-question-here" tabindex="-1">How do I [Insert Question Here]? <a class="header-anchor" href="#how-do-i-insert-question-here" aria-label="Permalink to &quot;How do I [Insert Question Here]?&quot;">​</a></h2><p>Quick Q&amp;A for common problems/questions about the DP-SALA/D Stack</p><h2 id="how-do-i-add-a-new-application-to-my-stack" tabindex="-1">How do I add a new application to my stack? <a class="header-anchor" href="#how-do-i-add-a-new-application-to-my-stack" aria-label="Permalink to &quot;How do I add a new application to my stack?&quot;">​</a></h2><p>You have two options:</p><ol><li><p>You can check SWAG&#39;s <em>proxy confs</em> folder for the application you are trying to add in it&#39;s configuration folder.</p><ul><li>You will use the following command: <code>mv /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf.sample /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf</code></li><li>Install the application into your docker network (keep track of the internal port that it uses)</li><li>Then nano into the <em>.conf</em> <code>nano /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf</code></li></ul><ol><li>If you are using a subdomain configuration: <ul><li>You can change the <em>server_name</em> directive to the path you want to use as a subdomain (make sure you leave the .*)</li><li>The <em>$upstream_app</em> should match the docker container name</li><li>The <em>$upstream_port</em> should match the docker internal port</li><li>Everything else can be left unchanged</li></ul></li><li>If you are using a subfolder configuration: <ul><li>The <em>$location</em> directive can be changed after the <em>/</em> to the path you want to use as a subfolder (make sure to leave the <em>^~</em>)</li><li>The <em>$upstream_app</em> should match the docker container name</li><li>The <em>$upstream_port</em> should match the docker internal port</li></ul></li></ol></li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you have the auto-reload docker mod, SWAG <span class="i-simple-icons-linuxserver"></span> will automatically reload the changes, and display them. Otherwise, SWAG <span class="i-simple-icons-linuxserver"></span> will have to be manually reloaded to see the changes.</p></div><ol start="2"><li>If there isn&#39;t a premade template, you can DIY your own using the <code>_template.sub[domain/folder].conf.sample</code>.</li></ol><ul><li><p>You will use the following command: <code>cp /home/[USER]/appdata/swag/nginx/proxy-confs/_template.sub[domain/folder].conf.sample /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf</code></p></li><li><p>Install the application into your docker network (keep track of the internal port that it uses)</p></li><li><p>Then nano into the <em>.conf</em> <code>nano /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf</code></p><ol><li>If you are using a subdomain template: <ul><li>You&#39;ll want to modify anything with <em>&lt;&gt;</em> make sure to remove the <em>&lt;&gt;</em> when you are done.</li></ul></li><li>If you are using a subfolder template: <ul><li>You&#39;ll want to modify anything with <em>&lt;&gt;</em> make sure to remove the <em>&lt;&gt;</em> when you are done.</li></ul></li></ol></li><li><p>Which ever way you decide to do, once you have made the changes, save and exit.</p></li></ul><div class="warning custom-block"><p class="custom-block-title"><strong>THIS IS IMPORTANT!!!</strong></p><p>You&#39;ll want to verify that the <em>$upstream_app</em>, <em>$port</em> and <em>$protocal</em> are correct, otherwise you will keep getting 502 errors when trying to visit them. The web path/container_name doesn&#39;t really matter, you can name it whatever.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Most of the time, the template will work out-of-the-box with all of the changes. However, you may run into an application that requrires more configuration to run behind a reverse proxy. You will have to consult the application&#39;s documentation to find settings that will let it run behind a reverse proxy. SWAG <span class="i-simple-icons-linuxserver"></span> uses NGINX <span class="i-logos-nginx"></span> as it&#39;s base, so most NGINX configurations can be used to have it run behind a reverse proxy.</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you decide to proxy something externally to docker, this comes with the caveat that the <em>$upstream_app</em> must be an IP address (preferably static), and the <em>$upstream_port</em> must be an external port that the application is listening on. Failing to do so, will result in a <strong>502 Bad Gateway</strong> error.</p></div><h2 id="how-do-i-add-lldap-authentication-to-service" tabindex="-1">How do I add LLDAP <span class="i-material-symbols-lock"></span> Authentication to [SERVICE]? <a class="header-anchor" href="#how-do-i-add-lldap-authentication-to-service" aria-label="Permalink to &quot;How do I add LLDAP :material-symbols-lock: Authentication to [SERVICE]?&quot;">​</a></h2><p>First, check to see if LDAP authentication is supported by the application that you are trying to add. Some services/applications either don&#39;t support LDAP auth out of the box, or there is some plugin/addon to add for LDAP auth to function. Do a quick Google search to see if LDAP auth is supported, and if it requires a secure connection. Canvas <span class="i-simple-icons-canvas"></span> in particular requires LDAPS (LDAP over SSL) and will not function unless configured correctly.</p><p>Second, if the app supports LDAP Auth, it usually requires a dedicated user to manage the application, usually called a &quot;<em>Bind User</em>&quot; which you will setup in LLDAP. Try to pick a username that will be descriptive for the service it will bind to. The password that is used should be lengthy and mixtures of characters. The next required parts are the &quot;configuration&quot; parts, which are detailed below:</p><ul><li>User DN/Bind User/User: &quot;cn=[USER],ou=people,dc=[DOMAIN],dc=[TLD]&quot;</li><li>Base/User Search Base: &quot;ou=people,dc=[DOMAIN],dc=[TLD]&quot;</li><li>User Filter(no grouping, UID access): (&amp;(uid={username})(objectClass=person)(ou=people,dc=[DOMAIN],dc=[TLD]))</li><li>User Filter(group access, UID or Email access): (&amp;(objectClass=person)(memberof=cn=[GROUP NAME],ou=groups,dc=[DOMAIN],dc=[TLD])(|(uid={username})(mail={username})))</li><li>User Filter(group access, UID access): (&amp;(objectClass=person)(memberof=cn=[GROUP NAME],ou=groups,dc=[DOMAIN],dc=[TLD]))</li><li>Admin Filter(group access): (memberof=cn=[GROUP NAME]_administrator,ou=groups,dc=[DOMAIN],dc=[TLD])</li></ul><p>These are some typical settings, however, depending on the service or app, there may be an example configuration out there, for example, Authelia for LLDAP has an example config: <a href="https://github.com/lldap/lldap/blob/main/example_configs/authelia_config.yml" target="_blank" rel="noreferrer">https://github.com/lldap/lldap/blob/main/example_configs/authelia_config.yml</a></p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">###############################################################</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Authelia configuration #</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">###############################################################</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># This is just the LDAP part of the Authelia configuration!</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">authentication_backend</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Password reset through authelia works normally.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> password_reset</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> disable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # How often authelia should check if there is an user update in LDAP</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> refresh_interval</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">1m</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ldap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> implementation</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">custom</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Pattern is ldap://HOSTNAME-OR-IP:PORT</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Normal ldap port is 389, standard in LLDAP is 3890</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> url</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap://lldap:3890</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # The dial timeout for LDAP.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> timeout</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">5s</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Use StartTLS with the LDAP connection, TLS not supported right now</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> start_tls</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #tls:</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # skip_verify: false</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # minimum_version: TLS1.2</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Set base dn, like dc=google,dc.com</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> base_dn</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">dc=example,dc=com</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> username_attribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">uid</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # You need to set this to ou=people, because all users are stored in this ou!</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> additional_users_dn</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ou=people</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # To allow sign in both with username and email, one can use a filter like</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (&amp;(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> users_filter</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;(&amp;({username_attribute}={input})(objectClass=person))&quot;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Set this to ou=groups, because all groups are stored in this ou</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> additional_groups_dn</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ou=groups</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # The groups are not displayed in the UI, but this filter works.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> groups_filter</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;(member={dn})&quot;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # The attribute holding the name of the group.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> group_name_attribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">cn</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Email attribute</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> mail_attribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mail</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # The attribute holding the display name of the user. This will be used to greet an authenticated user.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> display_name_attribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">displayName</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # The username and password of the bind user.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # &quot;bind_user&quot; should be the username you created for authentication with the &quot;lldap_strict_readonly&quot; permission. It is not recommended to use an actual admin account here.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # If you are configuring Authelia to change user passwords, then the account used here needs the &quot;lldap_password_manager&quot; permission instead.</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> user</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">uid=bind_user,ou=people,dc=example,dc=com</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Password can also be set using a secret: https://www.authelia.com/docs/configuration/secrets.html</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> password</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;REPLACE_ME&#39;</span></span></code></pre></div><p>Here is a list of the attributes that you can use: uid (username), mail (email address), cn (this could be a username, or a full name be careful), and displayName (usually the full name of the user).</p><p>Not all of these are good for use cases, however, the most commonly used ones are going to be uid and email.</p><p>If this didn&#39;t cover what was needed for adding LDAP auth connectivity to your service, consult Google, or the LLDAP GitHub <span class="i-mdi-github"></span> Example Configs, linked here: <a href="https://github.com/lldap/lldap/tree/main/example_configs" target="_blank" rel="noreferrer">https://github.com/lldap/lldap/tree/main/example_configs</a> which should give you a good starting point to see how to configure the LDAP authentication for your service.</p><p>Here is my recommendation to how user management works:</p><ol><li>Setup dedicated groups that match the application/service name, add all users who use that to the group.</li><li>Filter the user based on the group, if they are in that group, they have permission to access the application.</li></ol><h2 id="how-do-i-handle-user-creation" tabindex="-1">How do I handle user creation? <a class="header-anchor" href="#how-do-i-handle-user-creation" aria-label="Permalink to &quot;How do I handle user creation?&quot;">​</a></h2><p>Once the stack <span class="i-twemoji-green-salad"></span> is all setup, you may want to add users <span class="i-material-symbols-account-circle"></span>. I outline my way of handling user creation and management, but you may do this anyway you like, I&#39;ve done it this way given the constraints of how I host, and handle having users access some or all of my services that I host.</p><p>User Creation:</p><ol><li>Ask for the user&#39;s email address, full name, and if they would like something different for their display name.</li><li>Using their full name, I create a username. Say if the user was named: Alice Example, their username would be <em>aexa</em>. If I already had a duplicate of the username, I&#39;d append a number, starting at 0.</li><li>I would create a temporary password for the user, and then have them go to auth.domain.tld to then &quot;<em>Forgot Password</em>&quot; so that they can setup a password themselves, and have it conform to my password standards I have set.</li><li>I then go to the user page, and add them to their respective groups to let them have access to the services.</li><li>I&#39;d let the user know that some apps will take a bit to pull their information, while some create their profile on sign in. This is completely normal, and give it up to 24 hours for changes to fully propagate through the system.</li></ol><p>This is one way of doing it, but I do have a standard, which I hold to the highest degree. This is important, as it does make finding the user just a little easier when trying to figure out what goes wrong.</p></div></div></main><footer class="VPDocFooter" data-v-f87ade32 data-v-a287ad5f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-a287ad5f><span class="visually-hidden" id="doc-footer-aria-label" data-v-a287ad5f>Pager</span><div class="pager" data-v-a287ad5f><!----></div><div class="pager" data-v-a287ad5f><a class="VPLink link pager-link next" href="/home" data-v-a287ad5f><!--[--><span class="desc" data-v-a287ad5f>Next page</span><span class="title" data-v-a287ad5f>Legacy Instructions</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-39b851b6 data-v-ed47955f><div class="container" data-v-ed47955f><p class="message" data-v-ed47955f>Docs created by @ldez</p><p class="copyright" data-v-ed47955f>Copyright © 2024-present @Cdez</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"cf-tunnel.md\":\"DCFtN7s5\",\"changelog.md\":\"DF8BSN3_\",\"configuration_auth-config.md\":\"CWCNki4x\",\"configuration_authy-duo-config.md\":\"Czz1BBMP\",\"configuration_lldap-config.md\":\"r20NA1Ia\",\"configuration_swag-config.md\":\"DsoCqRQq\",\"docker-compose.md\":\"CiAGvlkZ\",\"faq.md\":\"By3ovNs1\",\"home.md\":\"DWjC1jWa\",\"index.md\":\"DDpI40D1\",\"install_dp-config.md\":\"Cllv2ZYA\",\"install_dp-setup.md\":\"Bx00pjFf\",\"install_requirements.md\":\"DnNTxVlB\",\"install_salad-setup.md\":\"uqD3xfuF\",\"maintenance_maintain-guide.md\":\"DC42-hYW\",\"x11-guide.md\":\"BPhK1sNP\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"DP-Salad\",\"description\":\"A guide to fully deploy the DP-Salad Stack\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":\"dark\",\"themeConfig\":{\"logo\":\"/saladicon.png\",\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"FAQ\",\"link\":\"/faq\"},{\"text\":\"Docker Compose\",\"link\":\"/docker-compose\"},{\"text\":\"Maintenance\",\"link\":\"/maintenance/maintain-guide\"},{\"text\":\"Install\",\"items\":[{\"text\":\"DP-Salad Requirements\",\"link\":\"/install/requirements\"},{\"text\":\"Installing Debian and Portainer\",\"link\":\"/install/dp-setup\"},{\"text\":\"Configuration\",\"link\":\"/install/dp-config\"},{\"text\":\"DP-Salad Setup\",\"link\":\"/install/salad-setup\"}]},{\"text\":\"Config\",\"items\":[{\"text\":\"Swag Config\",\"link\":\"/configuration/swag-config\"},{\"text\":\"Authelia Config\",\"link\":\"/configuration/auth-config\"},{\"text\":\"LLDAP Config\",\"link\":\"/configuration/lldap-config\"},{\"text\":\"Authy/Duo Config\",\"link\":\"/configuration/authy-duo-config\"}]},{\"text\":\"Misc\",\"items\":[{\"text\":\"X11 Guide\",\"link\":\"/x11-guide\"},{\"text\":\"Cloudflare Tunneling\",\"link\":\"/cf-tunnel\"}]}],\"sidebar\":[{\"text\":\"Legacy Instructions\",\"link\":\"/home\"},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Authelia Configuration\",\"link\":\"/configuration/auth-config\"},{\"text\":\"DP-Salad Configuration\",\"link\":\"/configuration/authy-duo-config\"},{\"text\":\"LLDAP Configuration\",\"link\":\"/configuration/lldap-config\"},{\"text\":\"Swag Config\",\"link\":\"/configuration/swag-config\"}],\"collapsed\":false},{\"text\":\"Install\",\"items\":[{\"text\":\"DP-Salad Configuration\",\"link\":\"/install/dp-config\"},{\"text\":\"DP-Salad Setup\",\"link\":\"/install/dp-setup\"},{\"text\":\"DP-Salad Minimum Requirements\",\"link\":\"/install/requirements\"},{\"text\":\"Salad Setup\",\"link\":\"/install/salad-setup\"}],\"collapsed\":false},{\"text\":\"Maintenance\",\"items\":[{\"text\":\"Maintenance of the DP-SALA/D Stack\",\"link\":\"/maintenance/maintain-guide\"}],\"collapsed\":false}],\"search\":{\"provider\":\"local\"},\"footer\":{\"message\":\"Docs created by @ldez\",\"copyright\":\"Copyright © 2024-present @Cdez\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
</body>
</html>