init
This commit is contained in:
commit
f79ed7c8e4
111 changed files with 14931 additions and 0 deletions
102
.vitepress/config.mts
Normal file
102
.vitepress/config.mts
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
import { defineConfig } from "vitepress";
|
||||
import UnoCSS from "unocss/vite";
|
||||
import { emojiRender, defs, movePlugin } from "./configs/";
|
||||
import { generateSidebar } from "vitepress-sidebar";
|
||||
|
||||
// @unocss-include
|
||||
|
||||
// https://vitepress.dev/reference/site-config
|
||||
export default defineConfig({
|
||||
title: "DP-Salad",
|
||||
description: "A guide to fully deploy the DP-Salad Stack",
|
||||
cleanUrls: true,
|
||||
appearance: "dark",
|
||||
themeConfig: {
|
||||
// https://vitepress.dev/reference/default-theme-config
|
||||
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: generateSidebar({
|
||||
documentRootPath: "/",
|
||||
collapsed: false,
|
||||
capitalizeFirst: true,
|
||||
useTitleFromFrontmatter: true,
|
||||
manualSortFileNameByPriority: ["home.md"],
|
||||
excludePattern: [
|
||||
"changelog.md",
|
||||
"cf-tunnel.md",
|
||||
"faq.md",
|
||||
"docker-compose.md",
|
||||
"x11-guide.md",
|
||||
],
|
||||
}),
|
||||
|
||||
search: {
|
||||
provider: "local",
|
||||
},
|
||||
footer: {
|
||||
message: "Docs created by @ldez",
|
||||
copyright: "Copyright © 2024-present @Cdez",
|
||||
},
|
||||
},
|
||||
head: [
|
||||
["link", { rel: "icon", type: "image/x-icon", href: "/asset/favicon.ico" }],
|
||||
],
|
||||
markdown: {
|
||||
emoji: { defs },
|
||||
config(md) {
|
||||
md.use(emojiRender);
|
||||
},
|
||||
},
|
||||
vite: {
|
||||
plugins: [
|
||||
UnoCSS({
|
||||
configFile: "../unocss.config.ts",
|
||||
}),
|
||||
{
|
||||
name: "custom:adjust-order",
|
||||
configResolved(c) {
|
||||
movePlugin(
|
||||
c.plugins as any,
|
||||
"vitepress",
|
||||
"before",
|
||||
"unocss:transformers:pre"
|
||||
);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
76
.vitepress/configs/emoji.ts
Normal file
76
.vitepress/configs/emoji.ts
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
import type { MarkdownRenderer } from "vitepress";
|
||||
import type { IconifyJSON } from "@iconify-json/octicon";
|
||||
|
||||
// Icons that need to be used should be imported here
|
||||
import { icons as twemoji } from "@iconify-json/twemoji";
|
||||
import { icons as octicon } from "@iconify-json/octicon";
|
||||
import { icons as logos } from "@iconify-json/logos";
|
||||
import { icons as ic } from "@iconify-json/ic";
|
||||
import { icons as mingcute } from "@iconify-json/mingcute";
|
||||
import { icons as mdi } from "@iconify-json/mdi";
|
||||
import { icons as materials } from "@iconify-json/material-symbols";
|
||||
import { icons as simple } from "@iconify-json/simple-icons";
|
||||
import { icons as gg } from "@iconify-json/gg";
|
||||
|
||||
// 1. Install emoji pack with `pnpm add -g @iconify-json/<icon>`
|
||||
// 2. Import them like I did above
|
||||
// 3. Add it to this emojis array, like I did for octicon, and add a prefix
|
||||
const emojis: { pack: IconifyJSON; prefix?: string }[] = [
|
||||
// Default emojis (twemoji)
|
||||
{ pack: twemoji },
|
||||
// octicon emojis, prefixed with "octicon-"
|
||||
{ pack: octicon, prefix: "octicon-" },
|
||||
{ pack: logos, prefix: "logos-" },
|
||||
{ pack: ic, prefix: "ic-" },
|
||||
{ pack: mingcute, prefix: "mingcute-" },
|
||||
{ pack: mdi, prefix: "mdi-" },
|
||||
{ pack: materials, prefix: "material-symbols-" },
|
||||
{ pack: simple, prefix: "simple-icons-" },
|
||||
{ pack: gg, prefix: "gg-" },
|
||||
];
|
||||
|
||||
const defs: Record<string, string> = {};
|
||||
|
||||
for (const elem of emojis) {
|
||||
for (const key in elem.pack.icons) {
|
||||
if (elem.prefix) defs[elem.prefix + key] = "";
|
||||
else defs[key] = "";
|
||||
}
|
||||
}
|
||||
|
||||
export { defs };
|
||||
|
||||
export function emojiRender(md: MarkdownRenderer) {
|
||||
md.renderer.rules.emoji = (tokens, idx) => {
|
||||
for (const emoji of emojis) {
|
||||
if (tokens[idx].markup.startsWith(emoji.prefix!)) {
|
||||
return `<span class="i-${tokens[idx].markup}"></span>`;
|
||||
}
|
||||
}
|
||||
|
||||
return `<span class="i-twemoji-${tokens[idx].markup}"></span>`;
|
||||
};
|
||||
}
|
||||
|
||||
export function movePlugin(
|
||||
plugins: { name: string }[],
|
||||
pluginAName: string,
|
||||
order: "before" | "after",
|
||||
pluginBName: string,
|
||||
) {
|
||||
const pluginBIndex = plugins.findIndex((p) => p.name === pluginBName);
|
||||
if (pluginBIndex === -1) return;
|
||||
|
||||
const pluginAIndex = plugins.findIndex((p) => p.name === pluginAName);
|
||||
if (pluginAIndex === -1) return;
|
||||
|
||||
if (order === "before" && pluginAIndex > pluginBIndex) {
|
||||
const pluginA = plugins.splice(pluginAIndex, 1)[0];
|
||||
plugins.splice(pluginBIndex, 0, pluginA);
|
||||
}
|
||||
|
||||
if (order === "after" && pluginAIndex < pluginBIndex) {
|
||||
const pluginA = plugins.splice(pluginAIndex, 1)[0];
|
||||
plugins.splice(pluginBIndex, 0, pluginA);
|
||||
}
|
||||
}
|
||||
1
.vitepress/configs/index.ts
Normal file
1
.vitepress/configs/index.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from "./emoji";
|
||||
23
.vitepress/dist/404.html
vendored
Normal file
23
.vitepress/dist/404.html
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-US" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>404 | DP-Salad</title>
|
||||
<meta name="description" content="Not Found">
|
||||
<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="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>
|
||||
<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>
|
||||
BIN
.vitepress/dist/asset/favicon.ico
vendored
Normal file
BIN
.vitepress/dist/asset/favicon.ico
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
1
.vitepress/dist/assets/app.D2AcNbxn.js
vendored
Normal file
1
.vitepress/dist/assets/app.D2AcNbxn.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{R as i}from"./chunks/theme.Chl5AtGS.js";import{R as o,a4 as u,a5 as c,a6 as l,a7 as f,a8 as d,a9 as m,aa as h,ab as g,ac as A,ad as v,d as P,u as R,v as w,s as y,ae as C,af as b,ag as E,a2 as S}from"./chunks/framework.DtMx7FFi.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=p(i),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
|
||||
70
.vitepress/dist/assets/cf-tunnel.md.DCFtN7s5.js
vendored
Normal file
70
.vitepress/dist/assets/cf-tunnel.md.DCFtN7s5.js
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
import{_ as i,c as a,a3 as n,o as l}from"./chunks/framework.DtMx7FFi.js";const e="/cat-typing.gif",g=JSON.parse('{"title":"Cloudflare Tunneling","description":"","frontmatter":{"title":"Cloudflare Tunneling"},"headers":[],"relativePath":"cf-tunnel.md","filePath":"cf-tunnel.md"}'),t={name:"cf-tunnel.md"};function p(h,s,k,E,r,d){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="cloudflare-tunnel-setup" tabindex="-1">Cloudflare Tunnel Setup: <span class="i-simple-icons-cloudflare"></span> <span class="i-mingcute-tunnel-line"></span> <a class="header-anchor" href="#cloudflare-tunnel-setup" aria-label="Permalink to "Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:""></a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don't want to open your network's ports exposing them to the outside.</p><div class="tip custom-block"><p class="custom-block-title">Note:</p><p>You do not need to have your domain registered through Cloudflare <span class="i-simple-icons-cloudflare"></span> to use Cloudflare Tunnels</p></div><h2 id="the-solution" tabindex="-1">THE SOLUTION? <a class="header-anchor" href="#the-solution" aria-label="Permalink to "THE SOLUTION?""></a></h2><p><strong>Cloudflare Tunnels</strong> <span class="i-twemoji-party-popper"></span></p><p>Of course, running the stack this way comes with some extra configuartion on both the Docker side and Cloudflare/domain side.</p><p>This is an excerpt from the <a href="/docker-compose">One-Click Docker Compose file</a>:</p><p>In order to make this work with cloudflare tunneling, you must add some more lines to your docker compose. The first being a directive which is highlighted below:</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>Next, you'll want to generate an API key <span class="i-material-symbols-key-outline"></span> with Cloudflare <span class="i-simple-icons-cloudflare"></span>, go to <em>Overview</em> in your domain, and click "<em>get your api token</em>", click <em>Create Token</em>, use → "<em>Edit zone DNS</em>" template, add a permission, select "<em>Account</em>", → "<em>Cloudflare Tunnel</em>", → "<em>Edit</em>", under account resources, include your account, under zone resources, include your domain. Continue with setup, <strong>make sure you keep track of the API key somewhere</strong>.</p><p>After you have completed these steps, you will need to add these credentials to your Swag configuration in the <strong>docker-compose.yml</strong>. After the <em>Docker_Mods</em> environment variable, add these lines:</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 has-focused-lines vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ZONE_ID=zone id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ACCOUNT_ID=account id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_API_TOKEN=api token generated</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_NAME=create a tunnel, name it whatever</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_PASSWORD=generate a long password</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>You're not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You'll need to add more to finish the installation: First, <code>nano /home/[USER]/appdata/swag/tunnelconfig.yml</code>, and add these contents:</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:#22863A;--shiki-dark:#85E89D;">ingress</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"*.domain.tld"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_status:404</span></span></code></pre></div><p>Then, edit the <code>/home/[USER]/appdata/swag/dns-conf/cloudflare.ini</code>, add the API token, you'll comment the top two lines, add the token after uncommenting the bottom line.</p><details class="details custom-block"><summary><em>insert funni meeme here:</em></summary><p><img src="`+e+'" alt="/cat-typing.gif"></p></details>',17)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default};
|
||||
70
.vitepress/dist/assets/cf-tunnel.md.DCFtN7s5.lean.js
vendored
Normal file
70
.vitepress/dist/assets/cf-tunnel.md.DCFtN7s5.lean.js
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
import{_ as i,c as a,a3 as n,o as l}from"./chunks/framework.DtMx7FFi.js";const e="/cat-typing.gif",g=JSON.parse('{"title":"Cloudflare Tunneling","description":"","frontmatter":{"title":"Cloudflare Tunneling"},"headers":[],"relativePath":"cf-tunnel.md","filePath":"cf-tunnel.md"}'),t={name:"cf-tunnel.md"};function p(h,s,k,E,r,d){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="cloudflare-tunnel-setup" tabindex="-1">Cloudflare Tunnel Setup: <span class="i-simple-icons-cloudflare"></span> <span class="i-mingcute-tunnel-line"></span> <a class="header-anchor" href="#cloudflare-tunnel-setup" aria-label="Permalink to "Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:""></a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don't want to open your network's ports exposing them to the outside.</p><div class="tip custom-block"><p class="custom-block-title">Note:</p><p>You do not need to have your domain registered through Cloudflare <span class="i-simple-icons-cloudflare"></span> to use Cloudflare Tunnels</p></div><h2 id="the-solution" tabindex="-1">THE SOLUTION? <a class="header-anchor" href="#the-solution" aria-label="Permalink to "THE SOLUTION?""></a></h2><p><strong>Cloudflare Tunnels</strong> <span class="i-twemoji-party-popper"></span></p><p>Of course, running the stack this way comes with some extra configuartion on both the Docker side and Cloudflare/domain side.</p><p>This is an excerpt from the <a href="/docker-compose">One-Click Docker Compose file</a>:</p><p>In order to make this work with cloudflare tunneling, you must add some more lines to your docker compose. The first being a directive which is highlighted below:</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>Next, you'll want to generate an API key <span class="i-material-symbols-key-outline"></span> with Cloudflare <span class="i-simple-icons-cloudflare"></span>, go to <em>Overview</em> in your domain, and click "<em>get your api token</em>", click <em>Create Token</em>, use → "<em>Edit zone DNS</em>" template, add a permission, select "<em>Account</em>", → "<em>Cloudflare Tunnel</em>", → "<em>Edit</em>", under account resources, include your account, under zone resources, include your domain. Continue with setup, <strong>make sure you keep track of the API key somewhere</strong>.</p><p>After you have completed these steps, you will need to add these credentials to your Swag configuration in the <strong>docker-compose.yml</strong>. After the <em>Docker_Mods</em> environment variable, add these lines:</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 has-focused-lines vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ZONE_ID=zone id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ACCOUNT_ID=account id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_API_TOKEN=api token generated</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_NAME=create a tunnel, name it whatever</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_PASSWORD=generate a long password</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>You're not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You'll need to add more to finish the installation: First, <code>nano /home/[USER]/appdata/swag/tunnelconfig.yml</code>, and add these contents:</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:#22863A;--shiki-dark:#85E89D;">ingress</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"*.domain.tld"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_status:404</span></span></code></pre></div><p>Then, edit the <code>/home/[USER]/appdata/swag/dns-conf/cloudflare.ini</code>, add the API token, you'll comment the top two lines, add the token after uncommenting the bottom line.</p><details class="details custom-block"><summary><em>insert funni meeme here:</em></summary><p><img src="`+e+'" alt="/cat-typing.gif"></p></details>',17)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default};
|
||||
1
.vitepress/dist/assets/changelog.md.DF8BSN3_.js
vendored
Normal file
1
.vitepress/dist/assets/changelog.md.DF8BSN3_.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as l,c as a,a3 as i,o}from"./chunks/framework.DtMx7FFi.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"title":"Changelog","sidebar":false},"headers":[],"relativePath":"changelog.md","filePath":"changelog.md"}'),d={name:"changelog.md"};function n(t,e,s,r,c,h){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="changelog" tabindex="-1">Changelog <a class="header-anchor" href="#changelog" aria-label="Permalink to "Changelog""></a></h1><h2 id="version-1-1-0-11-20-24" tabindex="-1">Version 1.1.0: 11-20-24 <a class="header-anchor" href="#version-1-1-0-11-20-24" aria-label="Permalink to "Version 1.1.0: 11-20-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added code block closure functionality to minify pages -ldez</li><li>Added back Cdez's credits -ldez</li><li>Moved cloudflare tunneling to misc -ldez</li></ul><h2 id="version-1-0-4-10-11-24" tabindex="-1">Version 1.0.4: 10-11-24 <a class="header-anchor" href="#version-1-0-4-10-11-24" aria-label="Permalink to "Version 1.0.4: 10-11-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added miscellaneous section -ldez</li></ul><h2 id="version-1-0-3-07-07-24" tabindex="-1">Version 1.0.3: 07-07-24 <a class="header-anchor" href="#version-1-0-3-07-07-24" aria-label="Permalink to "Version 1.0.3: 07-07-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Removed Google Domains as they have moved to shitspace -ldez</li><li>Added a Cisco Duo logo -ldez</li></ul><h2 id="version-1-0-2-06-22-24" tabindex="-1">Version 1.0.2: 06-22-24 <a class="header-anchor" href="#version-1-0-2-06-22-24" aria-label="Permalink to "Version 1.0.2: 06-22-24""></a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed "mini-req" to just "requirements" -ldez</li><li>Fixed the formatting issues on dp-setup -ldez</li></ul><h2 id="version-1-0-1-06-19-24" tabindex="-1">Version 1.0.1: 06-19-24 <a class="header-anchor" href="#version-1-0-1-06-19-24" aria-label="Permalink to "Version 1.0.1: 06-19-24""></a></h2><ul><li>Fixed some documentation -ldez</li><li>Added section about cloudflare tunneling -ldez</li><li>Added more commands to successfully deploy dp-stack -ldez</li><li>Added an explanation for Debian's sudo -ldez</li><li>Added the FAQ expanlanation to add an application -ldez</li></ul>',11)]))}const g=l(d,[["render",n]]);export{m as __pageData,g as default};
|
||||
1
.vitepress/dist/assets/changelog.md.DF8BSN3_.lean.js
vendored
Normal file
1
.vitepress/dist/assets/changelog.md.DF8BSN3_.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as l,c as a,a3 as i,o}from"./chunks/framework.DtMx7FFi.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"title":"Changelog","sidebar":false},"headers":[],"relativePath":"changelog.md","filePath":"changelog.md"}'),d={name:"changelog.md"};function n(t,e,s,r,c,h){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="changelog" tabindex="-1">Changelog <a class="header-anchor" href="#changelog" aria-label="Permalink to "Changelog""></a></h1><h2 id="version-1-1-0-11-20-24" tabindex="-1">Version 1.1.0: 11-20-24 <a class="header-anchor" href="#version-1-1-0-11-20-24" aria-label="Permalink to "Version 1.1.0: 11-20-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added code block closure functionality to minify pages -ldez</li><li>Added back Cdez's credits -ldez</li><li>Moved cloudflare tunneling to misc -ldez</li></ul><h2 id="version-1-0-4-10-11-24" tabindex="-1">Version 1.0.4: 10-11-24 <a class="header-anchor" href="#version-1-0-4-10-11-24" aria-label="Permalink to "Version 1.0.4: 10-11-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added miscellaneous section -ldez</li></ul><h2 id="version-1-0-3-07-07-24" tabindex="-1">Version 1.0.3: 07-07-24 <a class="header-anchor" href="#version-1-0-3-07-07-24" aria-label="Permalink to "Version 1.0.3: 07-07-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Removed Google Domains as they have moved to shitspace -ldez</li><li>Added a Cisco Duo logo -ldez</li></ul><h2 id="version-1-0-2-06-22-24" tabindex="-1">Version 1.0.2: 06-22-24 <a class="header-anchor" href="#version-1-0-2-06-22-24" aria-label="Permalink to "Version 1.0.2: 06-22-24""></a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed "mini-req" to just "requirements" -ldez</li><li>Fixed the formatting issues on dp-setup -ldez</li></ul><h2 id="version-1-0-1-06-19-24" tabindex="-1">Version 1.0.1: 06-19-24 <a class="header-anchor" href="#version-1-0-1-06-19-24" aria-label="Permalink to "Version 1.0.1: 06-19-24""></a></h2><ul><li>Fixed some documentation -ldez</li><li>Added section about cloudflare tunneling -ldez</li><li>Added more commands to successfully deploy dp-stack -ldez</li><li>Added an explanation for Debian's sudo -ldez</li><li>Added the FAQ expanlanation to add an application -ldez</li></ul>',11)]))}const g=l(d,[["render",n]]);export{m as __pageData,g as default};
|
||||
1
.vitepress/dist/assets/chunks/@localSearchIndexroot.DDTBqYgg.js
vendored
Normal file
1
.vitepress/dist/assets/chunks/@localSearchIndexroot.DDTBqYgg.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
.vitepress/dist/assets/chunks/VPLocalSearchBox.BgYvNrGg.js
vendored
Normal file
8
.vitepress/dist/assets/chunks/VPLocalSearchBox.BgYvNrGg.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
.vitepress/dist/assets/chunks/framework.DtMx7FFi.js
vendored
Normal file
18
.vitepress/dist/assets/chunks/framework.DtMx7FFi.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
.vitepress/dist/assets/chunks/theme.Chl5AtGS.js
vendored
Normal file
2
.vitepress/dist/assets/chunks/theme.Chl5AtGS.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1325
.vitepress/dist/assets/configuration_auth-config.md.CWCNki4x.js
vendored
Normal file
1325
.vitepress/dist/assets/configuration_auth-config.md.CWCNki4x.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1325
.vitepress/dist/assets/configuration_auth-config.md.CWCNki4x.lean.js
vendored
Normal file
1325
.vitepress/dist/assets/configuration_auth-config.md.CWCNki4x.lean.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
.vitepress/dist/assets/configuration_authy-duo-config.md.Czz1BBMP.js
vendored
Normal file
1
.vitepress/dist/assets/configuration_authy-duo-config.md.Czz1BBMP.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as t,c as o,a3 as a,o as i}from"./chunks/framework.DtMx7FFi.js";const d=JSON.parse('{"title":"DP-Salad Configuration","description":"","frontmatter":{"title":"DP-Salad Configuration"},"headers":[],"relativePath":"configuration/authy-duo-config.md","filePath":"configuration/authy-duo-config.md"}'),n={name:"configuration/authy-duo-config.md"};function s(r,e,u,l,h,c){return i(),o("div",null,e[0]||(e[0]=[a('<h1 id="authy-duo-configuration" tabindex="-1">Authy/Duo Configuration <a class="header-anchor" href="#authy-duo-configuration" aria-label="Permalink to "Authy/Duo Configuration""></a></h1><p>This is like one of those "Choose Your Own Adventure" books! Pick one, not the other, it may be hard to swap later on. You may be able to give your user a choice too! 2FA is handled by either Authelia using an 8 digit code that generates through Authy <span class="i-logos-authy"></span> or it can be passed off to Duo <span class="i-simple-icons-cisco"></span> to handle, and then "reinjected" back into the authentication process later on. I'll outline steps for both, and you can choose the method(s) you want your users to be able to 2FA.</p><hr><p>Authy is probably the easiest, and the cheapest way to configure 2FA, especially if you are going to have more than 5 users.</p><p>The default for the SALA/D Stack for 2FA for the more technical people is SHA1, 8 Digits</p><p>All this means for the user is what applications are supported, list is below:</p><ul><li><a href="https://bitwarden.com" target="_blank" rel="noreferrer">Bitwarden</a> <span class="i-simple-icons-bitwarden"></span> / <a href="https://github.com/dani-garcia/vaultwarden" target="_blank" rel="noreferrer">Vaultwarden</a> <span class="i-simple-icons-vaultwarden"></span> (Password Managers, Vaultwarden can be selfhosted!, 2FA is setup in addition to account)</li><li>Authy <span class="i-logos-authy"></span> (Recommended application, named as the best for the stack)</li><li>Aegis (Supported, never used. YMMV)</li></ul><p>These three options are supported for 2FA for Authelia <span class="i-simple-icons-authelia"></span>. It is recommended to actually set this up, as it prevents complete lockouts.</p><hr><p>Duo <span class="i-simple-icons-cisco"></span> is another way to configure 2FA. If you enable Duo 2FA, you'll need to consult the documentation for Duo setup via Authelia, I've linked some setup links here.</p><p><a href="https://www.authelia.com/configuration/second-factor/duo/" target="_blank" rel="noreferrer">https://www.authelia.com/configuration/second-factor/duo/</a></p><p><a href="https://www.authelia.com/overview/authentication/push-notification/" target="_blank" rel="noreferrer">https://www.authelia.com/overview/authentication/push-notification/</a></p><p>You'll need to modify the configuration of Authelia to finish the setup of 2FA via Duo.</p>',13)]))}const f=t(n,[["render",s]]);export{d as __pageData,f as default};
|
||||
1
.vitepress/dist/assets/configuration_authy-duo-config.md.Czz1BBMP.lean.js
vendored
Normal file
1
.vitepress/dist/assets/configuration_authy-duo-config.md.Czz1BBMP.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as t,c as o,a3 as a,o as i}from"./chunks/framework.DtMx7FFi.js";const d=JSON.parse('{"title":"DP-Salad Configuration","description":"","frontmatter":{"title":"DP-Salad Configuration"},"headers":[],"relativePath":"configuration/authy-duo-config.md","filePath":"configuration/authy-duo-config.md"}'),n={name:"configuration/authy-duo-config.md"};function s(r,e,u,l,h,c){return i(),o("div",null,e[0]||(e[0]=[a('<h1 id="authy-duo-configuration" tabindex="-1">Authy/Duo Configuration <a class="header-anchor" href="#authy-duo-configuration" aria-label="Permalink to "Authy/Duo Configuration""></a></h1><p>This is like one of those "Choose Your Own Adventure" books! Pick one, not the other, it may be hard to swap later on. You may be able to give your user a choice too! 2FA is handled by either Authelia using an 8 digit code that generates through Authy <span class="i-logos-authy"></span> or it can be passed off to Duo <span class="i-simple-icons-cisco"></span> to handle, and then "reinjected" back into the authentication process later on. I'll outline steps for both, and you can choose the method(s) you want your users to be able to 2FA.</p><hr><p>Authy is probably the easiest, and the cheapest way to configure 2FA, especially if you are going to have more than 5 users.</p><p>The default for the SALA/D Stack for 2FA for the more technical people is SHA1, 8 Digits</p><p>All this means for the user is what applications are supported, list is below:</p><ul><li><a href="https://bitwarden.com" target="_blank" rel="noreferrer">Bitwarden</a> <span class="i-simple-icons-bitwarden"></span> / <a href="https://github.com/dani-garcia/vaultwarden" target="_blank" rel="noreferrer">Vaultwarden</a> <span class="i-simple-icons-vaultwarden"></span> (Password Managers, Vaultwarden can be selfhosted!, 2FA is setup in addition to account)</li><li>Authy <span class="i-logos-authy"></span> (Recommended application, named as the best for the stack)</li><li>Aegis (Supported, never used. YMMV)</li></ul><p>These three options are supported for 2FA for Authelia <span class="i-simple-icons-authelia"></span>. It is recommended to actually set this up, as it prevents complete lockouts.</p><hr><p>Duo <span class="i-simple-icons-cisco"></span> is another way to configure 2FA. If you enable Duo 2FA, you'll need to consult the documentation for Duo setup via Authelia, I've linked some setup links here.</p><p><a href="https://www.authelia.com/configuration/second-factor/duo/" target="_blank" rel="noreferrer">https://www.authelia.com/configuration/second-factor/duo/</a></p><p><a href="https://www.authelia.com/overview/authentication/push-notification/" target="_blank" rel="noreferrer">https://www.authelia.com/overview/authentication/push-notification/</a></p><p>You'll need to modify the configuration of Authelia to finish the setup of 2FA via Duo.</p>',13)]))}const f=t(n,[["render",s]]);export{d as __pageData,f as default};
|
||||
131
.vitepress/dist/assets/configuration_lldap-config.md.r20NA1Ia.js
vendored
Normal file
131
.vitepress/dist/assets/configuration_lldap-config.md.r20NA1Ia.js
vendored
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
import{_ as a,c as i,a3 as n,o as e}from"./chunks/framework.DtMx7FFi.js";const c=JSON.parse('{"title":"LLDAP Configuration","description":"","frontmatter":{"title":"LLDAP Configuration"},"headers":[],"relativePath":"configuration/lldap-config.md","filePath":"configuration/lldap-config.md"}'),t={name:"configuration/lldap-config.md"};function l(p,s,h,o,r,k){return e(),i("div",null,s[0]||(s[0]=[n(`<h1 id="lldap-configuration" tabindex="-1">LLDAP Configuration <span class="i-material-symbols-lock"></span> <a class="header-anchor" href="#lldap-configuration" aria-label="Permalink to "LLDAP Configuration :material-symbols-lock:""></a></h1><p>LLDAP <span class="i-material-symbols-lock"></span> is the <em>Light Lightweight Directory Access Protocol</em>, and for our purposes, it will store all the information that we have on our users, like usernames, emails, and hashed passwords. These are the typical values, and only a few more exist in this light implementation of LDAP. I include a sample config file if you don't want to set values in the Docker Compose file.</p><p>As with the Authelia <span class="i-simple-icons-authelia"></span> Configuration, please change things in square brackets to your relevant values. This file uses <strong>REPLACE_WITH</strong> to tell you where to replace other such values like secrets/tokens.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</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;">## Default configuration for Docker.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## All the values can be overridden through environment variables, prefixed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## with "LLDAP_". For instance, "ldap_port" can be overridden with the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## "LLDAP_LDAP_PORT" variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Tune the logging to be more verbose by setting this to be true.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_VERBOSE environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># verbose=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the LDAP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "ldap_host" to "::":</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the LDAP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_port = 3890</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the HTTP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "http_host" to "::".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the HTTP server, for user login and</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_port = 17170</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The public URL of the server, for password reset links.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#http_url = "http://localhost"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Random secret for JWT signature.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This secret should be random, and should be shared with application</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## servers that need to consume the JWTs.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Changing this secret will invalidate all user sessions and require</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## them to re-login.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You should probably set it through the LLDAP_JWT_SECRET environment</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## variable from a secret ".env" file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_JWT_SECRET_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can generate it with (on linux):</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\\''()*+,-./:;<=>?@[\\]^_{|}~' </dev/urandom | head -c 32; echo ''</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = "REPLACE_WITH_RANDOM"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Base DN for LDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This is usually your domain name, and is used as a</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## namespace for your users. The choice is arbitrary, but will be needed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to configure the LDAP integration with other services.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The sample value is for "example.com", but you can extend it with as</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many "dc" as you want, and you don't actually need to own the domain</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## name.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the LDAP interface, a value of "admin" here will create the LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the administration interface, this is the username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_dn = "admin"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin email.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Email for the admin account. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user, and can safely be omitted.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_email = "admin@[DOMAIN.TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Password for the admin account, both for the LDAP bind and for the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration interface. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## It should be minimum 8 characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_LDAP_USER_PASS environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_LDAP_USER_PASS_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: you can create another admin user for user administration, this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is just the default one.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_pass = "REPLACE_WITH_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Database URL.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This encodes the type of database (SQlite, MySQL, or PostgreSQL)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## , the path, the user, password, and sometimes the mode (when</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## relevant).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: SQlite should come with "?mode=rwc" to create the DB</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## if not present.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Example URLs:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "postgres://postgres-user:password@postgres-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "mysql://mysql-user:password@mysql-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">##</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be overridden with the LLDAP_DATABASE_URL env variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">database_url = "sqlite:///data/users.db?mode=rwc"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Private key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Contains the secret private key used to store the passwords safely.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note that even with a database dump and the private key, an attacker</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## would still have to perform an (expensive) brute force attack to find</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## each password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Randomly generated on first run if it doesn't exist.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Alternatively, you can use key_seed to override this instead of relying on</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## a file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_FILE</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">key_file = "/data/private_key"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Seed to generate the server private key, see key_file above.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be any random string, the recommendation is that it's at least 12</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_SEED</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_seed = "RanD0m STR1ng"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Ignored attributes.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Some services will request attributes that are not present in LLDAP. When it</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is the case, LLDAP will warn about the attribute being unknown. If you want</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to ignore the attribute and the service works without, you can add it to this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## list to silence the warning.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_user_attributes = [ "sAMAccountName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ "mail", "userPrincipalName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure SMTP parameters, to send password reset emails.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">smtp_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enabled password reset via email, from LLDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enable_password_reset=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#server="smtp.gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP port.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=587</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = "TLS"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP user, usually your email address.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#user="sender@gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#password="password"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The header field, optional: how the sender appears in the email. The first</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is a free-form name, followed by an email between <>.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from="LLDAP Admin <sender@gmail.com>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Same for reply-to, optional.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#reply_to="Do not reply <noreply@localhost>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldaps_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enable LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enabled=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Port on which to listen.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=6360</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#cert_file="/data/cert.pem"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_file="/data/key.pem"</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};
|
||||
131
.vitepress/dist/assets/configuration_lldap-config.md.r20NA1Ia.lean.js
vendored
Normal file
131
.vitepress/dist/assets/configuration_lldap-config.md.r20NA1Ia.lean.js
vendored
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
import{_ as a,c as i,a3 as n,o as e}from"./chunks/framework.DtMx7FFi.js";const c=JSON.parse('{"title":"LLDAP Configuration","description":"","frontmatter":{"title":"LLDAP Configuration"},"headers":[],"relativePath":"configuration/lldap-config.md","filePath":"configuration/lldap-config.md"}'),t={name:"configuration/lldap-config.md"};function l(p,s,h,o,r,k){return e(),i("div",null,s[0]||(s[0]=[n(`<h1 id="lldap-configuration" tabindex="-1">LLDAP Configuration <span class="i-material-symbols-lock"></span> <a class="header-anchor" href="#lldap-configuration" aria-label="Permalink to "LLDAP Configuration :material-symbols-lock:""></a></h1><p>LLDAP <span class="i-material-symbols-lock"></span> is the <em>Light Lightweight Directory Access Protocol</em>, and for our purposes, it will store all the information that we have on our users, like usernames, emails, and hashed passwords. These are the typical values, and only a few more exist in this light implementation of LDAP. I include a sample config file if you don't want to set values in the Docker Compose file.</p><p>As with the Authelia <span class="i-simple-icons-authelia"></span> Configuration, please change things in square brackets to your relevant values. This file uses <strong>REPLACE_WITH</strong> to tell you where to replace other such values like secrets/tokens.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</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;">## Default configuration for Docker.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## All the values can be overridden through environment variables, prefixed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## with "LLDAP_". For instance, "ldap_port" can be overridden with the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## "LLDAP_LDAP_PORT" variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Tune the logging to be more verbose by setting this to be true.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_VERBOSE environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># verbose=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the LDAP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "ldap_host" to "::":</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the LDAP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_port = 3890</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the HTTP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "http_host" to "::".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the HTTP server, for user login and</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_port = 17170</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The public URL of the server, for password reset links.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#http_url = "http://localhost"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Random secret for JWT signature.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This secret should be random, and should be shared with application</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## servers that need to consume the JWTs.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Changing this secret will invalidate all user sessions and require</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## them to re-login.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You should probably set it through the LLDAP_JWT_SECRET environment</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## variable from a secret ".env" file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_JWT_SECRET_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can generate it with (on linux):</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\\''()*+,-./:;<=>?@[\\]^_{|}~' </dev/urandom | head -c 32; echo ''</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = "REPLACE_WITH_RANDOM"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Base DN for LDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This is usually your domain name, and is used as a</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## namespace for your users. The choice is arbitrary, but will be needed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to configure the LDAP integration with other services.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The sample value is for "example.com", but you can extend it with as</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many "dc" as you want, and you don't actually need to own the domain</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## name.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the LDAP interface, a value of "admin" here will create the LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the administration interface, this is the username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_dn = "admin"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin email.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Email for the admin account. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user, and can safely be omitted.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_email = "admin@[DOMAIN.TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Password for the admin account, both for the LDAP bind and for the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration interface. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## It should be minimum 8 characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_LDAP_USER_PASS environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_LDAP_USER_PASS_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: you can create another admin user for user administration, this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is just the default one.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_pass = "REPLACE_WITH_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Database URL.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This encodes the type of database (SQlite, MySQL, or PostgreSQL)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## , the path, the user, password, and sometimes the mode (when</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## relevant).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: SQlite should come with "?mode=rwc" to create the DB</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## if not present.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Example URLs:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "postgres://postgres-user:password@postgres-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "mysql://mysql-user:password@mysql-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">##</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be overridden with the LLDAP_DATABASE_URL env variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">database_url = "sqlite:///data/users.db?mode=rwc"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Private key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Contains the secret private key used to store the passwords safely.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note that even with a database dump and the private key, an attacker</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## would still have to perform an (expensive) brute force attack to find</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## each password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Randomly generated on first run if it doesn't exist.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Alternatively, you can use key_seed to override this instead of relying on</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## a file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_FILE</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">key_file = "/data/private_key"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Seed to generate the server private key, see key_file above.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be any random string, the recommendation is that it's at least 12</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_SEED</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_seed = "RanD0m STR1ng"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Ignored attributes.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Some services will request attributes that are not present in LLDAP. When it</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is the case, LLDAP will warn about the attribute being unknown. If you want</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to ignore the attribute and the service works without, you can add it to this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## list to silence the warning.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_user_attributes = [ "sAMAccountName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ "mail", "userPrincipalName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure SMTP parameters, to send password reset emails.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">smtp_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enabled password reset via email, from LLDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enable_password_reset=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#server="smtp.gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP port.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=587</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = "TLS"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP user, usually your email address.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#user="sender@gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#password="password"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The header field, optional: how the sender appears in the email. The first</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is a free-form name, followed by an email between <>.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from="LLDAP Admin <sender@gmail.com>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Same for reply-to, optional.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#reply_to="Do not reply <noreply@localhost>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldaps_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enable LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enabled=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Port on which to listen.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=6360</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#cert_file="/data/cert.pem"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_file="/data/key.pem"</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};
|
||||
1
.vitepress/dist/assets/configuration_swag-config.md.DsoCqRQq.js
vendored
Normal file
1
.vitepress/dist/assets/configuration_swag-config.md.DsoCqRQq.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as o,c as a,a3 as i,o as t}from"./chunks/framework.DtMx7FFi.js";const f=JSON.parse('{"title":"Swag Config","description":"","frontmatter":{"title":"Swag Config"},"headers":[],"relativePath":"configuration/swag-config.md","filePath":"configuration/swag-config.md"}'),s={name:"configuration/swag-config.md"};function n(l,e,r,c,p,d){return t(),a("div",null,e[0]||(e[0]=[i('<h1 id="swag-configuration" tabindex="-1">SWAG Configuration <span class="i-simple-icons-linuxserver"></span> <a class="header-anchor" href="#swag-configuration" aria-label="Permalink to "SWAG Configuration :simple-icons-linuxserver:""></a></h1><p>Configuring the Secure Web Application Gateway has a lot of options and potential. It is primarily used to have one gateway for all your services hosted through two ports. Assuming you've used the Docker Compose file, you should be able to view and edit all the configuration files through <code>/home/[USER]/appdata/swag</code>. This location now has multiple places you can go.</p><ol><li><code>/home/[USER]/appdata/swag/nginx</code> - This holds all of the webserver configuration files, this is where you will go when adding a new application/service. <ul><li><code>/home/[USER]/appdata/swag/nginx/proxy-confs</code> - This is where all the reverse proxy magic happens, and will likely be the most used folder.</li><li><code>/home/[USER]/appdata/swag/nginx/site-confs</code> - If you want to host a static site using SWAG, this is the conf file that you will modify to make it function.</li></ul></li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Highly recommend learning how NGINX <span class="i-logos-nginx"></span> conf files work.</p></div><ul><li>The files in this nginx directory are all usually not touched, but used for the rest of configuration to connect Authelia <span class="i-simple-icons-authelia"></span> to SWAG <span class="i-simple-icons-linuxserver"></span> for logins.</li></ul><ol start="2"><li><code>/home/[USER]/appdata/swag/etc/letsencrypt</code> - This holds all the relevant data for your SSL certificates using Let's Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the "<em>live</em>" folder, under the domain name folder.</li><li><code>/home/[USER]/appdata/swag/dns-conf</code> - This holds the API keys or access information in order for SWAG to setup Let's Encrypt <span class="i-simple-icons-letsencrypt"></span> certificates or other DNS <span class="i-material-symbols-dns-outline"></span> information. There are many providers available, however, Cloudflare will most likely be used. In order for a SSL Certificate to be issued, you will have to set this up.</li><li><code>/home/[USER]/appdata/swag/www</code> - This folder holds all of the static site stuff, if you decide to make a static site, you can host it through SWAG's configurations. This does take some patience, as getting the stuff exactly right is a bit tricky.</li></ol><p>See <a href="/faq#how-do-i-add-a-new-application-to-my-stack">How do I add a new application to my stack?</a> for more information as to how to use the SWAG proxy-confs folder to add a new application to your hosting repertoire.</p>',7)]))}const u=o(s,[["render",n]]);export{f as __pageData,u as default};
|
||||
1
.vitepress/dist/assets/configuration_swag-config.md.DsoCqRQq.lean.js
vendored
Normal file
1
.vitepress/dist/assets/configuration_swag-config.md.DsoCqRQq.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as o,c as a,a3 as i,o as t}from"./chunks/framework.DtMx7FFi.js";const f=JSON.parse('{"title":"Swag Config","description":"","frontmatter":{"title":"Swag Config"},"headers":[],"relativePath":"configuration/swag-config.md","filePath":"configuration/swag-config.md"}'),s={name:"configuration/swag-config.md"};function n(l,e,r,c,p,d){return t(),a("div",null,e[0]||(e[0]=[i('<h1 id="swag-configuration" tabindex="-1">SWAG Configuration <span class="i-simple-icons-linuxserver"></span> <a class="header-anchor" href="#swag-configuration" aria-label="Permalink to "SWAG Configuration :simple-icons-linuxserver:""></a></h1><p>Configuring the Secure Web Application Gateway has a lot of options and potential. It is primarily used to have one gateway for all your services hosted through two ports. Assuming you've used the Docker Compose file, you should be able to view and edit all the configuration files through <code>/home/[USER]/appdata/swag</code>. This location now has multiple places you can go.</p><ol><li><code>/home/[USER]/appdata/swag/nginx</code> - This holds all of the webserver configuration files, this is where you will go when adding a new application/service. <ul><li><code>/home/[USER]/appdata/swag/nginx/proxy-confs</code> - This is where all the reverse proxy magic happens, and will likely be the most used folder.</li><li><code>/home/[USER]/appdata/swag/nginx/site-confs</code> - If you want to host a static site using SWAG, this is the conf file that you will modify to make it function.</li></ul></li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Highly recommend learning how NGINX <span class="i-logos-nginx"></span> conf files work.</p></div><ul><li>The files in this nginx directory are all usually not touched, but used for the rest of configuration to connect Authelia <span class="i-simple-icons-authelia"></span> to SWAG <span class="i-simple-icons-linuxserver"></span> for logins.</li></ul><ol start="2"><li><code>/home/[USER]/appdata/swag/etc/letsencrypt</code> - This holds all the relevant data for your SSL certificates using Let's Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the "<em>live</em>" folder, under the domain name folder.</li><li><code>/home/[USER]/appdata/swag/dns-conf</code> - This holds the API keys or access information in order for SWAG to setup Let's Encrypt <span class="i-simple-icons-letsencrypt"></span> certificates or other DNS <span class="i-material-symbols-dns-outline"></span> information. There are many providers available, however, Cloudflare will most likely be used. In order for a SSL Certificate to be issued, you will have to set this up.</li><li><code>/home/[USER]/appdata/swag/www</code> - This folder holds all of the static site stuff, if you decide to make a static site, you can host it through SWAG's configurations. This does take some patience, as getting the stuff exactly right is a bit tricky.</li></ol><p>See <a href="/faq#how-do-i-add-a-new-application-to-my-stack">How do I add a new application to my stack?</a> for more information as to how to use the SWAG proxy-confs folder to add a new application to your hosting repertoire.</p>',7)]))}const u=o(s,[["render",n]]);export{f as __pageData,u as default};
|
||||
95
.vitepress/dist/assets/docker-compose.md.CiAGvlkZ.js
vendored
Normal file
95
.vitepress/dist/assets/docker-compose.md.CiAGvlkZ.js
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
import{_ as i,c as a,a3 as n,o as l}from"./chunks/framework.DtMx7FFi.js";const g=JSON.parse('{"title":"One File Docker Compose (One File to Rule them all!)","description":"","frontmatter":{"title":"One File Docker Compose (One File to Rule them all!)","sidebar":false},"headers":[],"relativePath":"docker-compose.md","filePath":"docker-compose.md"}'),h={name:"docker-compose.md"};function p(k,s,t,e,E,r){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="one-file-docker-compose-one-file-to-rule-them-all" tabindex="-1">One File Docker Compose (One File to Rule them all!) <a class="header-anchor" href="#one-file-docker-compose-one-file-to-rule-them-all" aria-label="Permalink to "One File Docker Compose (One File to Rule them all!)""></a></h1><p>This is the Docker Compose file used for the VM Template, and can be used as a custom template in Portainer. The custom network listed under "<em>Networks</em>" is used for all the applications that you want to connect through the stack. Please replace the <strong>ALL_CAPS_PORTIONS</strong> and the pieces in <strong>square brackets</strong>. These are values that you will want to set yourself.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>For things like passwords and such, I'd recommend a 26 character random string, using alphanumeric characters in both upper and lower case. These values are crucial that they remain both secret and lengthy.</p></div><p>These values are crucial that they remain both secret and lengthy. You should not need to change these, and some of them will break the application if you try to change them. I'd recommend that you backup your compose file to the cloud in case you need to redo the setup.</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> authelia</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia/authelia:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">9091</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/authelia:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> depends_on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mariadb</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> lldap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap/lldap:stable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"3890:3890"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For the web front-end</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"17170:17170"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/lldap:/data</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> redis</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bitnami/redis:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">6379</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> REDIS_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_REDIS_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> mariadb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mysql</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">linuxserver/mariadb:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3306</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_ROOT_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_DATABASE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_USER_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> driver</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bridge</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> external</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div>`,5)]))}const y=i(h,[["render",p]]);export{g as __pageData,y as default};
|
||||
95
.vitepress/dist/assets/docker-compose.md.CiAGvlkZ.lean.js
vendored
Normal file
95
.vitepress/dist/assets/docker-compose.md.CiAGvlkZ.lean.js
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
import{_ as i,c as a,a3 as n,o as l}from"./chunks/framework.DtMx7FFi.js";const g=JSON.parse('{"title":"One File Docker Compose (One File to Rule them all!)","description":"","frontmatter":{"title":"One File Docker Compose (One File to Rule them all!)","sidebar":false},"headers":[],"relativePath":"docker-compose.md","filePath":"docker-compose.md"}'),h={name:"docker-compose.md"};function p(k,s,t,e,E,r){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="one-file-docker-compose-one-file-to-rule-them-all" tabindex="-1">One File Docker Compose (One File to Rule them all!) <a class="header-anchor" href="#one-file-docker-compose-one-file-to-rule-them-all" aria-label="Permalink to "One File Docker Compose (One File to Rule them all!)""></a></h1><p>This is the Docker Compose file used for the VM Template, and can be used as a custom template in Portainer. The custom network listed under "<em>Networks</em>" is used for all the applications that you want to connect through the stack. Please replace the <strong>ALL_CAPS_PORTIONS</strong> and the pieces in <strong>square brackets</strong>. These are values that you will want to set yourself.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>For things like passwords and such, I'd recommend a 26 character random string, using alphanumeric characters in both upper and lower case. These values are crucial that they remain both secret and lengthy.</p></div><p>These values are crucial that they remain both secret and lengthy. You should not need to change these, and some of them will break the application if you try to change them. I'd recommend that you backup your compose file to the cloud in case you need to redo the setup.</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> authelia</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia/authelia:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">9091</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/authelia:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> depends_on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mariadb</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> lldap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap/lldap:stable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"3890:3890"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For the web front-end</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"17170:17170"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/lldap:/data</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> redis</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bitnami/redis:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">6379</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> REDIS_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_REDIS_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> mariadb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mysql</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">linuxserver/mariadb:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3306</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_ROOT_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_DATABASE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_USER_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> driver</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bridge</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> external</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div>`,5)]))}const y=i(h,[["render",p]]);export{g as __pageData,y as default};
|
||||
49
.vitepress/dist/assets/faq.md.By3ovNs1.js
vendored
Normal file
49
.vitepress/dist/assets/faq.md.By3ovNs1.js
vendored
Normal file
File diff suppressed because one or more lines are too long
49
.vitepress/dist/assets/faq.md.By3ovNs1.lean.js
vendored
Normal file
49
.vitepress/dist/assets/faq.md.By3ovNs1.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/home.md.DWjC1jWa.js
vendored
Normal file
1
.vitepress/dist/assets/home.md.DWjC1jWa.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as t,c as o,a3 as a,o as s}from"./chunks/framework.DtMx7FFi.js";const u=JSON.parse('{"title":"Legacy Instructions","description":"","frontmatter":{"title":"Legacy Instructions"},"headers":[],"relativePath":"home.md","filePath":"home.md"}'),n={name:"home.md"};function i(r,e,l,c,p,d){return s(),o("div",null,e[0]||(e[0]=[a('<h1 id="welcome" tabindex="-1">Welcome! <a class="header-anchor" href="#welcome" aria-label="Permalink to "Welcome!""></a></h1><p>This is page to be when looking to deploy the DP-Salad stack! If you need to see if your system fits the DP-Salad stack requirements, you can find the page you're looking for here: <a href="/install/requirements">DP-Salad Requirements</a>.</p><p>Otherwise, down below are the Legacy Instructions for the DP-Salad stack, they do have bad formatting so we do not suggest using them in a public deployment. You can also find the legacy instructions on this <a href="https://dp-salad-legacy.cdezselfhosted.pw" target="_blank" rel="noreferrer">website</a>.</p><p>The main instructions can be found on the <a href="/install/dp-setup">DP-Setup</a> page, and are the instructions you will use to deploy the <span class="i-twemoji-green-salad"></span> stack.</p><p>Otherwise, feel free to poke about the documentation!</p><h2 id="legacy-instructions" tabindex="-1">Legacy Instructions: <a class="header-anchor" href="#legacy-instructions" aria-label="Permalink to "Legacy Instructions:""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Do not use these instructions as they have poor formatting and will lead to a bad stack deployment</p></div><p><strong>PDF instructions for the DP-SALA/D Stack:</strong> <a href="./dp-salad-stack.pdf">DP-SALAD_STACK.pdf</a> (Updated 10/11/2023, 12:03PM)</p><p><strong>Docker Compose file for the DP-SALA/D Stack:</strong> <a href="./docker-compose-dpsalad.rtf">docker-compose-dpsalad.rtf</a> (Updated 10/13/2023, 11:03PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Download the docker compose file, rename to docker-compose.yml for best results.</p></div><p><strong>OVA/VM Template for DP-SALA/D Stack:</strong> <a href="https://drive.google.com/file/d/1z2rR20i1UdySJfolpxUM6MiD0f46gqA_/view?usp=drive_link" target="_blank" rel="noreferrer">DP-SALA/D OVA Template</a></p><p><strong>Authelia Example Configuration File:</strong> <a href="./configuration.yml.rtf">configuration.yml</a> (Updated 10/12/2023, 8:32PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using in actual deployment</p></div><p><strong>LLDAP Example Configuration File:</strong> <a href="./lldap_config.toml.rtf">lldap_config.toml</a> (Updated 10/12/2023, 8:38PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using, however, this file is not always needed.</p></div><p>SWAG Example file locations are detailed in the Guidebook to the DP-SALA/D Stack</p>',16)]))}const f=t(n,[["render",i]]);export{u as __pageData,f as default};
|
||||
1
.vitepress/dist/assets/home.md.DWjC1jWa.lean.js
vendored
Normal file
1
.vitepress/dist/assets/home.md.DWjC1jWa.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as t,c as o,a3 as a,o as s}from"./chunks/framework.DtMx7FFi.js";const u=JSON.parse('{"title":"Legacy Instructions","description":"","frontmatter":{"title":"Legacy Instructions"},"headers":[],"relativePath":"home.md","filePath":"home.md"}'),n={name:"home.md"};function i(r,e,l,c,p,d){return s(),o("div",null,e[0]||(e[0]=[a('<h1 id="welcome" tabindex="-1">Welcome! <a class="header-anchor" href="#welcome" aria-label="Permalink to "Welcome!""></a></h1><p>This is page to be when looking to deploy the DP-Salad stack! If you need to see if your system fits the DP-Salad stack requirements, you can find the page you're looking for here: <a href="/install/requirements">DP-Salad Requirements</a>.</p><p>Otherwise, down below are the Legacy Instructions for the DP-Salad stack, they do have bad formatting so we do not suggest using them in a public deployment. You can also find the legacy instructions on this <a href="https://dp-salad-legacy.cdezselfhosted.pw" target="_blank" rel="noreferrer">website</a>.</p><p>The main instructions can be found on the <a href="/install/dp-setup">DP-Setup</a> page, and are the instructions you will use to deploy the <span class="i-twemoji-green-salad"></span> stack.</p><p>Otherwise, feel free to poke about the documentation!</p><h2 id="legacy-instructions" tabindex="-1">Legacy Instructions: <a class="header-anchor" href="#legacy-instructions" aria-label="Permalink to "Legacy Instructions:""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Do not use these instructions as they have poor formatting and will lead to a bad stack deployment</p></div><p><strong>PDF instructions for the DP-SALA/D Stack:</strong> <a href="./dp-salad-stack.pdf">DP-SALAD_STACK.pdf</a> (Updated 10/11/2023, 12:03PM)</p><p><strong>Docker Compose file for the DP-SALA/D Stack:</strong> <a href="./docker-compose-dpsalad.rtf">docker-compose-dpsalad.rtf</a> (Updated 10/13/2023, 11:03PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Download the docker compose file, rename to docker-compose.yml for best results.</p></div><p><strong>OVA/VM Template for DP-SALA/D Stack:</strong> <a href="https://drive.google.com/file/d/1z2rR20i1UdySJfolpxUM6MiD0f46gqA_/view?usp=drive_link" target="_blank" rel="noreferrer">DP-SALA/D OVA Template</a></p><p><strong>Authelia Example Configuration File:</strong> <a href="./configuration.yml.rtf">configuration.yml</a> (Updated 10/12/2023, 8:32PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using in actual deployment</p></div><p><strong>LLDAP Example Configuration File:</strong> <a href="./lldap_config.toml.rtf">lldap_config.toml</a> (Updated 10/12/2023, 8:38PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using, however, this file is not always needed.</p></div><p>SWAG Example file locations are detailed in the Guidebook to the DP-SALA/D Stack</p>',16)]))}const f=t(n,[["render",i]]);export{u as __pageData,f as default};
|
||||
1
.vitepress/dist/assets/index.md.DDpI40D1.js
vendored
Normal file
1
.vitepress/dist/assets/index.md.DDpI40D1.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as t,o as a}from"./chunks/framework.DtMx7FFi.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DP-Salad","text":"A guide created by Cdez","tagline":"A guide to successfully/fully deploy the DP-Salad Stack","image":"./saladicon.png","actions":[{"theme":"brand","text":"Home","link":"/home"},{"theme":"alt","text":"Minimum Requirements","link":"/install/requirements"},{"theme":"alt","text":"FAQ","link":"/faq"}]},"features":[{"title":"Really easy to setup!","details":"Just a couple of simple steps!","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 24 24\\"><path fill=\\"currentColor\\" d=\\"M5 19h1.425L16.2 9.225L14.775 7.8L5 17.575zm-2 2v-4.25L16.2 3.575q.3-.275.663-.425t.762-.15t.775.15t.65.45L20.425 5q.3.275.438.65T21 6.4q0 .4-.137.763t-.438.662L7.25 21zM19 6.4L17.6 5zm-3.525 2.125l-.7-.725L16.2 9.225z\\"/></svg>","link":"/install/dp-setup"},{"title":"Comes with a compose file!","details":"ONE FILE TO RULE THEM ALL","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 256 256\\"><path fill=\\"currentColor\\" d=\\"M96 104a8 8 0 0 1 8-8h64a8 8 0 0 1 0 16h-64a8 8 0 0 1-8-8m8 40h64a8 8 0 0 0 0-16h-64a8 8 0 0 0 0 16m128 48a32 32 0 0 1-32 32H88a32 32 0 0 1-32-32V64a16 16 0 0 0-32 0c0 5.74 4.83 9.62 4.88 9.66A8 8 0 0 1 24 88a7.9 7.9 0 0 1-4.79-1.61C18.05 85.54 8 77.61 8 64a32 32 0 0 1 32-32h136a32 32 0 0 1 32 32v104h8a8 8 0 0 1 4.8 1.6c1.2.86 11.2 8.79 11.2 22.4M96.26 173.48A8.07 8.07 0 0 1 104 168h88V64a16 16 0 0 0-16-16H67.69A31.7 31.7 0 0 1 72 64v128a16 16 0 0 0 32 0c0-5.74-4.83-9.62-4.88-9.66a7.82 7.82 0 0 1-2.86-8.86M216 192a12.58 12.58 0 0 0-3.23-8h-94a27 27 0 0 1 1.21 8a31.8 31.8 0 0 1-4.29 16H200a16 16 0 0 0 16-16\\"/></svg>","link":"/docker-compose"},{"title":"Latest Version","details":"1.1.0","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 48 48\\"><path fill=\\"none\\" stroke=\\"currentColor\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\" stroke-width=\\"4\\" d=\\"M10 44h28a2 2 0 0 0 2-2V14H30V4H10a2 2 0 0 0-2 2v36a2 2 0 0 0 2 2M30 4l10 10M17 25h14m-14 6h14m0-6l-5-5m-4 16l-5-5\\"/></svg>","link":"/changelog"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(l,s,n,r,h,d){return a(),t("div")}const p=e(i,[["render",o]]);export{m as __pageData,p as default};
|
||||
1
.vitepress/dist/assets/index.md.DDpI40D1.lean.js
vendored
Normal file
1
.vitepress/dist/assets/index.md.DDpI40D1.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as t,o as a}from"./chunks/framework.DtMx7FFi.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DP-Salad","text":"A guide created by Cdez","tagline":"A guide to successfully/fully deploy the DP-Salad Stack","image":"./saladicon.png","actions":[{"theme":"brand","text":"Home","link":"/home"},{"theme":"alt","text":"Minimum Requirements","link":"/install/requirements"},{"theme":"alt","text":"FAQ","link":"/faq"}]},"features":[{"title":"Really easy to setup!","details":"Just a couple of simple steps!","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 24 24\\"><path fill=\\"currentColor\\" d=\\"M5 19h1.425L16.2 9.225L14.775 7.8L5 17.575zm-2 2v-4.25L16.2 3.575q.3-.275.663-.425t.762-.15t.775.15t.65.45L20.425 5q.3.275.438.65T21 6.4q0 .4-.137.763t-.438.662L7.25 21zM19 6.4L17.6 5zm-3.525 2.125l-.7-.725L16.2 9.225z\\"/></svg>","link":"/install/dp-setup"},{"title":"Comes with a compose file!","details":"ONE FILE TO RULE THEM ALL","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 256 256\\"><path fill=\\"currentColor\\" d=\\"M96 104a8 8 0 0 1 8-8h64a8 8 0 0 1 0 16h-64a8 8 0 0 1-8-8m8 40h64a8 8 0 0 0 0-16h-64a8 8 0 0 0 0 16m128 48a32 32 0 0 1-32 32H88a32 32 0 0 1-32-32V64a16 16 0 0 0-32 0c0 5.74 4.83 9.62 4.88 9.66A8 8 0 0 1 24 88a7.9 7.9 0 0 1-4.79-1.61C18.05 85.54 8 77.61 8 64a32 32 0 0 1 32-32h136a32 32 0 0 1 32 32v104h8a8 8 0 0 1 4.8 1.6c1.2.86 11.2 8.79 11.2 22.4M96.26 173.48A8.07 8.07 0 0 1 104 168h88V64a16 16 0 0 0-16-16H67.69A31.7 31.7 0 0 1 72 64v128a16 16 0 0 0 32 0c0-5.74-4.83-9.62-4.88-9.66a7.82 7.82 0 0 1-2.86-8.86M216 192a12.58 12.58 0 0 0-3.23-8h-94a27 27 0 0 1 1.21 8a31.8 31.8 0 0 1-4.29 16H200a16 16 0 0 0 16-16\\"/></svg>","link":"/docker-compose"},{"title":"Latest Version","details":"1.1.0","icon":"<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"32\\" height=\\"32\\" viewBox=\\"0 0 48 48\\"><path fill=\\"none\\" stroke=\\"currentColor\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\" stroke-width=\\"4\\" d=\\"M10 44h28a2 2 0 0 0 2-2V14H30V4H10a2 2 0 0 0-2 2v36a2 2 0 0 0 2 2M30 4l10 10M17 25h14m-14 6h14m0-6l-5-5m-4 16l-5-5\\"/></svg>","link":"/changelog"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(l,s,n,r,h,d){return a(),t("div")}const p=e(i,[["render",o]]);export{m as __pageData,p as default};
|
||||
1
.vitepress/dist/assets/install_dp-config.md.Cllv2ZYA.js
vendored
Normal file
1
.vitepress/dist/assets/install_dp-config.md.Cllv2ZYA.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as s,o as i}from"./chunks/framework.DtMx7FFi.js";const u=JSON.parse('{"title":"DP-Salad Configuration","description":"","frontmatter":{"title":"DP-Salad Configuration"},"headers":[],"relativePath":"install/dp-config.md","filePath":"install/dp-config.md"}'),o={name:"install/dp-config.md"};function n(r,e,l,p,h,d){return i(),t("div",null,e[0]||(e[0]=[s('<h1 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to "Configuration""></a></h1><h2 id="debian-configuration" tabindex="-1">Debian Configuration <span class="i-logos-debian"></span> <a class="header-anchor" href="#debian-configuration" aria-label="Permalink to "Debian Configuration :logos-debian:""></a></h2><p>Sudo should have been setup after the install, however, nothing much else is required for the setup end in Debian. If you want, here is a list of recommended software to install to make the commandline a little easier to learn:</p><ol><li><strong>TLDR</strong> <strong><span class="i-simple-icons-tldraw"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span></span></code></pre></div><ol start="2"><li><strong>Tmux</strong> <strong><span class="i-simple-icons-tmux"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tmux</span></span></code></pre></div><h2 id="portainer-configuration" tabindex="-1">Portainer Configuration <span class="i-simple-icons-portainer"></span> <a class="header-anchor" href="#portainer-configuration" aria-label="Permalink to "Portainer Configuration :simple-icons-portainer:""></a></h2><p>Portainer is ready right out of the box. There should be nothing you need to do to configure it, unless you are running a "<em>clustered setup</em>" involving more than one computer, which can be done for this stack, but does add a layer of complexity, and allows for scalability for the amount of applications you can offer to either yourself or your users. A "<em>clustered setup</em>" is on the <a href="https://docs.portainer.io/" target="_blank" rel="noreferrer">Portainer CE wiki</a> and is out of the scope for this guide.</p><p>If you are using the VM Template, Portainer has the custom templates loaded so that if you need to install a newer version, or change something and restart, they are there.</p><h2 id="app-templates" tabindex="-1">App Templates <span class="i-material-symbols-touch-app"></span> <a class="header-anchor" href="#app-templates" aria-label="Permalink to "App Templates :material-symbols-touch-app:""></a></h2><p>In Portainer, <a href="https://docs.portainer.io/user/docker/templates" target="_blank" rel="noreferrer">App Templates</a> enable you to easily deploy services with a predetermined configuration, while allowing you to customize options through the web UI. While Portainer ships with some default templates (see <a href="https://github.com/portainer/templates" target="_blank" rel="noreferrer">portainer/templates</a>), it's often helpful to have 1-click access to many more apps + stacks, without having to constantly switch template sources.</p><p>Under Settings → App Templates in your Portainer GUI, paste this URL:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json</span></span></code></pre></div>',14)]))}const g=a(o,[["render",n]]);export{u as __pageData,g as default};
|
||||
1
.vitepress/dist/assets/install_dp-config.md.Cllv2ZYA.lean.js
vendored
Normal file
1
.vitepress/dist/assets/install_dp-config.md.Cllv2ZYA.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as s,o as i}from"./chunks/framework.DtMx7FFi.js";const u=JSON.parse('{"title":"DP-Salad Configuration","description":"","frontmatter":{"title":"DP-Salad Configuration"},"headers":[],"relativePath":"install/dp-config.md","filePath":"install/dp-config.md"}'),o={name:"install/dp-config.md"};function n(r,e,l,p,h,d){return i(),t("div",null,e[0]||(e[0]=[s('<h1 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to "Configuration""></a></h1><h2 id="debian-configuration" tabindex="-1">Debian Configuration <span class="i-logos-debian"></span> <a class="header-anchor" href="#debian-configuration" aria-label="Permalink to "Debian Configuration :logos-debian:""></a></h2><p>Sudo should have been setup after the install, however, nothing much else is required for the setup end in Debian. If you want, here is a list of recommended software to install to make the commandline a little easier to learn:</p><ol><li><strong>TLDR</strong> <strong><span class="i-simple-icons-tldraw"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span></span></code></pre></div><ol start="2"><li><strong>Tmux</strong> <strong><span class="i-simple-icons-tmux"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tmux</span></span></code></pre></div><h2 id="portainer-configuration" tabindex="-1">Portainer Configuration <span class="i-simple-icons-portainer"></span> <a class="header-anchor" href="#portainer-configuration" aria-label="Permalink to "Portainer Configuration :simple-icons-portainer:""></a></h2><p>Portainer is ready right out of the box. There should be nothing you need to do to configure it, unless you are running a "<em>clustered setup</em>" involving more than one computer, which can be done for this stack, but does add a layer of complexity, and allows for scalability for the amount of applications you can offer to either yourself or your users. A "<em>clustered setup</em>" is on the <a href="https://docs.portainer.io/" target="_blank" rel="noreferrer">Portainer CE wiki</a> and is out of the scope for this guide.</p><p>If you are using the VM Template, Portainer has the custom templates loaded so that if you need to install a newer version, or change something and restart, they are there.</p><h2 id="app-templates" tabindex="-1">App Templates <span class="i-material-symbols-touch-app"></span> <a class="header-anchor" href="#app-templates" aria-label="Permalink to "App Templates :material-symbols-touch-app:""></a></h2><p>In Portainer, <a href="https://docs.portainer.io/user/docker/templates" target="_blank" rel="noreferrer">App Templates</a> enable you to easily deploy services with a predetermined configuration, while allowing you to customize options through the web UI. While Portainer ships with some default templates (see <a href="https://github.com/portainer/templates" target="_blank" rel="noreferrer">portainer/templates</a>), it's often helpful to have 1-click access to many more apps + stacks, without having to constantly switch template sources.</p><p>Under Settings → App Templates in your Portainer GUI, paste this URL:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json</span></span></code></pre></div>',14)]))}const g=a(o,[["render",n]]);export{u as __pageData,g as default};
|
||||
12
.vitepress/dist/assets/install_dp-setup.md.Bx00pjFf.js
vendored
Normal file
12
.vitepress/dist/assets/install_dp-setup.md.Bx00pjFf.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
.vitepress/dist/assets/install_dp-setup.md.Bx00pjFf.lean.js
vendored
Normal file
12
.vitepress/dist/assets/install_dp-setup.md.Bx00pjFf.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/install_requirements.md.DnNTxVlB.js
vendored
Normal file
1
.vitepress/dist/assets/install_requirements.md.DnNTxVlB.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/install_requirements.md.DnNTxVlB.lean.js
vendored
Normal file
1
.vitepress/dist/assets/install_requirements.md.DnNTxVlB.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/install_salad-setup.md.uqD3xfuF.js
vendored
Normal file
1
.vitepress/dist/assets/install_salad-setup.md.uqD3xfuF.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as i,o as l}from"./chunks/framework.DtMx7FFi.js";const c=JSON.parse('{"title":"Salad Setup","description":"","frontmatter":{"title":"Salad Setup"},"headers":[],"relativePath":"install/salad-setup.md","filePath":"install/salad-setup.md"}'),s={name:"install/salad-setup.md"};function o(n,e,r,u,h,p){return l(),t("div",null,e[0]||(e[0]=[i('<h1 id="sala-d-setup" tabindex="-1">SALA/D Setup <a class="header-anchor" href="#sala-d-setup" aria-label="Permalink to "SALA/D Setup""></a></h1><p>Instructions to set up the SALA/D Part of the stack.</p><h2 id="overview-of-the-sala-d-stack" tabindex="-1">Overview of the SALA/D Stack: <a class="header-anchor" href="#overview-of-the-sala-d-stack" aria-label="Permalink to "Overview of the SALA/D Stack:""></a></h2><p>The SALA/D stack, or SWAG, Authelia, LLDAP, Authy/Duo stack is a simple way to get a webserver/reverse proxy, an identity and access control management system, as well as 2FA; all working together to host whatever you'd like. Here is what does what:</p><ul><li><p>Swag <span class="i-simple-icons-linuxserver"></span></p><ul><li>Handles the webserver and reverse proxy.</li><li>All configuration is handled via <em>.conf</em> files and text</li><li>This guide also demonstrates how to set up the Docker Mods Auto Reload, GeoIPBlock, and ...</li></ul></li><li><p>Authelia <span class="i-simple-icons-authelia"></span></p><ul><li>Handles weblogin and the front end of 2FA.</li><li>This has one configuration file, and hooks into LLDAP.</li></ul></li><li><p>LLDAP <span class="i-material-symbols-lock"></span></p><ul><li>Handles the "identity" part of the Authentication solution.</li><li>Requires that a domain is setup, and has a bit of a learning curve.</li><li>This has a bit of configuration involved whenever you setup a new application with LDAP integrations, however, <a href="https://github.com/lldap/lldap" target="_blank" rel="noreferrer">LLDAP's GitHub page</a> usually has sample configurations on how to setup LDAP auth for an application.</li></ul></li><li><p>Authy/Duo</p><ul><li>Pick one between Authy or Duo <ul><li>Authy <span class="i-logos-authy"></span><ul><li>This allows for 2FA via an 8 digit code. The configuration is handled via Authelia, with the end user setting up 2FA through the Authy App or through Bit/Vaultwarden. The user can self register their 2FA in this way, through email.</li></ul></li><li>Duo <ul><li>This allows for 2FA via a push notification on your phone. The configuration is handled via Authelia.</li></ul></li></ul></li></ul></li></ul>',5)]))}const A=a(s,[["render",o]]);export{c as __pageData,A as default};
|
||||
1
.vitepress/dist/assets/install_salad-setup.md.uqD3xfuF.lean.js
vendored
Normal file
1
.vitepress/dist/assets/install_salad-setup.md.uqD3xfuF.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as i,o as l}from"./chunks/framework.DtMx7FFi.js";const c=JSON.parse('{"title":"Salad Setup","description":"","frontmatter":{"title":"Salad Setup"},"headers":[],"relativePath":"install/salad-setup.md","filePath":"install/salad-setup.md"}'),s={name:"install/salad-setup.md"};function o(n,e,r,u,h,p){return l(),t("div",null,e[0]||(e[0]=[i('<h1 id="sala-d-setup" tabindex="-1">SALA/D Setup <a class="header-anchor" href="#sala-d-setup" aria-label="Permalink to "SALA/D Setup""></a></h1><p>Instructions to set up the SALA/D Part of the stack.</p><h2 id="overview-of-the-sala-d-stack" tabindex="-1">Overview of the SALA/D Stack: <a class="header-anchor" href="#overview-of-the-sala-d-stack" aria-label="Permalink to "Overview of the SALA/D Stack:""></a></h2><p>The SALA/D stack, or SWAG, Authelia, LLDAP, Authy/Duo stack is a simple way to get a webserver/reverse proxy, an identity and access control management system, as well as 2FA; all working together to host whatever you'd like. Here is what does what:</p><ul><li><p>Swag <span class="i-simple-icons-linuxserver"></span></p><ul><li>Handles the webserver and reverse proxy.</li><li>All configuration is handled via <em>.conf</em> files and text</li><li>This guide also demonstrates how to set up the Docker Mods Auto Reload, GeoIPBlock, and ...</li></ul></li><li><p>Authelia <span class="i-simple-icons-authelia"></span></p><ul><li>Handles weblogin and the front end of 2FA.</li><li>This has one configuration file, and hooks into LLDAP.</li></ul></li><li><p>LLDAP <span class="i-material-symbols-lock"></span></p><ul><li>Handles the "identity" part of the Authentication solution.</li><li>Requires that a domain is setup, and has a bit of a learning curve.</li><li>This has a bit of configuration involved whenever you setup a new application with LDAP integrations, however, <a href="https://github.com/lldap/lldap" target="_blank" rel="noreferrer">LLDAP's GitHub page</a> usually has sample configurations on how to setup LDAP auth for an application.</li></ul></li><li><p>Authy/Duo</p><ul><li>Pick one between Authy or Duo <ul><li>Authy <span class="i-logos-authy"></span><ul><li>This allows for 2FA via an 8 digit code. The configuration is handled via Authelia, with the end user setting up 2FA through the Authy App or through Bit/Vaultwarden. The user can self register their 2FA in this way, through email.</li></ul></li><li>Duo <ul><li>This allows for 2FA via a push notification on your phone. The configuration is handled via Authelia.</li></ul></li></ul></li></ul></li></ul>',5)]))}const A=a(s,[["render",o]]);export{c as __pageData,A as default};
|
||||
BIN
.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2
vendored
Normal file
Binary file not shown.
BIN
.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2
vendored
Normal file
BIN
.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2
vendored
Normal file
Binary file not shown.
1
.vitepress/dist/assets/maintenance_maintain-guide.md.DC42-hYW.js
vendored
Normal file
1
.vitepress/dist/assets/maintenance_maintain-guide.md.DC42-hYW.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as i,o as n}from"./chunks/framework.DtMx7FFi.js";const h=JSON.parse('{"title":"Maintenance of the DP-SALA/D Stack","description":"","frontmatter":{"title":"Maintenance of the DP-SALA/D Stack"},"headers":[],"relativePath":"maintenance/maintain-guide.md","filePath":"maintenance/maintain-guide.md"}'),s={name:"maintenance/maintain-guide.md"};function o(l,e,r,p,u,c){return n(),t("div",null,e[0]||(e[0]=[i('<h1 id="maintenance-of-the-dp-sala-d-stack" tabindex="-1">Maintenance of the DP-SALA/D Stack <a class="header-anchor" href="#maintenance-of-the-dp-sala-d-stack" aria-label="Permalink to "Maintenance of the DP-SALA/D Stack""></a></h1><p>Suggested maintenance for the DP-SALA/D Stack</p><h2 id="required-maintenance-for-the-dp-sala-d-stack" tabindex="-1">Required Maintenance for the DP-SALA/D Stack <a class="header-anchor" href="#required-maintenance-for-the-dp-sala-d-stack" aria-label="Permalink to "Required Maintenance for the DP-SALA/D Stack""></a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a "<code>sudo apt-get update && sudo apt-get update</code>" to update the base applications for Debian, this applies security and feature upgrades for your OS, which is important.</p></li><li><p>At least bi-weekly, save all the configuration files and important data to a secure, private, personal location. You could even use the Google Drive <span class="i-mdi-google-drive"></span> space of the Gmail address that you setup, and save the previous backups. You could probably keep the last 5 backups just to be safe, but minimum of 3.</p></li></ul><p><strong>Portainer:</strong> <span class="i-simple-icons-portainer"></span></p><ul><li>Update whenever there is an update. If you login and it tells you there is an update available, update right then and there. Portainer is just a docker container that lets you manage other docker containers, but make sure to keep this as up to date as possible.</li><li>You generally don't have to keep a backup of the Portainer data volume, unless you've made some crazy modification to it's configuration that was different from the standard install.</li></ul><p><strong>SWAG:</strong> <span class="i-simple-icons-linuxserver"></span></p><ul><li>At least monthly, restart the container. This allows it to pull new configurations from the GitHub <span class="i-mdi-github"></span> page, as well as renew your SSL certificates for your webserver.</li></ul><p><strong>Authelia:</strong> <span class="i-simple-icons-authelia"></span></p><ul><li>At least monthly, restart the container. This allows it to pull updates for the container.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Make sure that your configuration for this is backed up, since multiple sensitive things are within this file, and recovering them will be impossible.</p></div><p><strong>LLDAP:</strong> <span class="i-material-symbols-lock"></span></p><ul><li>This is probably the lowest maintenance thing out of the stack. Just make sure that it is backed up completely.</li></ul><p><strong>Authy/Duo:</strong> <span class="i-logos-authy"></span></p><ul><li>Set it and forget it. This is typically included in Authelia <span class="i-simple-icons-authelia"></span>, so another reason to make sure that config file is completely backed up properly.</li></ul>',16)]))}const m=a(s,[["render",o]]);export{h as __pageData,m as default};
|
||||
1
.vitepress/dist/assets/maintenance_maintain-guide.md.DC42-hYW.lean.js
vendored
Normal file
1
.vitepress/dist/assets/maintenance_maintain-guide.md.DC42-hYW.lean.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,a3 as i,o as n}from"./chunks/framework.DtMx7FFi.js";const h=JSON.parse('{"title":"Maintenance of the DP-SALA/D Stack","description":"","frontmatter":{"title":"Maintenance of the DP-SALA/D Stack"},"headers":[],"relativePath":"maintenance/maintain-guide.md","filePath":"maintenance/maintain-guide.md"}'),s={name:"maintenance/maintain-guide.md"};function o(l,e,r,p,u,c){return n(),t("div",null,e[0]||(e[0]=[i('<h1 id="maintenance-of-the-dp-sala-d-stack" tabindex="-1">Maintenance of the DP-SALA/D Stack <a class="header-anchor" href="#maintenance-of-the-dp-sala-d-stack" aria-label="Permalink to "Maintenance of the DP-SALA/D Stack""></a></h1><p>Suggested maintenance for the DP-SALA/D Stack</p><h2 id="required-maintenance-for-the-dp-sala-d-stack" tabindex="-1">Required Maintenance for the DP-SALA/D Stack <a class="header-anchor" href="#required-maintenance-for-the-dp-sala-d-stack" aria-label="Permalink to "Required Maintenance for the DP-SALA/D Stack""></a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a "<code>sudo apt-get update && sudo apt-get update</code>" to update the base applications for Debian, this applies security and feature upgrades for your OS, which is important.</p></li><li><p>At least bi-weekly, save all the configuration files and important data to a secure, private, personal location. You could even use the Google Drive <span class="i-mdi-google-drive"></span> space of the Gmail address that you setup, and save the previous backups. You could probably keep the last 5 backups just to be safe, but minimum of 3.</p></li></ul><p><strong>Portainer:</strong> <span class="i-simple-icons-portainer"></span></p><ul><li>Update whenever there is an update. If you login and it tells you there is an update available, update right then and there. Portainer is just a docker container that lets you manage other docker containers, but make sure to keep this as up to date as possible.</li><li>You generally don't have to keep a backup of the Portainer data volume, unless you've made some crazy modification to it's configuration that was different from the standard install.</li></ul><p><strong>SWAG:</strong> <span class="i-simple-icons-linuxserver"></span></p><ul><li>At least monthly, restart the container. This allows it to pull new configurations from the GitHub <span class="i-mdi-github"></span> page, as well as renew your SSL certificates for your webserver.</li></ul><p><strong>Authelia:</strong> <span class="i-simple-icons-authelia"></span></p><ul><li>At least monthly, restart the container. This allows it to pull updates for the container.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Make sure that your configuration for this is backed up, since multiple sensitive things are within this file, and recovering them will be impossible.</p></div><p><strong>LLDAP:</strong> <span class="i-material-symbols-lock"></span></p><ul><li>This is probably the lowest maintenance thing out of the stack. Just make sure that it is backed up completely.</li></ul><p><strong>Authy/Duo:</strong> <span class="i-logos-authy"></span></p><ul><li>Set it and forget it. This is typically included in Authelia <span class="i-simple-icons-authelia"></span>, so another reason to make sure that config file is completely backed up properly.</li></ul>',16)]))}const m=a(s,[["render",o]]);export{h as __pageData,m as default};
|
||||
1
.vitepress/dist/assets/style.CpK5ZA6m.css
vendored
Normal file
1
.vitepress/dist/assets/style.CpK5ZA6m.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/x11-guide.md.BPhK1sNP.js
vendored
Normal file
1
.vitepress/dist/assets/x11-guide.md.BPhK1sNP.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/assets/x11-guide.md.BPhK1sNP.lean.js
vendored
Normal file
1
.vitepress/dist/assets/x11-guide.md.BPhK1sNP.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
.vitepress/dist/cat-typing.gif
vendored
Normal file
BIN
.vitepress/dist/cat-typing.gif
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
95
.vitepress/dist/cf-tunnel.html
vendored
Normal file
95
.vitepress/dist/cf-tunnel.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/changelog.html
vendored
Normal file
26
.vitepress/dist/changelog.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1465
.vitepress/dist/configuration.yml.rtf
vendored
Normal file
1465
.vitepress/dist/configuration.yml.rtf
vendored
Normal file
File diff suppressed because it is too large
Load diff
1350
.vitepress/dist/configuration/auth-config.html
vendored
Normal file
1350
.vitepress/dist/configuration/auth-config.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/configuration/authy-duo-config.html
vendored
Normal file
26
.vitepress/dist/configuration/authy-duo-config.html
vendored
Normal file
File diff suppressed because one or more lines are too long
156
.vitepress/dist/configuration/lldap-config.html
vendored
Normal file
156
.vitepress/dist/configuration/lldap-config.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/configuration/swag-config.html
vendored
Normal file
26
.vitepress/dist/configuration/swag-config.html
vendored
Normal file
File diff suppressed because one or more lines are too long
95
.vitepress/dist/docker-compose-dpsalad.rtf
vendored
Normal file
95
.vitepress/dist/docker-compose-dpsalad.rtf
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
version: "2.1"
|
||||
services:
|
||||
swag:
|
||||
image: lscr.io/linuxserver/swag:latest
|
||||
container_name: swag
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Phoenix
|
||||
- URL=[sakura.nt]
|
||||
- VALIDATION=dns
|
||||
- SUBDOMAINS=wildcard
|
||||
- DNSPLUGIN=cloudflare
|
||||
- EMAIL=[sakurant@gmail.com]
|
||||
- ONLY_SUBDOMAINS=false
|
||||
#- EXTRA_DOMAINS= #optional
|
||||
- STAGING=false
|
||||
- DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/swag:/config
|
||||
ports:
|
||||
- 443:443
|
||||
- 80:80
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
authelia:
|
||||
container_name: authelia
|
||||
image: authelia/authelia:latest
|
||||
expose:
|
||||
- 9091
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/authelia:/config
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
|
||||
lldap:
|
||||
container_name: lldap
|
||||
image: lldap/lldap:stable
|
||||
ports:
|
||||
# For LDAP
|
||||
- "3890:3890"
|
||||
# For the web front-end
|
||||
- "17170:17170"
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/lldap:/data
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
environment:
|
||||
- TZ=America/Phoenix
|
||||
- LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM
|
||||
- LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD
|
||||
- LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt
|
||||
|
||||
redis:
|
||||
container_name: redis
|
||||
image: bitnami/redis:latest
|
||||
expose:
|
||||
- 6379
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/
|
||||
environment:
|
||||
REDIS_PASSWORD: "YOUR_REDIS_PASSWORD"
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
container_name: mariadb
|
||||
image: linuxserver/mariadb:latest
|
||||
expose:
|
||||
- 3306
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: "YOUR_MYSQL_ROOT_PASSWORD"
|
||||
MYSQL_ROOT_USER: root
|
||||
MYSQL_DATABASE: authelia
|
||||
MYSQL_USER: authelia
|
||||
MYSQL_PASSWORD: "YOUR_MYSQL_USER_PASSWORD"
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
[INSERT NETWORK NAME HERE]:
|
||||
driver: bridge
|
||||
external: true
|
||||
120
.vitepress/dist/docker-compose.html
vendored
Normal file
120
.vitepress/dist/docker-compose.html
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
.vitepress/dist/dp-salad-stack.pdf
vendored
Normal file
BIN
.vitepress/dist/dp-salad-stack.pdf
vendored
Normal file
Binary file not shown.
74
.vitepress/dist/faq.html
vendored
Normal file
74
.vitepress/dist/faq.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1
.vitepress/dist/hashmap.json
vendored
Normal file
1
.vitepress/dist/hashmap.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"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"}
|
||||
26
.vitepress/dist/home.html
vendored
Normal file
26
.vitepress/dist/home.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/index.html
vendored
Normal file
26
.vitepress/dist/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/install/dp-config.html
vendored
Normal file
26
.vitepress/dist/install/dp-config.html
vendored
Normal file
File diff suppressed because one or more lines are too long
37
.vitepress/dist/install/dp-setup.html
vendored
Normal file
37
.vitepress/dist/install/dp-setup.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/install/requirements.html
vendored
Normal file
26
.vitepress/dist/install/requirements.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
.vitepress/dist/install/salad-setup.html
vendored
Normal file
26
.vitepress/dist/install/salad-setup.html
vendored
Normal file
File diff suppressed because one or more lines are too long
148
.vitepress/dist/lldap_config.toml.rtf
vendored
Normal file
148
.vitepress/dist/lldap_config.toml.rtf
vendored
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
## Default configuration for Docker.
|
||||
## All the values can be overridden through environment variables, prefixed
|
||||
## with "LLDAP_". For instance, "ldap_port" can be overridden with the
|
||||
## "LLDAP_LDAP_PORT" variable.
|
||||
|
||||
## Tune the logging to be more verbose by setting this to be true.
|
||||
## You can set it with the LLDAP_VERBOSE environment variable.
|
||||
# verbose=false
|
||||
|
||||
## The host address that the LDAP server will be bound to.
|
||||
## To enable IPv6 support, simply switch "ldap_host" to "::":
|
||||
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
|
||||
## change it to "127.0.0.1" ("::1" in case of IPv6)".
|
||||
ldap_host = "0.0.0.0"
|
||||
|
||||
## The port on which to have the LDAP server.
|
||||
ldap_port = 3890
|
||||
|
||||
## The host address that the HTTP server will be bound to.
|
||||
## To enable IPv6 support, simply switch "http_host" to "::".
|
||||
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
|
||||
## change it to "127.0.0.1" ("::1" in case of IPv6)".
|
||||
http_host = "0.0.0.0"
|
||||
|
||||
## The port on which to have the HTTP server, for user login and
|
||||
## administration.
|
||||
http_port = 17170
|
||||
|
||||
## The public URL of the server, for password reset links.
|
||||
#http_url = "http://localhost"
|
||||
|
||||
## Random secret for JWT signature.
|
||||
## This secret should be random, and should be shared with application
|
||||
## servers that need to consume the JWTs.
|
||||
## Changing this secret will invalidate all user sessions and require
|
||||
## them to re-login.
|
||||
## You should probably set it through the LLDAP_JWT_SECRET environment
|
||||
## variable from a secret ".env" file.
|
||||
## This can also be set from a file's contents by specifying the file path
|
||||
## in the LLDAP_JWT_SECRET_FILE environment variable
|
||||
## You can generate it with (on linux):
|
||||
## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\''()*+,-./:;<=>?@[\]^_{|}~' </dev/urandom | head -c 32; echo ''
|
||||
jwt_secret = "REPLACE_WITH_RANDOM"
|
||||
|
||||
## Base DN for LDAP.
|
||||
## This is usually your domain name, and is used as a
|
||||
## namespace for your users. The choice is arbitrary, but will be needed
|
||||
## to configure the LDAP integration with other services.
|
||||
## The sample value is for "example.com", but you can extend it with as
|
||||
## many "dc" as you want, and you don't actually need to own the domain
|
||||
## name.
|
||||
ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"
|
||||
|
||||
## Admin username.
|
||||
## For the LDAP interface, a value of "admin" here will create the LDAP
|
||||
## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).
|
||||
## For the administration interface, this is the username.
|
||||
ldap_user_dn = "admin"
|
||||
|
||||
## Admin email.
|
||||
## Email for the admin account. It is only used when initially creating
|
||||
## the admin user, and can safely be omitted.
|
||||
ldap_user_email = "admin@[DOMAIN.TLD]"
|
||||
|
||||
## Admin password.
|
||||
## Password for the admin account, both for the LDAP bind and for the
|
||||
## administration interface. It is only used when initially creating
|
||||
## the admin user.
|
||||
## It should be minimum 8 characters long.
|
||||
## You can set it with the LLDAP_LDAP_USER_PASS environment variable.
|
||||
## This can also be set from a file's contents by specifying the file path
|
||||
## in the LLDAP_LDAP_USER_PASS_FILE environment variable
|
||||
## Note: you can create another admin user for user administration, this
|
||||
## is just the default one.
|
||||
ldap_user_pass = "REPLACE_WITH_PASSWORD"
|
||||
|
||||
## Database URL.
|
||||
## This encodes the type of database (SQlite, MySQL, or PostgreSQL)
|
||||
## , the path, the user, password, and sometimes the mode (when
|
||||
## relevant).
|
||||
## Note: SQlite should come with "?mode=rwc" to create the DB
|
||||
## if not present.
|
||||
## Example URLs:
|
||||
## - "postgres://postgres-user:password@postgres-server/my-database"
|
||||
## - "mysql://mysql-user:password@mysql-server/my-database"
|
||||
##
|
||||
## This can be overridden with the LLDAP_DATABASE_URL env variable.
|
||||
database_url = "sqlite:///data/users.db?mode=rwc"
|
||||
|
||||
## Private key file.
|
||||
## Contains the secret private key used to store the passwords safely.
|
||||
## Note that even with a database dump and the private key, an attacker
|
||||
## would still have to perform an (expensive) brute force attack to find
|
||||
## each password.
|
||||
## Randomly generated on first run if it doesn't exist.
|
||||
## Alternatively, you can use key_seed to override this instead of relying on
|
||||
## a file.
|
||||
## Env variable: LLDAP_KEY_FILE
|
||||
key_file = "/data/private_key"
|
||||
|
||||
## Seed to generate the server private key, see key_file above.
|
||||
## This can be any random string, the recommendation is that it's at least 12
|
||||
## characters long.
|
||||
## Env variable: LLDAP_KEY_SEED
|
||||
#key_seed = "RanD0m STR1ng"
|
||||
|
||||
## Ignored attributes.
|
||||
## Some services will request attributes that are not present in LLDAP. When it
|
||||
## is the case, LLDAP will warn about the attribute being unknown. If you want
|
||||
## to ignore the attribute and the service works without, you can add it to this
|
||||
## list to silence the warning.
|
||||
#ignored_user_attributes = [ "sAMAccountName" ]
|
||||
#ignored_group_attributes = [ "mail", "userPrincipalName" ]
|
||||
|
||||
## Options to configure SMTP parameters, to send password reset emails.
|
||||
## To set these options from environment variables, use the following format
|
||||
## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD
|
||||
[smtp_options]
|
||||
## Whether to enabled password reset via email, from LLDAP.
|
||||
#enable_password_reset=true
|
||||
## The SMTP server.
|
||||
#server="smtp.gmail.com"
|
||||
## The SMTP port.
|
||||
#port=587
|
||||
## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".
|
||||
#smtp_encryption = "TLS"
|
||||
## The SMTP user, usually your email address.
|
||||
#user="sender@gmail.com"
|
||||
## The SMTP password.
|
||||
#password="password"
|
||||
## The header field, optional: how the sender appears in the email. The first
|
||||
## is a free-form name, followed by an email between <>.
|
||||
#from="LLDAP Admin <sender@gmail.com>"
|
||||
## Same for reply-to, optional.
|
||||
#reply_to="Do not reply <noreply@localhost>"
|
||||
|
||||
## Options to configure LDAPS.
|
||||
## To set these options from environment variables, use the following format
|
||||
## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT
|
||||
[ldaps_options]
|
||||
## Whether to enable LDAPS.
|
||||
#enabled=true
|
||||
## Port on which to listen.
|
||||
#port=6360
|
||||
## Certificate file.
|
||||
#cert_file="/data/cert.pem"
|
||||
## Certificate key file.
|
||||
#key_file="/data/key.pem"
|
||||
26
.vitepress/dist/maintenance/maintain-guide.html
vendored
Normal file
26
.vitepress/dist/maintenance/maintain-guide.html
vendored
Normal file
File diff suppressed because one or more lines are too long
2
.vitepress/dist/robots.txt
vendored
Normal file
2
.vitepress/dist/robots.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Disallow:/
|
||||
BIN
.vitepress/dist/saladicon.png
vendored
Normal file
BIN
.vitepress/dist/saladicon.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
2
.vitepress/dist/vp-icons.css
vendored
Normal file
2
.vitepress/dist/vp-icons.css
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
/* cannot detect icon mode: not set in options and icon set is missing info, rendering as mask */
|
||||
26
.vitepress/dist/x11-guide.html
vendored
Normal file
26
.vitepress/dist/x11-guide.html
vendored
Normal file
File diff suppressed because one or more lines are too long
36
.vitepress/theme/index.ts
Normal file
36
.vitepress/theme/index.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { h } from "vue";
|
||||
import type { Theme } from "vitepress";
|
||||
import DefaultTheme from "vitepress/theme";
|
||||
import { useData, useRoute } from "vitepress";
|
||||
import codeblocksFold from "vitepress-plugin-codeblocks-fold";
|
||||
import "vitepress-plugin-codeblocks-fold/style/index.css";
|
||||
import "./style.css";
|
||||
import "virtual:uno.css";
|
||||
|
||||
export default {
|
||||
extends: DefaultTheme,
|
||||
|
||||
Layout: () => {
|
||||
return h(DefaultTheme.Layout, null, {
|
||||
// Here you can define custom layout slots or modify the layout.
|
||||
});
|
||||
},
|
||||
|
||||
enhanceApp({ app, router, siteData }) {
|
||||
// This is where you can add additional app enhancements or global components
|
||||
// For example, registering global components or plugins
|
||||
// DefaultTheme.enhanceApp(ctx) can be called here if needed
|
||||
// Using the plugin within enhanceApp() is possible if needed, but `setup()` is a cleaner way to do it.
|
||||
},
|
||||
|
||||
setup() {
|
||||
// Get frontmatter and route from VitePress composition API
|
||||
const { frontmatter } = useData();
|
||||
const route = useRoute();
|
||||
|
||||
// Set up the codeblocks fold plugin with route and frontmatter data
|
||||
// The second argument enables collapsing by default (true/false)
|
||||
// The third argument sets the max height of the code block before it collapses (in pixels)
|
||||
codeblocksFold({ route, frontmatter }, true, 400);
|
||||
},
|
||||
} satisfies Theme;
|
||||
139
.vitepress/theme/style.css
Normal file
139
.vitepress/theme/style.css
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/**
|
||||
* Customize default theme styling by overriding CSS variables:
|
||||
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
|
||||
*/
|
||||
|
||||
/**
|
||||
* Colors
|
||||
*
|
||||
* Each colors have exact same color scale system with 3 levels of solid
|
||||
* colors with different brightness, and 1 soft color.
|
||||
*
|
||||
* - `XXX-1`: The most solid color used mainly for colored text. It must
|
||||
* satisfy the contrast ratio against when used on top of `XXX-soft`.
|
||||
*
|
||||
* - `XXX-2`: The color used mainly for hover state of the button.
|
||||
*
|
||||
* - `XXX-3`: The color for solid background, such as bg color of the button.
|
||||
* It must satisfy the contrast ratio with pure white (#ffffff) text on
|
||||
* top of it.
|
||||
*
|
||||
* - `XXX-soft`: The color used for subtle background such as custom container
|
||||
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
|
||||
* on top of it.
|
||||
*
|
||||
* The soft color must be semi transparent alpha channel. This is crucial
|
||||
* because it allows adding multiple "soft" colors on top of each other
|
||||
* to create a accent, such as when having inline code block inside
|
||||
* custom containers.
|
||||
*
|
||||
* - `default`: The color used purely for subtle indication without any
|
||||
* special meanings attched to it such as bg color for menu hover state.
|
||||
*
|
||||
* - `brand`: Used for primary brand colors, such as link text, button with
|
||||
* brand theme, etc.
|
||||
*
|
||||
* - `tip`: Used to indicate useful information. The default theme uses the
|
||||
* brand color for this by default.
|
||||
*
|
||||
* - `warning`: Used to indicate warning to the users. Used in custom
|
||||
* container, badges, etc.
|
||||
*
|
||||
* - `danger`: Used to show error, or dangerous message to the users. Used
|
||||
* in custom container, badges, etc.
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-c-default-1: var(--vp-c-gray-1);
|
||||
--vp-c-default-2: var(--vp-c-gray-2);
|
||||
--vp-c-default-3: var(--vp-c-gray-3);
|
||||
--vp-c-default-soft: var(--vp-c-gray-soft);
|
||||
|
||||
--vp-c-brand-1: var(--vp-c-indigo-1);
|
||||
--vp-c-brand-2: var(--vp-c-indigo-2);
|
||||
--vp-c-brand-3: var(--vp-c-indigo-3);
|
||||
--vp-c-brand-soft: var(--vp-c-indigo-soft);
|
||||
|
||||
--vp-c-tip-1: var(--vp-c-brand-1);
|
||||
--vp-c-tip-2: var(--vp-c-brand-2);
|
||||
--vp-c-tip-3: var(--vp-c-brand-3);
|
||||
--vp-c-tip-soft: var(--vp-c-brand-soft);
|
||||
|
||||
--vp-c-warning-1: var(--vp-c-yellow-1);
|
||||
--vp-c-warning-2: var(--vp-c-yellow-2);
|
||||
--vp-c-warning-3: var(--vp-c-yellow-3);
|
||||
--vp-c-warning-soft: var(--vp-c-yellow-soft);
|
||||
|
||||
--vp-c-danger-1: var(--vp-c-red-1);
|
||||
--vp-c-danger-2: var(--vp-c-red-2);
|
||||
--vp-c-danger-3: var(--vp-c-red-3);
|
||||
--vp-c-danger-soft: var(--vp-c-red-soft);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Button
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-button-brand-border: transparent;
|
||||
--vp-button-brand-text: var(--vp-c-white);
|
||||
--vp-button-brand-bg: var(--vp-c-brand-3);
|
||||
--vp-button-brand-hover-border: transparent;
|
||||
--vp-button-brand-hover-text: var(--vp-c-white);
|
||||
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
|
||||
--vp-button-brand-active-border: transparent;
|
||||
--vp-button-brand-active-text: var(--vp-c-white);
|
||||
--vp-button-brand-active-bg: var(--vp-c-brand-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Home
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(
|
||||
120deg,
|
||||
#bd34fe 30%,
|
||||
#41d1ff
|
||||
);
|
||||
|
||||
--vp-home-hero-image-background-image: linear-gradient(
|
||||
-45deg,
|
||||
#bd34fe 50%,
|
||||
#47caff 50%
|
||||
);
|
||||
--vp-home-hero-image-filter: blur(44px);
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(56px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(68px);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Custom Block
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-custom-block-tip-border: transparent;
|
||||
--vp-custom-block-tip-text: var(--vp-c-text-1);
|
||||
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
|
||||
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Algolia
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
.DocSearch {
|
||||
--docsearch-primary-color: var(--vp-c-brand-1) !important;
|
||||
}
|
||||
|
||||
117
cf-tunnel.md
Normal file
117
cf-tunnel.md
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
---
|
||||
title: Cloudflare Tunneling
|
||||
---
|
||||
|
||||
# Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:
|
||||
|
||||
Sometimes, someone might want to deploy the DP-SALAD stack behind *NAT* or you don't want to open your network's ports exposing them to the outside.
|
||||
|
||||
:::tip Note:
|
||||
You do not need to have your domain registered through Cloudflare :simple-icons-cloudflare: to use Cloudflare Tunnels
|
||||
:::
|
||||
|
||||
## THE SOLUTION?
|
||||
|
||||
**Cloudflare Tunnels** :party-popper:
|
||||
|
||||
Of course, running the stack this way comes with some extra configuartion on both the Docker side and Cloudflare/domain side.
|
||||
|
||||
This is an excerpt from the [One-Click Docker Compose file](/docker-compose.md):
|
||||
|
||||
In order to make this work with cloudflare tunneling, you must add some more lines to your docker compose. The first being a directive which is highlighted below:
|
||||
|
||||
```yml{21-22}
|
||||
version: "2.1"
|
||||
services:
|
||||
swag:
|
||||
image: lscr.io/linuxserver/swag:latest
|
||||
container_name: swag
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Phoenix
|
||||
- URL=[sakura.nt]
|
||||
- VALIDATION=dns
|
||||
- SUBDOMAINS=wildcard
|
||||
- DNSPLUGIN=cloudflare
|
||||
- EMAIL=[sakurant@gmail.com]
|
||||
- ONLY_SUBDOMAINS=false
|
||||
#- EXTRA_DOMAINS= #optional
|
||||
- STAGING=false
|
||||
- DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared
|
||||
extra_hosts:
|
||||
- domain.tld:127.0.0.1
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/swag:/config
|
||||
ports:
|
||||
- 443:443
|
||||
- 80:80
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
Next, you'll want to generate an API key :material-symbols-key-outline: with Cloudflare :simple-icons-cloudflare:, go to *Overview* in your domain, and click "*get your api token*", click *Create Token*, use → "*Edit zone DNS*" template, add a permission, select "*Account*", → "*Cloudflare Tunnel*", → "*Edit*", under account resources, include your account, under zone resources, include your domain. Continue with setup, **make sure you keep track of the API key somewhere**.
|
||||
|
||||
After you have completed these steps, you will need to add these credentials to your Swag configuration in the **docker-compose.yml**. After the *Docker_Mods* environment variable, add these lines:
|
||||
|
||||
```yml
|
||||
version: "2.1"
|
||||
services:
|
||||
swag:
|
||||
image: lscr.io/linuxserver/swag:latest
|
||||
container_name: swag
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Phoenix
|
||||
- URL=[sakura.nt]
|
||||
- VALIDATION=dns
|
||||
- SUBDOMAINS=wildcard
|
||||
- DNSPLUGIN=cloudflare
|
||||
- EMAIL=[sakurant@gmail.com]
|
||||
- ONLY_SUBDOMAINS=false
|
||||
#- EXTRA_DOMAINS= #optional
|
||||
- STAGING=false
|
||||
- DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared
|
||||
- CF_ZONE_ID=zone id from cloudflare domain overview // [!code focus]
|
||||
- CF_ACCOUNT_ID=account id from cloudflare domain overview // [!code focus]
|
||||
- CF_API_TOKEN=api token generated // [!code focus]
|
||||
- CF_TUNNEL_NAME=create a tunnel, name it whatever // [!code focus]
|
||||
- CF_TUNNEL_PASSWORD=generate a long password // [!code focus]
|
||||
- FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml // [!code focus]
|
||||
extra_hosts:
|
||||
- domain.tld:127.0.0.1
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/swag:/config
|
||||
ports:
|
||||
- 443:443
|
||||
- 80:80
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
You're not quite done yet... :cold-face:
|
||||
|
||||
You'll need to add more to finish the installation:
|
||||
First, `nano /home/[USER]/appdata/swag/tunnelconfig.yml`, and add these contents:
|
||||
|
||||
```yml
|
||||
ingress:
|
||||
- hostname: domain.tld
|
||||
service: https://domain.tld
|
||||
- hostname: "*.domain.tld"
|
||||
service: https://domain.tld
|
||||
- service: http_status:404
|
||||
```
|
||||
|
||||
Then, edit the `/home/[USER]/appdata/swag/dns-conf/cloudflare.ini`, add the API token, you'll comment the top two lines, add the token after uncommenting the bottom line.
|
||||
|
||||
:::details *insert funni meeme here:*
|
||||

|
||||
:::
|
||||
39
changelog.md
Normal file
39
changelog.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
title: Changelog
|
||||
sidebar: false
|
||||
---
|
||||
|
||||
# Changelog
|
||||
|
||||
## Version 1.1.0: 11-20-24
|
||||
|
||||
- Updated dependencies to latest version -ldez
|
||||
- Added code block closure functionality to minify pages -ldez
|
||||
- Added back Cdez's credits -ldez
|
||||
- Moved cloudflare tunneling to misc -ldez
|
||||
|
||||
## Version 1.0.4: 10-11-24
|
||||
|
||||
- Updated dependencies to latest version -ldez
|
||||
- Added miscellaneous section -ldez
|
||||
|
||||
## Version 1.0.3: 07-07-24
|
||||
|
||||
- Updated dependencies to latest version -ldez
|
||||
- Removed Google Domains as they have moved to shitspace -ldez
|
||||
- Added a Cisco Duo logo -ldez
|
||||
|
||||
## Version 1.0.2: 06-22-24
|
||||
|
||||
- Redo the homepage -ldez
|
||||
- Added some icons to pages -ldez
|
||||
- Changed "mini-req" to just "requirements" -ldez
|
||||
- Fixed the formatting issues on dp-setup -ldez
|
||||
|
||||
## Version 1.0.1: 06-19-24
|
||||
|
||||
- Fixed some documentation -ldez
|
||||
- Added section about cloudflare tunneling -ldez
|
||||
- Added more commands to successfully deploy dp-stack -ldez
|
||||
- Added an explanation for Debian's sudo -ldez
|
||||
- Added the FAQ expanlanation to add an application -ldez
|
||||
1335
configuration/auth-config.md
Normal file
1335
configuration/auth-config.md
Normal file
File diff suppressed because it is too large
Load diff
34
configuration/authy-duo-config.md
Normal file
34
configuration/authy-duo-config.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
title: DP-Salad Configuration
|
||||
---
|
||||
|
||||
# Authy/Duo Configuration
|
||||
|
||||
This is like one of those "Choose Your Own Adventure" books! Pick one, not the other, it may be hard to swap later on. You may be able to give your user a choice too! 2FA is handled by either Authelia using an 8 digit code that generates through Authy :logos-authy: or it can be passed off to Duo :simple-icons-cisco: to handle, and then "reinjected" back into the authentication process later on. I'll outline steps for both, and you can choose the method(s) you want your users to be able to 2FA.
|
||||
|
||||
---
|
||||
|
||||
Authy is probably the easiest, and the cheapest way to configure 2FA, especially if you are going to
|
||||
have more than 5 users.
|
||||
|
||||
The default for the SALA/D Stack for 2FA for the more technical people is SHA1, 8 Digits
|
||||
|
||||
All this means for the user is what applications are supported, list is below:
|
||||
|
||||
- [Bitwarden](https://bitwarden.com) :simple-icons-bitwarden: / [Vaultwarden](https://github.com/dani-garcia/vaultwarden) :simple-icons-vaultwarden: (Password Managers, Vaultwarden can be selfhosted!, 2FA is setup in addition to account)
|
||||
- Authy :logos-authy: (Recommended application, named as the best for the stack)
|
||||
- Aegis (Supported, never used. YMMV)
|
||||
|
||||
These three options are supported for 2FA for Authelia :simple-icons-authelia:. It is recommended to actually set this up,
|
||||
as it prevents complete lockouts.
|
||||
|
||||
---
|
||||
|
||||
Duo :simple-icons-cisco: is another way to configure 2FA. If you enable Duo 2FA, you'll need to consult the
|
||||
documentation for Duo setup via Authelia, I've linked some setup links here.
|
||||
|
||||
https://www.authelia.com/configuration/second-factor/duo/
|
||||
|
||||
https://www.authelia.com/overview/authentication/push-notification/
|
||||
|
||||
You'll need to modify the configuration of Authelia to finish the setup of 2FA via Duo.
|
||||
143
configuration/lldap-config.md
Normal file
143
configuration/lldap-config.md
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
---
|
||||
title: LLDAP Configuration
|
||||
---
|
||||
|
||||
# LLDAP Configuration :material-symbols-lock:
|
||||
|
||||
LLDAP :material-symbols-lock: is the *Light Lightweight Directory Access Protocol*, and for our purposes, it will store all the information that we have on our users, like usernames, emails, and hashed passwords. These are the typical values, and only a few more exist in this light implementation of LDAP. I include a sample config file if you don't want to set values in the Docker Compose file.
|
||||
|
||||
As with the Authelia :simple-icons-authelia: Configuration, please change things in square brackets to your relevant values. This file uses **REPLACE_WITH** to tell you where to replace other such values like secrets/tokens.
|
||||
|
||||
```yaml
|
||||
## Default configuration for Docker.
|
||||
## All the values can be overridden through environment variables, prefixed
|
||||
## with "LLDAP_". For instance, "ldap_port" can be overridden with the
|
||||
## "LLDAP_LDAP_PORT" variable.
|
||||
## Tune the logging to be more verbose by setting this to be true.
|
||||
## You can set it with the LLDAP_VERBOSE environment variable.
|
||||
# verbose=false
|
||||
## The host address that the LDAP server will be bound to.
|
||||
## To enable IPv6 support, simply switch "ldap_host" to "::":
|
||||
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
|
||||
## change it to "127.0.0.1" ("::1" in case of IPv6)".
|
||||
ldap_host = "0.0.0.0"
|
||||
## The port on which to have the LDAP server.
|
||||
ldap_port = 3890
|
||||
## The host address that the HTTP server will be bound to.
|
||||
## To enable IPv6 support, simply switch "http_host" to "::".
|
||||
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
|
||||
## change it to "127.0.0.1" ("::1" in case of IPv6)".
|
||||
http_host = "0.0.0.0"
|
||||
## The port on which to have the HTTP server, for user login and
|
||||
## administration.
|
||||
http_port = 17170
|
||||
## The public URL of the server, for password reset links.
|
||||
#http_url = "http://localhost"
|
||||
## Random secret for JWT signature.
|
||||
## This secret should be random, and should be shared with application
|
||||
## servers that need to consume the JWTs.
|
||||
## Changing this secret will invalidate all user sessions and require
|
||||
## them to re-login.
|
||||
## You should probably set it through the LLDAP_JWT_SECRET environment
|
||||
## variable from a secret ".env" file.
|
||||
## This can also be set from a file's contents by specifying the file path
|
||||
## in the LLDAP_JWT_SECRET_FILE environment variable
|
||||
## You can generate it with (on linux):
|
||||
## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\''()*+,-./:;<=>?@[\]^_{|}~' </dev/urandom | head -c 32; echo ''
|
||||
jwt_secret = "REPLACE_WITH_RANDOM"
|
||||
## Base DN for LDAP.
|
||||
## This is usually your domain name, and is used as a
|
||||
## namespace for your users. The choice is arbitrary, but will be needed
|
||||
## to configure the LDAP integration with other services.
|
||||
## The sample value is for "example.com", but you can extend it with as
|
||||
## many "dc" as you want, and you don't actually need to own the domain
|
||||
## name.
|
||||
ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"
|
||||
## Admin username.
|
||||
## For the LDAP interface, a value of "admin" here will create the LDAP
|
||||
## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).
|
||||
## For the administration interface, this is the username.
|
||||
ldap_user_dn = "admin"
|
||||
## Admin email.
|
||||
## Email for the admin account. It is only used when initially creating
|
||||
## the admin user, and can safely be omitted.
|
||||
ldap_user_email = "admin@[DOMAIN.TLD]"
|
||||
## Admin password.
|
||||
## Password for the admin account, both for the LDAP bind and for the
|
||||
## administration interface. It is only used when initially creating
|
||||
## the admin user.
|
||||
## It should be minimum 8 characters long.
|
||||
## You can set it with the LLDAP_LDAP_USER_PASS environment variable.
|
||||
## This can also be set from a file's contents by specifying the file path
|
||||
## in the LLDAP_LDAP_USER_PASS_FILE environment variable
|
||||
## Note: you can create another admin user for user administration, this
|
||||
## is just the default one.
|
||||
ldap_user_pass = "REPLACE_WITH_PASSWORD"
|
||||
## Database URL.
|
||||
## This encodes the type of database (SQlite, MySQL, or PostgreSQL)
|
||||
## , the path, the user, password, and sometimes the mode (when
|
||||
## relevant).
|
||||
## Note: SQlite should come with "?mode=rwc" to create the DB
|
||||
## if not present.
|
||||
## Example URLs:
|
||||
## - "postgres://postgres-user:password@postgres-server/my-database"
|
||||
## - "mysql://mysql-user:password@mysql-server/my-database"
|
||||
##
|
||||
## This can be overridden with the LLDAP_DATABASE_URL env variable.
|
||||
database_url = "sqlite:///data/users.db?mode=rwc"
|
||||
## Private key file.
|
||||
## Contains the secret private key used to store the passwords safely.
|
||||
## Note that even with a database dump and the private key, an attacker
|
||||
## would still have to perform an (expensive) brute force attack to find
|
||||
## each password.
|
||||
## Randomly generated on first run if it doesn't exist.
|
||||
## Alternatively, you can use key_seed to override this instead of relying on
|
||||
## a file.
|
||||
## Env variable: LLDAP_KEY_FILE
|
||||
key_file = "/data/private_key"
|
||||
## Seed to generate the server private key, see key_file above.
|
||||
## This can be any random string, the recommendation is that it's at least 12
|
||||
## characters long.
|
||||
## Env variable: LLDAP_KEY_SEED
|
||||
#key_seed = "RanD0m STR1ng"
|
||||
## Ignored attributes.
|
||||
## Some services will request attributes that are not present in LLDAP. When it
|
||||
## is the case, LLDAP will warn about the attribute being unknown. If you want
|
||||
## to ignore the attribute and the service works without, you can add it to this
|
||||
## list to silence the warning.
|
||||
#ignored_user_attributes = [ "sAMAccountName" ]
|
||||
#ignored_group_attributes = [ "mail", "userPrincipalName" ]
|
||||
## Options to configure SMTP parameters, to send password reset emails.
|
||||
## To set these options from environment variables, use the following format
|
||||
## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD
|
||||
[smtp_options]
|
||||
## Whether to enabled password reset via email, from LLDAP.
|
||||
#enable_password_reset=true
|
||||
## The SMTP server.
|
||||
#server="smtp.gmail.com"
|
||||
## The SMTP port.
|
||||
#port=587
|
||||
## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".
|
||||
#smtp_encryption = "TLS"
|
||||
## The SMTP user, usually your email address.
|
||||
#user="sender@gmail.com"
|
||||
## The SMTP password.
|
||||
#password="password"
|
||||
## The header field, optional: how the sender appears in the email. The first
|
||||
## is a free-form name, followed by an email between <>.
|
||||
#from="LLDAP Admin <sender@gmail.com>"
|
||||
## Same for reply-to, optional.
|
||||
#reply_to="Do not reply <noreply@localhost>"
|
||||
## Options to configure LDAPS.
|
||||
## To set these options from environment variables, use the following format
|
||||
## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT
|
||||
[ldaps_options]
|
||||
## Whether to enable LDAPS.
|
||||
#enabled=true
|
||||
## Port on which to listen.
|
||||
#port=6360
|
||||
## Certificate file.
|
||||
#cert_file="/data/cert.pem"
|
||||
## Certificate key file.
|
||||
#key_file="/data/key.pem"
|
||||
```
|
||||
20
configuration/swag-config.md
Normal file
20
configuration/swag-config.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
title: Swag Config
|
||||
---
|
||||
|
||||
# SWAG Configuration :simple-icons-linuxserver:
|
||||
|
||||
Configuring the Secure Web Application Gateway has a lot of options and potential. It is primarily used to have one gateway for all your services hosted through two ports. Assuming you've used the Docker Compose file, you should be able to view and edit all the configuration files through `/home/[USER]/appdata/swag`. This location now has multiple places you can go.
|
||||
|
||||
1. `/home/[USER]/appdata/swag/nginx` - This holds all of the webserver configuration files, this is where you will go when adding a new application/service.
|
||||
- `/home/[USER]/appdata/swag/nginx/proxy-confs` - This is where all the reverse proxy magic happens, and will likely be the most used folder.
|
||||
- `/home/[USER]/appdata/swag/nginx/site-confs` - If you want to host a static site using SWAG, this is the conf file that you will modify to make it function.
|
||||
::: tip
|
||||
Highly recommend learning how NGINX :logos-nginx: conf files work.
|
||||
:::
|
||||
- The files in this nginx directory are all usually not touched, but used for the rest of configuration to connect Authelia :simple-icons-authelia: to SWAG :simple-icons-linuxserver: for logins.
|
||||
2. `/home/[USER]/appdata/swag/etc/letsencrypt` - This holds all the relevant data for your SSL certificates using Let's Encrypt :simple-icons-letsencrypt:. The current certificates are in the "*live*" folder, under the domain name folder.
|
||||
3. `/home/[USER]/appdata/swag/dns-conf` - This holds the API keys or access information in order for SWAG to setup Let's Encrypt :simple-icons-letsencrypt: certificates or other DNS :material-symbols-dns-outline: information. There are many providers available, however, Cloudflare will most likely be used. In order for a SSL Certificate to be issued, you will have to set this up.
|
||||
4. `/home/[USER]/appdata/swag/www` - This folder holds all of the static site stuff, if you decide to make a static site, you can host it through SWAG's configurations. This does take some patience, as getting the stuff exactly right is a bit tricky.
|
||||
|
||||
See [How do I add a new application to my stack?](/faq.md#how-do-i-add-a-new-application-to-my-stack) for more information as to how to use the SWAG proxy-confs folder to add a new application to your hosting repertoire.
|
||||
113
docker-compose.md
Normal file
113
docker-compose.md
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
title: One File Docker Compose (One File to Rule them all!)
|
||||
sidebar: false
|
||||
---
|
||||
|
||||
# One File Docker Compose (One File to Rule them all!)
|
||||
|
||||
This is the Docker Compose file used for the VM Template, and can be used as a custom template in Portainer.
|
||||
The custom network listed under "*Networks*" is used for all the applications that you want to connect through the stack. Please replace the **ALL_CAPS_PORTIONS** and the pieces in **square brackets**. These are values that you will want to set yourself.
|
||||
|
||||
::: tip
|
||||
For things like passwords and such, I'd recommend a 26 character random string, using alphanumeric characters in both upper and lower case. These values are crucial that they remain both secret and lengthy.
|
||||
:::
|
||||
|
||||
These values are crucial that they remain both secret and lengthy. You should not need to change these, and some of them will break the application if you try to change them. I'd recommend that you backup your compose file to the cloud in case you need to redo the setup.
|
||||
|
||||
```yml
|
||||
version: "2.1"
|
||||
services:
|
||||
swag:
|
||||
image: lscr.io/linuxserver/swag:latest
|
||||
container_name: swag
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Phoenix
|
||||
- URL=[sakura.nt]
|
||||
- VALIDATION=dns
|
||||
- SUBDOMAINS=wildcard
|
||||
- DNSPLUGIN=cloudflare
|
||||
- EMAIL=[sakurant@gmail.com]
|
||||
- ONLY_SUBDOMAINS=false
|
||||
#- EXTRA_DOMAINS= #optional
|
||||
- STAGING=false
|
||||
- DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/swag:/config
|
||||
ports:
|
||||
- 443:443
|
||||
- 80:80
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
authelia:
|
||||
container_name: authelia
|
||||
image: authelia/authelia:latest
|
||||
expose:
|
||||
- 9091
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/authelia:/config
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- redis
|
||||
- mariadb
|
||||
|
||||
lldap:
|
||||
container_name: lldap
|
||||
image: lldap/lldap:stable
|
||||
ports:
|
||||
# For LDAP
|
||||
- "3890:3890"
|
||||
# For the web front-end
|
||||
- "17170:17170"
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/lldap:/data
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
environment:
|
||||
- TZ=America/Phoenix
|
||||
- LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM
|
||||
- LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD
|
||||
- LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt
|
||||
|
||||
redis:
|
||||
container_name: redis
|
||||
image: bitnami/redis:latest
|
||||
expose:
|
||||
- 6379
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/
|
||||
environment:
|
||||
REDIS_PASSWORD: "YOUR_REDIS_PASSWORD"
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
container_name: mysql
|
||||
image: linuxserver/mariadb:latest
|
||||
expose:
|
||||
- 3306
|
||||
volumes:
|
||||
- /home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: "YOUR_MYSQL_ROOT_PASSWORD"
|
||||
MYSQL_ROOT_USER: root
|
||||
MYSQL_DATABASE: authelia
|
||||
MYSQL_USER: authelia
|
||||
MYSQL_PASSWORD: "YOUR_MYSQL_USER_PASSWORD"
|
||||
networks:
|
||||
- [INSERT NETWORK NAME HERE]
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
[INSERT NETWORK NAME HERE]:
|
||||
driver: bridge
|
||||
external: true
|
||||
```
|
||||
154
faq.md
Normal file
154
faq.md
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
---
|
||||
title: FAQ
|
||||
---
|
||||
|
||||
# Frequently Asked Questions
|
||||
|
||||
## How do I [Insert Question Here]?
|
||||
|
||||
Quick Q&A for common problems/questions about the DP-SALA/D Stack
|
||||
|
||||
## How do I add a new application to my stack?
|
||||
|
||||
You have two options:
|
||||
|
||||
1. You can check SWAG's *proxy confs* folder for the application you are trying to add in it's configuration folder.
|
||||
|
||||
- You will use the following command: `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`
|
||||
- Install the application into your docker network (keep track of the internal port that it uses)
|
||||
- Then nano into the *.conf* `nano /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf`
|
||||
1. If you are using a subdomain configuration:
|
||||
- You can change the *server_name* directive to the path you want to use as a subdomain (make sure you leave the .*)
|
||||
- The *$upstream_app* should match the docker container name
|
||||
- The *$upstream_port* should match the docker internal port
|
||||
- Everything else can be left unchanged
|
||||
2. If you are using a subfolder configuration:
|
||||
- The *$location* directive can be changed after the */* to the path you want to use as a subfolder (make sure to leave the *^~*)
|
||||
- The *$upstream_app* should match the docker container name
|
||||
- The *$upstream_port* should match the docker internal port
|
||||
|
||||
::: tip
|
||||
If you have the auto-reload docker mod, SWAG :simple-icons-linuxserver: will automatically reload the changes, and display them. Otherwise, SWAG :simple-icons-linuxserver: will have to be manually reloaded to see the changes.
|
||||
:::
|
||||
|
||||
2. If there isn't a premade template, you can DIY your own using the `_template.sub[domain/folder].conf.sample`.
|
||||
|
||||
- You will use the following command: `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`
|
||||
- Install the application into your docker network (keep track of the internal port that it uses)
|
||||
- Then nano into the *.conf* `nano /home/[USER]/appdata/swag/nginx/proxy-confs/[application].sub[domain/folder].conf`
|
||||
1. If you are using a subdomain template:
|
||||
- You'll want to modify anything with *<>* make sure to remove the *<>* when you are done.
|
||||
2. If you are using a subfolder template:
|
||||
- You'll want to modify anything with *<>* make sure to remove the *<>* when you are done.
|
||||
|
||||
- Which ever way you decide to do, once you have made the changes, save and exit.
|
||||
|
||||
::: warning **THIS IS IMPORTANT!!!**
|
||||
You'll want to verify that the *$upstream_app*, *$port* and *$protocal* are correct, otherwise you will keep getting 502 errors when trying to visit them. The web path/container_name doesn't really matter, you can name it whatever.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
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's documentation to find settings that will let it run behind a reverse proxy. SWAG :simple-icons-linuxserver: uses NGINX :logos-nginx: as it's base, so most NGINX configurations can be used to have it run behind a reverse proxy.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
If you decide to proxy something externally to docker, this comes with the caveat that the *$upstream_app* must be an IP address (preferably static), and the *$upstream_port* must be an external port that the application is listening on. Failing to do so, will result in a **502 Bad Gateway** error.
|
||||
:::
|
||||
|
||||
## How do I add LLDAP :material-symbols-lock: Authentication to [SERVICE]?
|
||||
|
||||
First, check to see if LDAP authentication is supported by the application that you are trying to add. Some services/applications either don'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 :simple-icons-canvas: in particular requires LDAPS (LDAP over SSL) and will not function unless configured correctly.
|
||||
|
||||
Second, if the app supports LDAP Auth, it usually requires a dedicated user to manage the application, usually called a "*Bind User*" 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 "configuration" parts, which are detailed below:
|
||||
|
||||
- User DN/Bind User/User: "cn=[USER],ou=people,dc=[DOMAIN],dc=[TLD]"
|
||||
- Base/User Search Base: "ou=people,dc=[DOMAIN],dc=[TLD]"
|
||||
- User Filter(no grouping, UID access):
|
||||
(&(uid={username})(objectClass=person)(ou=people,dc=[DOMAIN],dc=[TLD]))
|
||||
- User Filter(group access, UID or Email access):
|
||||
(&(objectClass=person)(memberof=cn=[GROUP
|
||||
NAME],ou=groups,dc=[DOMAIN],dc=[TLD])(|(uid={username})(mail={username})))
|
||||
- User Filter(group access, UID access): (&(objectClass=person)(memberof=cn=[GROUP
|
||||
NAME],ou=groups,dc=[DOMAIN],dc=[TLD]))
|
||||
- Admin Filter(group access): (memberof=cn=[GROUP
|
||||
NAME]_administrator,ou=groups,dc=[DOMAIN],dc=[TLD])
|
||||
|
||||
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:
|
||||
https://github.com/lldap/lldap/blob/main/example_configs/authelia_config.yml
|
||||
|
||||
```yml
|
||||
###############################################################
|
||||
# Authelia configuration #
|
||||
###############################################################
|
||||
|
||||
# This is just the LDAP part of the Authelia configuration!
|
||||
|
||||
|
||||
authentication_backend:
|
||||
# Password reset through authelia works normally.
|
||||
password_reset:
|
||||
disable: false
|
||||
# How often authelia should check if there is an user update in LDAP
|
||||
refresh_interval: 1m
|
||||
ldap:
|
||||
implementation: custom
|
||||
# Pattern is ldap://HOSTNAME-OR-IP:PORT
|
||||
# Normal ldap port is 389, standard in LLDAP is 3890
|
||||
url: ldap://lldap:3890
|
||||
# The dial timeout for LDAP.
|
||||
timeout: 5s
|
||||
# Use StartTLS with the LDAP connection, TLS not supported right now
|
||||
start_tls: false
|
||||
#tls:
|
||||
# skip_verify: false
|
||||
# minimum_version: TLS1.2
|
||||
# Set base dn, like dc=google,dc.com
|
||||
base_dn: dc=example,dc=com
|
||||
username_attribute: uid
|
||||
# You need to set this to ou=people, because all users are stored in this ou!
|
||||
additional_users_dn: ou=people
|
||||
# To allow sign in both with username and email, one can use a filter like
|
||||
# (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))
|
||||
users_filter: "(&({username_attribute}={input})(objectClass=person))"
|
||||
# Set this to ou=groups, because all groups are stored in this ou
|
||||
additional_groups_dn: ou=groups
|
||||
# The groups are not displayed in the UI, but this filter works.
|
||||
groups_filter: "(member={dn})"
|
||||
# The attribute holding the name of the group.
|
||||
group_name_attribute: cn
|
||||
# Email attribute
|
||||
mail_attribute: mail
|
||||
# The attribute holding the display name of the user. This will be used to greet an authenticated user.
|
||||
display_name_attribute: displayName
|
||||
# The username and password of the bind user.
|
||||
# "bind_user" should be the username you created for authentication with the "lldap_strict_readonly" permission. It is not recommended to use an actual admin account here.
|
||||
# If you are configuring Authelia to change user passwords, then the account used here needs the "lldap_password_manager" permission instead.
|
||||
user: uid=bind_user,ou=people,dc=example,dc=com
|
||||
# Password can also be set using a secret: https://www.authelia.com/docs/configuration/secrets.html
|
||||
password: 'REPLACE_ME'
|
||||
```
|
||||
|
||||
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).
|
||||
|
||||
Not all of these are good for use cases, however, the most commonly used ones are going to be uid and email.
|
||||
|
||||
If this didn't cover what was needed for adding LDAP auth connectivity to your service, consult Google, or the LLDAP GitHub :mdi-github: Example Configs, linked here: https://github.com/lldap/lldap/tree/main/example_configs which should give you a good starting point to see how to configure the LDAP authentication for your service.
|
||||
|
||||
Here is my recommendation to how user management works:
|
||||
|
||||
1. Setup dedicated groups that match the application/service name, add all users who use that to the group.
|
||||
2. Filter the user based on the group, if they are in that group, they have permission to access the application.
|
||||
|
||||
## How do I handle user creation?
|
||||
|
||||
Once the stack :green-salad: is all setup, you may want to add users :material-symbols-account-circle:. I outline my way of handling user creation and management, but you may do this anyway you like, I'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.
|
||||
|
||||
User Creation:
|
||||
|
||||
1. Ask for the user's email address, full name, and if they would like something different for their display name.
|
||||
2. Using their full name, I create a username. Say if the user was named: Alice Example, their username would be *aexa*. If I already had a duplicate of the username, I'd append a number, starting at 0.
|
||||
3. I would create a temporary password for the user, and then have them go to auth.domain.tld to then "*Forgot Password*" so that they can setup a password themselves, and have it conform to my password standards I have set.
|
||||
4. I then go to the user page, and add them to their respective groups to let them have access to the services.
|
||||
5. I'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.
|
||||
|
||||
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.
|
||||
43
home.md
Normal file
43
home.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: Legacy Instructions
|
||||
---
|
||||
|
||||
# Welcome!
|
||||
This is page to be when looking to deploy the DP-Salad stack!
|
||||
If you need to see if your system fits the DP-Salad stack requirements, you can find the page you're looking for here: [DP-Salad Requirements](/install/requirements.md).
|
||||
|
||||
Otherwise, down below are the Legacy Instructions for the DP-Salad stack, they do have bad formatting so we do not suggest using them in a public deployment. You can also find the legacy instructions on this [website](https://dp-salad-legacy.cdezselfhosted.pw).
|
||||
|
||||
The main instructions can be found on the [DP-Setup](/install/dp-setup.md) page, and are the instructions you will use to deploy the :green-salad: stack.
|
||||
|
||||
Otherwise, feel free to poke about the documentation!
|
||||
|
||||
## Legacy Instructions:
|
||||
|
||||
::: warning
|
||||
Do not use these instructions as they have poor formatting and will lead to a bad stack deployment
|
||||
:::
|
||||
|
||||
**PDF instructions for the DP-SALA/D Stack:** [DP-SALAD_STACK.pdf](./dp-salad-stack.pdf) (Updated 10/11/2023, 12:03PM)
|
||||
|
||||
**Docker Compose file for the DP-SALA/D Stack:** [docker-compose-dpsalad.rtf](./docker-compose-dpsalad.rtf) (Updated 10/13/2023, 11:03PM)
|
||||
|
||||
::: tip
|
||||
Download the docker compose file, rename to docker-compose.yml for best results.
|
||||
:::
|
||||
|
||||
**OVA/VM Template for DP-SALA/D Stack:** [DP-SALA/D OVA Template](https://drive.google.com/file/d/1z2rR20i1UdySJfolpxUM6MiD0f46gqA_/view?usp=drive_link)
|
||||
|
||||
**Authelia Example Configuration File:** [configuration.yml](./configuration.yml.rtf) (Updated 10/12/2023, 8:32PM)
|
||||
|
||||
::: tip
|
||||
Remove RTF extension before using in actual deployment
|
||||
:::
|
||||
|
||||
**LLDAP Example Configuration File:** [lldap_config.toml](./lldap_config.toml.rtf) (Updated 10/12/2023, 8:38PM)
|
||||
|
||||
::: tip
|
||||
Remove RTF extension before using, however, this file is not always needed.
|
||||
:::
|
||||
|
||||
SWAG Example file locations are detailed in the Guidebook to the DP-SALA/D Stack
|
||||
35
index.md
Normal file
35
index.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: "DP-Salad"
|
||||
text: "A guide created by Cdez"
|
||||
tagline: A guide to successfully/fully deploy the DP-Salad Stack
|
||||
image: ./saladicon.png
|
||||
actions:
|
||||
- theme: brand
|
||||
text: Home
|
||||
link: /home
|
||||
- theme: alt
|
||||
text: Minimum Requirements
|
||||
link: /install/requirements
|
||||
- theme: alt
|
||||
text: FAQ
|
||||
link: /faq
|
||||
|
||||
features:
|
||||
- title: Really easy to setup!
|
||||
details: Just a couple of simple steps!
|
||||
icon: <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="currentColor" d="M5 19h1.425L16.2 9.225L14.775 7.8L5 17.575zm-2 2v-4.25L16.2 3.575q.3-.275.663-.425t.762-.15t.775.15t.65.45L20.425 5q.3.275.438.65T21 6.4q0 .4-.137.763t-.438.662L7.25 21zM19 6.4L17.6 5zm-3.525 2.125l-.7-.725L16.2 9.225z"/></svg>
|
||||
link: /install/dp-setup
|
||||
- title: Comes with a compose file!
|
||||
details: ONE FILE TO RULE THEM ALL
|
||||
icon: <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 256 256"><path fill="currentColor" d="M96 104a8 8 0 0 1 8-8h64a8 8 0 0 1 0 16h-64a8 8 0 0 1-8-8m8 40h64a8 8 0 0 0 0-16h-64a8 8 0 0 0 0 16m128 48a32 32 0 0 1-32 32H88a32 32 0 0 1-32-32V64a16 16 0 0 0-32 0c0 5.74 4.83 9.62 4.88 9.66A8 8 0 0 1 24 88a7.9 7.9 0 0 1-4.79-1.61C18.05 85.54 8 77.61 8 64a32 32 0 0 1 32-32h136a32 32 0 0 1 32 32v104h8a8 8 0 0 1 4.8 1.6c1.2.86 11.2 8.79 11.2 22.4M96.26 173.48A8.07 8.07 0 0 1 104 168h88V64a16 16 0 0 0-16-16H67.69A31.7 31.7 0 0 1 72 64v128a16 16 0 0 0 32 0c0-5.74-4.83-9.62-4.88-9.66a7.82 7.82 0 0 1-2.86-8.86M216 192a12.58 12.58 0 0 0-3.23-8h-94a27 27 0 0 1 1.21 8a31.8 31.8 0 0 1-4.29 16H200a16 16 0 0 0 16-16"/></svg>
|
||||
link: /docker-compose
|
||||
- title: Latest Version
|
||||
details: 1.1.0
|
||||
icon: <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 48 48"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="M10 44h28a2 2 0 0 0 2-2V14H30V4H10a2 2 0 0 0-2 2v36a2 2 0 0 0 2 2M30 4l10 10M17 25h14m-14 6h14m0-6l-5-5m-4 16l-5-5"/></svg>
|
||||
link: /changelog
|
||||
---
|
||||
|
||||
37
install/dp-config.md
Normal file
37
install/dp-config.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
title: DP-Salad Configuration
|
||||
---
|
||||
|
||||
# Configuration
|
||||
|
||||
## Debian Configuration :logos-debian:
|
||||
|
||||
Sudo should have been setup after the install, however, nothing much else is required for the setup end in Debian. If you want, here is a list of recommended software to install to make the commandline a little easier to learn:
|
||||
|
||||
1. **TLDR** **:simple-icons-tldraw:**
|
||||
|
||||
```sh
|
||||
sudo apt-get install tldr, tldr -u
|
||||
```
|
||||
|
||||
2. **Tmux** **:simple-icons-tmux:**
|
||||
|
||||
```sh
|
||||
sudo apt-get install tmux
|
||||
```
|
||||
|
||||
## Portainer Configuration :simple-icons-portainer:
|
||||
|
||||
Portainer is ready right out of the box. There should be nothing you need to do to configure it, unless you are running a "*clustered setup*" involving more than one computer, which can be done for this stack, but does add a layer of complexity, and allows for scalability for the amount of applications you can offer to either yourself or your users. A "*clustered setup*" is on the [Portainer CE wiki](https://docs.portainer.io/) and is out of the scope for this guide.
|
||||
|
||||
If you are using the VM Template, Portainer has the custom templates loaded so that if you need to install a newer version, or change something and restart, they are there.
|
||||
|
||||
## App Templates :material-symbols-touch-app:
|
||||
|
||||
In Portainer, [App Templates](https://docs.portainer.io/user/docker/templates) enable you to easily deploy services with a predetermined configuration, while allowing you to customize options through the web UI. While Portainer ships with some default templates (see [portainer/templates](https://github.com/portainer/templates)), it's often helpful to have 1-click access to many more apps + stacks, without having to constantly switch template sources.
|
||||
|
||||
Under Settings → App Templates in your Portainer GUI, paste this URL:
|
||||
|
||||
```sh
|
||||
https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json
|
||||
```
|
||||
155
install/dp-setup.md
Normal file
155
install/dp-setup.md
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
---
|
||||
title: DP-Salad Setup
|
||||
---
|
||||
|
||||
# DP-Setup
|
||||
|
||||
This guide demonstrates the installing of the DP-Salad stack:
|
||||
|
||||
## Debian 12 Setup :logos-debian:
|
||||
|
||||
Visit [Debian's download page](https://debian.org/download) to get the latest version of Debian, as of this writing, Debian 12.5.0 is the latest. This is a *netinst*, meaning that it will require an internet connection to download the OS files.
|
||||
|
||||
Load your Debian ISO onto a USB stick, either directly, or using Rufus/Balena Etcher to write the ISO to stick.
|
||||
|
||||
Plug it into whatever is becoming your server, and boot to the USB stick in your system's BIOS.
|
||||
|
||||
Install Debian using the ISO. Make sure that you are connected to the internet before trying to install Debian.
|
||||
|
||||
1. Select Graphical Installer
|
||||
2. Follow the setup process up until hostname, and put in something that you will recognize when port-forwarding or tunneling.
|
||||
3. Put in the domain name that you have leased as your domain name, like: "*example.com*"
|
||||
4. Setup a root password. (Template uses DPSALADSTACK)
|
||||
5. Setup the name for the first non-admin user. (Template uses dpsalad)
|
||||
6. Setup a password for the non-admin user. (Template uses DPSALADSTACKUSER)
|
||||
7. Continue the setup, and select "Guided - use entire disk" when Partitioning Disk, continue and use "All files in one partition" as the partitioning scheme.
|
||||
8. Allow changes to be written to disk.
|
||||
9. Continue with the installer until Software Selection. See the following points for the selections.
|
||||
- Debian desktop environment (keep selected)
|
||||
- GNOME (deselect)
|
||||
- xfce (select)
|
||||
- SSH server (select)
|
||||
- standard system utilities (keep selected)
|
||||
10. Continue with the installer until the reboot.
|
||||
11. Once the reboot is complete, you should have a fully working Debian system!
|
||||
12. If you used the template, please change the password of both the root and regular user using passwd.
|
||||
|
||||
## Sudo no worky :man-facepalming:
|
||||
|
||||
Debian had you set up a root password, but when you try using sudo, it will not let you do anything. Debian by default does not let the first user have sudo access. See why here: [Reason](https://wiki.debian.org/sudo#:~:text=Why%20sudo%3F,root.%20Some%20reasons). You will have to temporarily log in as root to fix this. Use the following commands/instructions to add your user to the sudoers file.
|
||||
|
||||
```markdown
|
||||
1. su -
|
||||
2. nano /etc/sudoers
|
||||
3. Add the following to the file(no quotes): "username ALL=(ALL:ALL) ALL"
|
||||
4. Exit nano using Ctrl+X and then type 'Y' and enter.
|
||||
5. Restart your PC.
|
||||
6. systemctl reboot
|
||||
```
|
||||
|
||||
Once your machine restarts, you should now be able to use the sudo command.
|
||||
|
||||
## Disabling GUI :desktop-computer:
|
||||
|
||||
If you'd like to disable the GUI and work in CLI only (highly recommended, as GUI uses more resources), follow these instructions:
|
||||
|
||||
```markdown
|
||||
1. sudo systemctl set-default multi-user.target
|
||||
2. sudo reboot
|
||||
```
|
||||
|
||||
## Updating your system :mdi-monitor:
|
||||
|
||||
Now time to run updates, just to guarantee the system is up-to-date. Debian uses *APT* as it's package manager of choice. Run these commands:
|
||||
|
||||
```markdown
|
||||
1. sudo apt-get update
|
||||
2. sudo apt-get upgrade
|
||||
```
|
||||
|
||||
And now, your system is up-to-date!
|
||||
|
||||
## Installing the Docker :logos-docker-icon:
|
||||
|
||||
Next, install Docker. Follow the following instructions to install Docker:
|
||||
|
||||
```sh
|
||||
sudo apt-get update
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo apt-get install ca-certificates curl gnupg
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo install -m 755 -d /etc/apt/keyrings
|
||||
```
|
||||
|
||||
```sh
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
```
|
||||
|
||||
```sh
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
|
||||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo apt-get update
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin dockercompose-plugin
|
||||
```
|
||||
|
||||
Once this is done, you are able to move on to the next section of this guide
|
||||
|
||||
::: danger
|
||||
If you use anything other than the *netinst* for Debian, your apt sources may be invalid. Should this be the case, there is an example of the sources needed in `/usr/share/doc/apt/examples/sources.list`. Use the following command to copy this list of default sources to restore apt to working order. `sudo cp /usr/share/doc/apt/examples/sources.list /etc/apt/sources.list`
|
||||
:::
|
||||
|
||||
## Portainer CE Setup :simple-icons-portainer:
|
||||
|
||||
Time to setup Portainer, which is installed using Docker. Follow the below instructions to install Portainer onto your machine.
|
||||
|
||||
```sh
|
||||
sudo docker volume create portainer_data
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
|
||||
```
|
||||
|
||||
- Visit https://[ip-address]:9443 to log into Portainer CE.
|
||||
|
||||
- Change the admin username if you wish. (Don't forget it if you change it though!) [Template uses DPSALADSTACK]
|
||||
|
||||
- Use a good secure password (12+ characters) for the administrator password. (Don't forget this either!)
|
||||
|
||||
- Click "*Getting Started*" to finish setting up Portainer CE.
|
||||
|
||||
- If you are going to use the one-click Compose Install, make sure to create a network using the following command:
|
||||
|
||||
```sh
|
||||
sudo docker network create [INSERT NETWORK NAME HERE]
|
||||
```
|
||||
|
||||
::: tip
|
||||
Make sure to remove the square brackets around the network name.
|
||||
:::
|
||||
|
||||
## Some changes need to be made :wrench:
|
||||
Do note that some changes need to be made before the stack installation is finished. These two commands need to be ran to make sure Redis can be deployed for the stack to function correctly.
|
||||
|
||||
```sh
|
||||
mkdir -p /home/[USER]/appdata/redis/redis/
|
||||
mkdir -p /home/[USER]/appdata/redis/redis/data/
|
||||
```
|
||||
|
||||
That's it! You have successfully installed Debian and Portainer! :party-popper:
|
||||
73
install/requirements.md
Normal file
73
install/requirements.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
title: DP-Salad Minimum Requirements
|
||||
---
|
||||
|
||||
# DP-SALA/D Stack (*pronounced as DP-Salad but stylized as DP-SALA/D*)
|
||||
|
||||
## Where does the acronym originate from?
|
||||
|
||||
It comes from:
|
||||
|
||||
- **D**ebian 12 :logos-debian:
|
||||
- **P**ortainer :simple-icons-portainer:
|
||||
- **S**WAG :simple-icons-linuxserver:
|
||||
- **A**uthelia :simple-icons-authelia:
|
||||
- **L**LDAP :material-symbols-lock:
|
||||
- **A**uthy/**D**uo :logos-authy:/:simple-icons-cisco:
|
||||
|
||||
Hence, **DP-Salad**.
|
||||
|
||||
As such, this updates with new configuration and such when needed.
|
||||
|
||||
## Minimum Requirements for the DP-SALA/D Stack:
|
||||
|
||||
A DP-SALA/D Stack is rather lightweight in comparison to other stacks out there, like the very similar Unraid-SALA/D stack(:simple-icons-unraid: + :green-salad:).
|
||||
|
||||
This is a compilation of the minimum specs for each part of the stack.
|
||||
|
||||
### Debian 12 :logos-debian:
|
||||
|
||||
- 1GHz Processor from 2010 or later
|
||||
- 2 GB RAM
|
||||
- 10 GB Storage
|
||||
|
||||
### Portainer :simple-icons-portainer:
|
||||
|
||||
- 1GHz Processor from 2010 or later
|
||||
- 2 GB RAM
|
||||
- 20 GB Storage
|
||||
|
||||
### SWAG :simple-icons-linuxserver:
|
||||
|
||||
- 1GHz Processor from 2010 or later
|
||||
- RAM requirement depends on expected requests, 4 GB recommended.
|
||||
- 10 GB Storage
|
||||
|
||||
### Authelia :simple-icons-authelia:
|
||||
|
||||
- Requires that a REDIS :logos-redis: server is setup in addition to whatever else.
|
||||
|
||||
### Authy/Duo
|
||||
|
||||
- Authy: :logos-authy:
|
||||
- Hooks into Authelia for 2FA aaS, only requires a bit of setup.
|
||||
|
||||
- Duo: :simple-icons-cisco:
|
||||
- Hooks into Authelia for 2FA aaS, however, free tier can have max 10 users, but setup is a little easier on the user/admin.
|
||||
|
||||
### Overall Minimum:
|
||||
|
||||
- Most Processors within the last 5 years should work well enough. :octicon-cpu-24:
|
||||
- 4 GB RAM minimum, although 2 GB can be gotten away with. :material-symbols-memory-alt-outline-rounded:
|
||||
- 30 GB Storage minimum, especially if you plan to reverse proxy some apps. :material-symbols-hard-drive-outline:
|
||||
- Basic command line knowledge. :material-symbols-terminal:
|
||||
|
||||
## What this guide assumes:
|
||||
|
||||
This guide assumes that you have basic computing knowledge, including how to boot your computer into an OS from a USB stick, having a domain through a registrar, and have a Gmail address for sending email to your potential users.
|
||||
|
||||
If you do not have a domain, my recommendation (*at the time of writing*) is to go through [Porkbun](https://porkbun.com/) :simple-icons-porkbun: or [Cloudflare](https://www.cloudflare.com/products/registrar/) :simple-icons-cloudflare:. These are the two most reputable registrars that do not markup pricing for renewing the domain you are leasing.
|
||||
|
||||
I also recommend that you set up a Gmail :mdi-gmail: address specifically for the purpose of this stack, as Authelia will require a way to let their users password reset, as well as setup 2FA for themselves.
|
||||
|
||||
You may also use iCloud+'s :mdi-apple-icloud: custom domain email, however, this guide will not cover this setup, and you will have to do some research on sending email through iCloud if you choose to go this route, and you will have to find the proper settings before configuring Authelia.
|
||||
31
install/salad-setup.md
Normal file
31
install/salad-setup.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
title: Salad Setup
|
||||
---
|
||||
|
||||
# SALA/D Setup
|
||||
Instructions to set up the SALA/D Part of the stack.
|
||||
|
||||
## Overview of the SALA/D Stack:
|
||||
|
||||
The SALA/D stack, or SWAG, Authelia, LLDAP, Authy/Duo stack is a simple way to get a webserver/reverse proxy, an identity and access control management system, as well as 2FA; all working together to host whatever you'd like. Here is what does what:
|
||||
|
||||
- Swag :simple-icons-linuxserver:
|
||||
- Handles the webserver and reverse proxy.
|
||||
- All configuration is handled via *.conf* files and text
|
||||
- This guide also demonstrates how to set up the Docker Mods Auto Reload, GeoIPBlock, and ...
|
||||
|
||||
- Authelia :simple-icons-authelia:
|
||||
- Handles weblogin and the front end of 2FA.
|
||||
- This has one configuration file, and hooks into LLDAP.
|
||||
|
||||
- LLDAP :material-symbols-lock:
|
||||
- Handles the "identity" part of the Authentication solution.
|
||||
- Requires that a domain is setup, and has a bit of a learning curve.
|
||||
- This has a bit of configuration involved whenever you setup a new application with LDAP integrations, however, [LLDAP's GitHub page](https://github.com/lldap/lldap) usually has sample configurations on how to setup LDAP auth for an application.
|
||||
|
||||
- Authy/Duo
|
||||
- Pick one between Authy or Duo
|
||||
- Authy :logos-authy:
|
||||
- This allows for 2FA via an 8 digit code. The configuration is handled via Authelia, with the end user setting up 2FA through the Authy App or through Bit/Vaultwarden. The user can self register their 2FA in this way, through email.
|
||||
- Duo
|
||||
- This allows for 2FA via a push notification on your phone. The configuration is handled via Authelia.
|
||||
40
maintenance/maintain-guide.md
Normal file
40
maintenance/maintain-guide.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
title: Maintenance of the DP-SALA/D Stack
|
||||
---
|
||||
|
||||
# Maintenance of the DP-SALA/D Stack
|
||||
|
||||
Suggested maintenance for the DP-SALA/D Stack
|
||||
|
||||
## Required Maintenance for the DP-SALA/D Stack
|
||||
|
||||
**Debian 12:** :logos-debian:
|
||||
|
||||
- At least monthly, run a "`sudo apt-get update && sudo apt-get update`" to update the base applications for Debian, this applies security and feature upgrades for your OS, which is important.
|
||||
|
||||
- At least bi-weekly, save all the configuration files and important data to a secure, private, personal location. You could even use the Google Drive :mdi-google-drive: space of the Gmail address that you setup, and save the previous backups. You could probably keep the last 5 backups just to be safe, but minimum of 3.
|
||||
|
||||
**Portainer:** :simple-icons-portainer:
|
||||
|
||||
- Update whenever there is an update. If you login and it tells you there is an update available, update right then and there. Portainer is just a docker container that lets you manage other docker containers, but make sure to keep this as up to date as possible.
|
||||
- You generally don't have to keep a backup of the Portainer data volume, unless you've made some crazy modification to it's configuration that was different from the standard install.
|
||||
|
||||
**SWAG:** :simple-icons-linuxserver:
|
||||
|
||||
- At least monthly, restart the container. This allows it to pull new configurations from the GitHub :mdi-github: page, as well as renew your SSL certificates for your webserver.
|
||||
|
||||
**Authelia:** :simple-icons-authelia:
|
||||
|
||||
- At least monthly, restart the container. This allows it to pull updates for the container.
|
||||
|
||||
::: warning
|
||||
Make sure that your configuration for this is backed up, since multiple sensitive things are within this file, and recovering them will be impossible.
|
||||
:::
|
||||
|
||||
**LLDAP:** :material-symbols-lock:
|
||||
|
||||
- This is probably the lowest maintenance thing out of the stack. Just make sure that it is backed up completely.
|
||||
|
||||
**Authy/Duo:** :logos-authy:
|
||||
|
||||
- Set it and forget it. This is typically included in Authelia :simple-icons-authelia:, so another reason to make sure that config file is completely backed up properly.
|
||||
36
package.json
Normal file
36
package.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@iconify-json/gg": "^1.2.1",
|
||||
"@iconify-json/ic": "^1.2.1",
|
||||
"@iconify-json/logos": "^1.2.3",
|
||||
"@iconify-json/material-symbols": "^1.2.7",
|
||||
"@iconify-json/mdi": "^1.2.1",
|
||||
"@iconify-json/mingcute": "^1.2.1",
|
||||
"@iconify-json/octicon": "^1.2.1",
|
||||
"@iconify-json/simple-icons": "^1.2.12",
|
||||
"@iconify-json/twemoji": "^1.2.1",
|
||||
"unocss": "^0.64.1",
|
||||
"vitepress": "^1.5.0",
|
||||
"vitepress-plugin-codeblocks-fold": "^1.2.28",
|
||||
"vitepress-plugin-pagefind": "^0.4.11",
|
||||
"vitepress-sidebar": "^1.29.0"
|
||||
},
|
||||
"scripts": {
|
||||
"docs:dev": "vitepress dev C:\\Users\\Ldez\\Downloads\\DP-Salad",
|
||||
"docs:build": "vitepress build C:\\Users\\Ldez\\Downloads\\DP-Salad",
|
||||
"docs:preview": "vitepress preview C:\\Users\\Ldez\\Downloads\\DP-Salad"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vitejs/plugin-vue": "^5.2.0",
|
||||
"vue": "^3.5.13"
|
||||
},
|
||||
"pnpm": {
|
||||
"peerDependencyRules": {
|
||||
"ignoreMissing": [
|
||||
"@algolia/client-search",
|
||||
"search-insights"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue