This commit is contained in:
ld3zian 2025-05-26 20:32:25 -07:00
parent f79ed7c8e4
commit b9926ceb4b
125 changed files with 14425 additions and 10910 deletions

21
.gitignore vendored Normal file
View file

@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store

View file

@ -1,102 +0,0 @@
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"
);
},
},
],
},
});

View file

@ -1,76 +0,0 @@
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);
}
}

View file

@ -1 +0,0 @@
export * from "./emoji";

View file

@ -1,23 +0,0 @@
<!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>

View file

@ -1 +0,0 @@
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};

View file

@ -1,70 +0,0 @@
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 &quot;Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:&quot;">​</a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don&#39;t want to open your network&#39;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 &quot;THE SOLUTION?&quot;">​</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;">&quot;2.1&quot;</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&#39;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 &quot;<em>get your api token</em>&quot;, click <em>Create Token</em>, use → &quot;<em>Edit zone DNS</em>&quot; template, add a permission, select &quot;<em>Account</em>&quot;, → &quot;<em>Cloudflare Tunnel</em>&quot;, → &quot;<em>Edit</em>&quot;, 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;">&quot;2.1&quot;</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&#39;re not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You&#39;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;">&quot;*.domain.tld&quot;</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&#39;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};

View file

@ -1,70 +0,0 @@
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 &quot;Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:&quot;">​</a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don&#39;t want to open your network&#39;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 &quot;THE SOLUTION?&quot;">​</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;">&quot;2.1&quot;</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&#39;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 &quot;<em>get your api token</em>&quot;, click <em>Create Token</em>, use → &quot;<em>Edit zone DNS</em>&quot; template, add a permission, select &quot;<em>Account</em>&quot;, → &quot;<em>Cloudflare Tunnel</em>&quot;, → &quot;<em>Edit</em>&quot;, 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;">&quot;2.1&quot;</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&#39;re not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You&#39;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;">&quot;*.domain.tld&quot;</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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Changelog&quot;">​</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 &quot;Version 1.1.0: 11-20-24&quot;">​</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&#39;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 &quot;Version 1.0.4: 10-11-24&quot;">​</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 &quot;Version 1.0.3: 07-07-24&quot;">​</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 &quot;Version 1.0.2: 06-22-24&quot;">​</a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed &quot;mini-req&quot; to just &quot;requirements&quot; -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 &quot;Version 1.0.1: 06-19-24&quot;">​</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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Changelog&quot;">​</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 &quot;Version 1.1.0: 11-20-24&quot;">​</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&#39;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 &quot;Version 1.0.4: 10-11-24&quot;">​</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 &quot;Version 1.0.3: 07-07-24&quot;">​</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 &quot;Version 1.0.2: 06-22-24&quot;">​</a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed &quot;mini-req&quot; to just &quot;requirements&quot; -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 &quot;Version 1.0.1: 06-19-24&quot;">​</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&#39;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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
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 &quot;Authy/Duo Configuration&quot;">​</a></h1><p>This is like one of those &quot;Choose Your Own Adventure&quot; 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 &quot;reinjected&quot; back into the authentication process later on. I&#39;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&#39;ll need to consult the documentation for Duo setup via Authelia, I&#39;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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Authy/Duo Configuration&quot;">​</a></h1><p>This is like one of those &quot;Choose Your Own Adventure&quot; 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 &quot;reinjected&quot; back into the authentication process later on. I&#39;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&#39;ll need to consult the documentation for Duo setup via Authelia, I&#39;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&#39;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};

View file

@ -1,131 +0,0 @@
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 &quot;LLDAP Configuration :material-symbols-lock:&quot;">​</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&#39;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 &quot;LLDAP_&quot;. For instance, &quot;ldap_port&quot; can be overridden with the</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## &quot;LLDAP_LDAP_PORT&quot; 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 &quot;ldap_host&quot; to &quot;::&quot;:</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 &quot;127.0.0.1&quot; (&quot;::1&quot; in case of IPv6)&quot;.</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = &quot;0.0.0.0&quot;</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 &quot;http_host&quot; to &quot;::&quot;.</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 &quot;127.0.0.1&quot; (&quot;::1&quot; in case of IPv6)&quot;.</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = &quot;0.0.0.0&quot;</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 = &quot;http://localhost&quot;</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 &quot;.env&quot; file.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file&#39;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 &#39;A-Za-z0-9!#%&amp;&#39;\\&#39;&#39;()*+,-./:;&lt;=&gt;?@[\\]^_{|}~&#39; &lt;/dev/urandom | head -c 32; echo &#39;&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = &quot;REPLACE_WITH_RANDOM&quot;</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 &quot;example.com&quot;, but you can extend it with as</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many &quot;dc&quot; as you want, and you don&#39;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 = &quot;dc=[DOMAIN],dc=[TLD]&quot;</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 &quot;admin&quot; here will create the LDAP</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user &quot;cn=admin,ou=people,dc=example,dc=com&quot; (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 = &quot;admin&quot;</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 = &quot;admin@[DOMAIN.TLD]&quot;</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&#39;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 = &quot;REPLACE_WITH_PASSWORD&quot;</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 &quot;?mode=rwc&quot; 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;">## - &quot;postgres://postgres-user:password@postgres-server/my-database&quot;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - &quot;mysql://mysql-user:password@mysql-server/my-database&quot;</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 = &quot;sqlite:///data/users.db?mode=rwc&quot;</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&#39;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 = &quot;/data/private_key&quot;</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&#39;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 = &quot;RanD0m STR1ng&quot;</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 = [ &quot;sAMAccountName&quot; ]</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ &quot;mail&quot;, &quot;userPrincipalName&quot; ]</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 &quot;password&quot;): 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=&quot;smtp.gmail.com&quot;</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 &quot;NONE&quot; (no encryption), &quot;TLS&quot; or &quot;STARTTLS&quot;.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = &quot;TLS&quot;</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=&quot;sender@gmail.com&quot;</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=&quot;password&quot;</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 &lt;&gt;.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from=&quot;LLDAP Admin &lt;sender@gmail.com&gt;&quot;</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=&quot;Do not reply &lt;noreply@localhost&gt;&quot;</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 &quot;port&quot;): 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=&quot;/data/cert.pem&quot;</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=&quot;/data/key.pem&quot;</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};

View file

@ -1,131 +0,0 @@
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 &quot;LLDAP Configuration :material-symbols-lock:&quot;">​</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&#39;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 &quot;LLDAP_&quot;. For instance, &quot;ldap_port&quot; can be overridden with the</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## &quot;LLDAP_LDAP_PORT&quot; 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 &quot;ldap_host&quot; to &quot;::&quot;:</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 &quot;127.0.0.1&quot; (&quot;::1&quot; in case of IPv6)&quot;.</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = &quot;0.0.0.0&quot;</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 &quot;http_host&quot; to &quot;::&quot;.</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 &quot;127.0.0.1&quot; (&quot;::1&quot; in case of IPv6)&quot;.</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = &quot;0.0.0.0&quot;</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 = &quot;http://localhost&quot;</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 &quot;.env&quot; file.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file&#39;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 &#39;A-Za-z0-9!#%&amp;&#39;\\&#39;&#39;()*+,-./:;&lt;=&gt;?@[\\]^_{|}~&#39; &lt;/dev/urandom | head -c 32; echo &#39;&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = &quot;REPLACE_WITH_RANDOM&quot;</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 &quot;example.com&quot;, but you can extend it with as</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many &quot;dc&quot; as you want, and you don&#39;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 = &quot;dc=[DOMAIN],dc=[TLD]&quot;</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 &quot;admin&quot; here will create the LDAP</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user &quot;cn=admin,ou=people,dc=example,dc=com&quot; (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 = &quot;admin&quot;</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 = &quot;admin@[DOMAIN.TLD]&quot;</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&#39;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 = &quot;REPLACE_WITH_PASSWORD&quot;</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 &quot;?mode=rwc&quot; 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;">## - &quot;postgres://postgres-user:password@postgres-server/my-database&quot;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - &quot;mysql://mysql-user:password@mysql-server/my-database&quot;</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 = &quot;sqlite:///data/users.db?mode=rwc&quot;</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&#39;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 = &quot;/data/private_key&quot;</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&#39;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 = &quot;RanD0m STR1ng&quot;</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 = [ &quot;sAMAccountName&quot; ]</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ &quot;mail&quot;, &quot;userPrincipalName&quot; ]</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 &quot;password&quot;): 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=&quot;smtp.gmail.com&quot;</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 &quot;NONE&quot; (no encryption), &quot;TLS&quot; or &quot;STARTTLS&quot;.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = &quot;TLS&quot;</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=&quot;sender@gmail.com&quot;</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=&quot;password&quot;</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 &lt;&gt;.</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from=&quot;LLDAP Admin &lt;sender@gmail.com&gt;&quot;</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=&quot;Do not reply &lt;noreply@localhost&gt;&quot;</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 &quot;port&quot;): 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=&quot;/data/cert.pem&quot;</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=&quot;/data/key.pem&quot;</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};

View file

@ -1 +0,0 @@
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 &quot;SWAG Configuration :simple-icons-linuxserver:&quot;">​</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&#39;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&#39;s Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the &quot;<em>live</em>&quot; 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&#39;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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;SWAG Configuration :simple-icons-linuxserver:&quot;">​</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&#39;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&#39;s Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the &quot;<em>live</em>&quot; 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&#39;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&#39;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};

View file

@ -1,95 +0,0 @@
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 &quot;One File Docker Compose (One File to Rule them all!)&quot;">​</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 &quot;<em>Networks</em>&quot; 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&#39;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&#39;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;">&quot;2.1&quot;</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;">&quot;3890:3890&quot;</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;">&quot;17170:17170&quot;</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;">&quot;YOUR_REDIS_PASSWORD&quot;</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;">&quot;YOUR_MYSQL_ROOT_PASSWORD&quot;</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;">&quot;YOUR_MYSQL_USER_PASSWORD&quot;</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};

View file

@ -1,95 +0,0 @@
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 &quot;One File Docker Compose (One File to Rule them all!)&quot;">​</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 &quot;<em>Networks</em>&quot; 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&#39;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&#39;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;">&quot;2.1&quot;</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;">&quot;3890:3890&quot;</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;">&quot;17170:17170&quot;</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;">&quot;YOUR_REDIS_PASSWORD&quot;</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;">&quot;YOUR_MYSQL_ROOT_PASSWORD&quot;</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;">&quot;YOUR_MYSQL_USER_PASSWORD&quot;</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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
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 &quot;Welcome!&quot;">​</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&#39;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 &quot;Legacy Instructions:&quot;">​</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};

View file

@ -1 +0,0 @@
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 &quot;Welcome!&quot;">​</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&#39;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 &quot;Legacy Instructions:&quot;">​</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};

View file

@ -1 +0,0 @@
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};

View file

@ -1 +0,0 @@
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};

View file

@ -1 +0,0 @@
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 &quot;Configuration&quot;">​</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 &quot;Debian Configuration :logos-debian:&quot;">​</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 &quot;Portainer Configuration :simple-icons-portainer:&quot;">​</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 &quot;<em>clustered setup</em>&quot; 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 &quot;<em>clustered setup</em>&quot; 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 &quot;App Templates :material-symbols-touch-app:&quot;">​</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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Configuration&quot;">​</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 &quot;Debian Configuration :logos-debian:&quot;">​</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 &quot;Portainer Configuration :simple-icons-portainer:&quot;">​</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 &quot;<em>clustered setup</em>&quot; 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 &quot;<em>clustered setup</em>&quot; 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 &quot;App Templates :material-symbols-touch-app:&quot;">​</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&#39;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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
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 &quot;SALA/D Setup&quot;">​</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 &quot;Overview of the SALA/D Stack:&quot;">​</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&#39;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 &quot;identity&quot; 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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;SALA/D Setup&quot;">​</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 &quot;Overview of the SALA/D Stack:&quot;">​</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&#39;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 &quot;identity&quot; 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&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Maintenance of the DP-SALA/D Stack&quot;">​</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 &quot;Required Maintenance for the DP-SALA/D Stack&quot;">​</a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a &quot;<code>sudo apt-get update &amp;&amp; sudo apt-get update</code>&quot; 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&#39;t have to keep a backup of the Portainer data volume, unless you&#39;ve made some crazy modification to it&#39;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};

View file

@ -1 +0,0 @@
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 &quot;Maintenance of the DP-SALA/D Stack&quot;">​</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 &quot;Required Maintenance for the DP-SALA/D Stack&quot;">​</a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a &quot;<code>sudo apt-get update &amp;&amp; sudo apt-get update</code>&quot; 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&#39;t have to keep a backup of the Portainer data volume, unless you&#39;ve made some crazy modification to it&#39;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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,95 +0,0 @@
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

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
{"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"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,148 +0,0 @@
## 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"

File diff suppressed because one or more lines are too long

View file

@ -1,2 +0,0 @@
User-agent: *
Disallow:/

View file

@ -1,2 +0,0 @@
/* cannot detect icon mode: not set in options and icon set is missing info, rendering as mask */

File diff suppressed because one or more lines are too long

View file

@ -1,36 +0,0 @@
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;

View file

@ -1,139 +0,0 @@
/**
* 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;
}

4
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

5
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"conventionalCommits.scopes": [
"deps"
]
}

24
LICENSE Normal file
View file

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

1
README.md Normal file
View file

@ -0,0 +1 @@
# emu-docs

32
astro.config.mjs Normal file
View file

@ -0,0 +1,32 @@
import { defineConfig } from "astro/config";
import starlight from "@astrojs/starlight";
import UnoCSS from "@unocss/astro";
import remarkIconShorthand from "./emojis.mjs";
import vue from "@astrojs/vue";
export default defineConfig({
site: "https://dp-salad.cdezselfhosted.pw",
integrations: [
starlight({
title: "DP-Salad",
customCss: ["./src/styles/custom.css", "@fontsource/ubuntu-mono"],
social: [
{
icon: "seti:git",
label: "Forgejo",
href: "https://git.cdezselfhosted.pw/ldez/dp-salad",
},
],
logo: { src: "./src/assets/saladicon.png", replacesTitle: false },
favicon: "/favicon.ico",
}),
UnoCSS(),
vue({ appEntrypoint: "/src/vue-setup.js" }),
],
markdown: {
remarkPlugins: [remarkIconShorthand],
},
});

58
emojis.mjs Normal file
View file

@ -0,0 +1,58 @@
import { visit } from 'unist-util-visit';
// Regex now captures collection and name separately
const iconShorthandRegex = /:([a-z0-9-]+)-([a-z0-9-]+):/g;
/**
* Remark plugin to transform :collection-name: into HTML spans for UnoCSS icons.
*/
export default function remarkIconShorthand() {
return (tree) => {
visit(tree, 'text', (node, index, parent) => {
if (!parent || typeof index !== 'number') return; // Ensure parent and index are valid
const text = node.value;
let lastIndex = 0;
const newNodes = [];
// Find all matches in the current text node
for (const match of text.matchAll(iconShorthandRegex)) {
const fullMatch = match[0];
const collection = match[1]; // Captured group 1
const name = match[2]; // Captured group 2
const matchIndex = match.index;
if (matchIndex === undefined || !collection || !name) continue;
// Add preceding text node if any
if (matchIndex > lastIndex) {
newNodes.push({ type: 'text', value: text.slice(lastIndex, matchIndex) });
}
// Add the icon span node
newNodes.push({
type: 'html',
// Generate the final i-prefix class directly
value: `<span class="i-${collection}-${name} align-middle inline-block"></span>`,
});
lastIndex = matchIndex + fullMatch.length;
}
// If no matches were found, or if there's remaining text after the last match,
// keep the original node or the remaining part
if (newNodes.length === 0) {
return; // No changes needed for this node
}
if (lastIndex < text.length) {
newNodes.push({ type: 'text', value: text.slice(lastIndex) });
}
// Replace the original text node with the new nodes (text + html spans)
parent.children.splice(index, 1, ...newNodes);
// Return the index + number of new nodes - 1 to adjust visitor position
return index + newNodes.length -1;
});
};
}

View file

@ -1,35 +0,0 @@
---
# 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
---

13801
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,36 +1,39 @@
{
"name": "@ld3z/dp-salad",
"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"
},
"version": "0.0.1",
"private": true,
"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"
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@vitejs/plugin-vue": "^5.2.0",
"vue": "^3.5.13"
"@astrojs/starlight": "^0.34.3",
"@astrojs/vue": "^5.1.0",
"@fontsource/ubuntu-mono": "^5.2.5",
"@iconify-json/gg": "^1.2.2",
"@iconify-json/ic": "^1.2.2",
"@iconify-json/logos": "^1.2.4",
"@iconify-json/material-symbols": "^1.2.21",
"@iconify-json/mdi": "^1.2.3",
"@iconify-json/mingcute": "^1.2.3",
"@iconify-json/octicon": "^1.2.6",
"@iconify-json/ri": "^1.2.5",
"@iconify-json/simple-icons": "^1.2.35",
"@iconify-json/twemoji": "^1.2.2",
"astro": "^5.8.0",
"floating-vue": "^5.2.2",
"markdown-it": "^14.1.0",
"vue": "^3.5.14"
},
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": [
"@algolia/client-search",
"search-insights"
]
}
"devDependencies": {
"@unocss/astro": "^66.1.2",
"@unocss/preset-icons": "^66.1.2",
"@unocss/preset-uno": "^66.1.2",
"unist-util-visit": "^5.0.0",
"unocss": "^66.1.2"
}
}
}

3129
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

View file

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Before After
Before After

151
src/components/Tooltip.vue Normal file
View file

@ -0,0 +1,151 @@
<script setup lang="ts">
import { computed, onMounted, ref, h, onBeforeMount } from 'vue';
import MarkdownIt from 'markdown-it';
import { tooltips, type TooltipEntry } from '../tooltips';
const props = withDefaults(
defineProps<{
tooltipKey: string;
title?: string;
icon?: string;
}>(),
{
icon: "i-ri-information-2-line",
},
);
const md = new MarkdownIt();
const tooltipData = ref<TooltipEntry | null>(null);
const isMounted = ref(false);
// Fetch tooltip data
const fetchTooltipData = () => {
tooltipData.value = tooltips[props.tooltipKey] || null;
};
// Computed property for the tooltip title
const tooltipTitle = computed<string>(() => {
if (props.title) return props.title;
if (tooltipData.value?.title) return tooltipData.value.title;
return 'Info';
});
// Computed property for the HTML content of the tooltip
const tooltipHtmlContent = computed<string>(() => {
if (!isMounted.value) return '';
if (tooltipData.value?.content) {
return md.render(tooltipData.value.content);
}
return `<p>Tooltip content not found for key: <code>${props.tooltipKey}</code></p>`;
});
// Initialize tooltip data when component mounts
onBeforeMount(() => {
fetchTooltipData();
isMounted.value = true;
});
</script>
<template>
<span class="inline-flex items-center touch-manipulation">
<button
v-tooltip="{
html: true,
content: `
<div class='p-4 max-w-lg border-[var(--sl-color-border)] bg-[var(--sl-color-bg-inset)] rounded-lg border-2 border-solid shadow-lg'>
<h3 class='text-lg font-semibold text-[var(--sl-color-text-1)] mb-2'>${tooltipTitle}</h3>
<div class='tooltip-markdown-content text-sm text-[var(--sl-color-text-2)] prose'>${tooltipHtmlContent}</div>
</div>
`,
placement: 'top',
distance: 10,
arrowPadding: 8,
flip: true,
shift: true,
boundary: 'viewport',
theme: 'info-tooltip',
// Let the global config handle triggers based on device
}"
type="button"
class="w-7 h-7 rounded-full bg-[var(--sl-color-accent-low)] hover:bg-[var(--sl-color-accent-low)]/40 active:bg-[var(--sl-color-accent-low)]/60 text-[var(--sl-color-text-accent)] border-[var(--sl-color-accent-low)] hover:border-[var(--sl-color-accent-high)] select-none border-2 border-solid font-bold transition-all duration-300 flex items-center justify-center touch-manipulation"
:aria-label="tooltipTitle"
@click.prevent
>
<span :class="icon" class="text-base" />
</button>
</span>
</template>
<style>
/* Tooltip styles */
.v-popper__popper {
z-index: 9999 !important;
}
.v-popper--theme-info-tooltip .v-popper__inner {
background: var(--sl-color-bg);
color: var(--sl-color-text);
border-radius: 0.5rem;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
max-width: 24rem;
}
/* Style the tooltip arrow */
.v-popper--theme-info-tooltip .v-popper__arrow-outer,
.v-popper--theme-info-tooltip .v-popper__arrow-inner {
border-color: var(--sl-color-border);
}
/* Style markdown content */
.tooltip-markdown-content {
line-height: 1.5;
}
.tooltip-markdown-content p:not(:last-child) {
margin-bottom: 0.5rem;
}
.tooltip-markdown-content ul,
.tooltip-markdown-content ol {
padding-left: 1.25rem;
margin: 0.5rem 0;
}
.tooltip-markdown-content ul {
list-style-type: disc;
}
.tooltip-markdown-content ol {
list-style-type: decimal;
}
.tooltip-markdown-content li {
margin: 0.25rem 0;
}
.tooltip-markdown-content a {
color: var(--sl-color-accent-high);
text-decoration: underline;
transition: color 0.2s ease;
}
.tooltip-markdown-content a:hover {
color: var(--sl-color-accent-low);
text-decoration: none;
}
.tooltip-markdown-content code {
background-color: var(--sl-color-bg-inline-code);
color: var(--sl-color-text-inline-code);
padding: 0.2em 0.4em;
border-radius: 0.25rem;
font-size: 0.9em;
font-family: var(--sl-font-mono);
}
/* Ensure the tooltip trigger is properly aligned with text */
.inline-flex {
display: inline-flex;
vertical-align: middle;
}
</style>

6
src/content/config.ts Normal file
View file

@ -0,0 +1,6 @@
import { defineCollection } from 'astro:content';
import { docsSchema } from '@astrojs/starlight/schema';
export const collections = {
docs: defineCollection({ schema: docsSchema() }),
};

Some files were not shown because too many files have changed in this diff Show more