g
21
.gitignore
vendored
Normal 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
|
||||
|
|
@ -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"
|
||||
);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
export * from "./emoji";
|
||||
23
.vitepress/dist/404.html
vendored
|
|
@ -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>
|
||||
1
.vitepress/dist/assets/app.D2AcNbxn.js
vendored
|
|
@ -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};
|
||||
70
.vitepress/dist/assets/cf-tunnel.md.DCFtN7s5.js
vendored
|
|
@ -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 "Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:""></a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don't want to open your network's ports exposing them to the outside.</p><div class="tip custom-block"><p class="custom-block-title">Note:</p><p>You do not need to have your domain registered through Cloudflare <span class="i-simple-icons-cloudflare"></span> to use Cloudflare Tunnels</p></div><h2 id="the-solution" tabindex="-1">THE SOLUTION? <a class="header-anchor" href="#the-solution" aria-label="Permalink to "THE SOLUTION?""></a></h2><p><strong>Cloudflare Tunnels</strong> <span class="i-twemoji-party-popper"></span></p><p>Of course, running the stack this way comes with some extra configuartion on both the Docker side and Cloudflare/domain side.</p><p>This is an excerpt from the <a href="/docker-compose">One-Click Docker Compose file</a>:</p><p>In order to make this work with cloudflare tunneling, you must add some more lines to your docker compose. The first being a directive which is highlighted below:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>Next, you'll want to generate an API key <span class="i-material-symbols-key-outline"></span> with Cloudflare <span class="i-simple-icons-cloudflare"></span>, go to <em>Overview</em> in your domain, and click "<em>get your api token</em>", click <em>Create Token</em>, use → "<em>Edit zone DNS</em>" template, add a permission, select "<em>Account</em>", → "<em>Cloudflare Tunnel</em>", → "<em>Edit</em>", under account resources, include your account, under zone resources, include your domain. Continue with setup, <strong>make sure you keep track of the API key somewhere</strong>.</p><p>After you have completed these steps, you will need to add these credentials to your Swag configuration in the <strong>docker-compose.yml</strong>. After the <em>Docker_Mods</em> environment variable, add these lines:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark has-focused-lines vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ZONE_ID=zone id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ACCOUNT_ID=account id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_API_TOKEN=api token generated</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_NAME=create a tunnel, name it whatever</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_PASSWORD=generate a long password</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>You're not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You'll need to add more to finish the installation: First, <code>nano /home/[USER]/appdata/swag/tunnelconfig.yml</code>, and add these contents:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">ingress</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"*.domain.tld"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_status:404</span></span></code></pre></div><p>Then, edit the <code>/home/[USER]/appdata/swag/dns-conf/cloudflare.ini</code>, add the API token, you'll comment the top two lines, add the token after uncommenting the bottom line.</p><details class="details custom-block"><summary><em>insert funni meeme here:</em></summary><p><img src="`+e+'" alt="/cat-typing.gif"></p></details>',17)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default};
|
||||
|
|
@ -1,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 "Cloudflare Tunnel Setup: :simple-icons-cloudflare: :mingcute-tunnel-line:""></a></h1><p>Sometimes, someone might want to deploy the DP-SALAD stack behind <em>NAT</em> or you don't want to open your network's ports exposing them to the outside.</p><div class="tip custom-block"><p class="custom-block-title">Note:</p><p>You do not need to have your domain registered through Cloudflare <span class="i-simple-icons-cloudflare"></span> to use Cloudflare Tunnels</p></div><h2 id="the-solution" tabindex="-1">THE SOLUTION? <a class="header-anchor" href="#the-solution" aria-label="Permalink to "THE SOLUTION?""></a></h2><p><strong>Cloudflare Tunnels</strong> <span class="i-twemoji-party-popper"></span></p><p>Of course, running the stack this way comes with some extra configuartion on both the Docker side and Cloudflare/domain side.</p><p>This is an excerpt from the <a href="/docker-compose">One-Click Docker Compose file</a>:</p><p>In order to make this work with cloudflare tunneling, you must add some more lines to your docker compose. The first being a directive which is highlighted below:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>Next, you'll want to generate an API key <span class="i-material-symbols-key-outline"></span> with Cloudflare <span class="i-simple-icons-cloudflare"></span>, go to <em>Overview</em> in your domain, and click "<em>get your api token</em>", click <em>Create Token</em>, use → "<em>Edit zone DNS</em>" template, add a permission, select "<em>Account</em>", → "<em>Cloudflare Tunnel</em>", → "<em>Edit</em>", under account resources, include your account, under zone resources, include your domain. Continue with setup, <strong>make sure you keep track of the API key somewhere</strong>.</p><p>After you have completed these steps, you will need to add these credentials to your Swag configuration in the <strong>docker-compose.yml</strong>. After the <em>Docker_Mods</em> environment variable, add these lines:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark has-focused-lines vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip|linuxserver/mods:universal-cloudflared</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ZONE_ID=zone id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_ACCOUNT_ID=account id from cloudflare domain overview</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_API_TOKEN=api token generated</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_NAME=create a tunnel, name it whatever</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">CF_TUNNEL_PASSWORD=generate a long password</span></span>
|
||||
<span class="line has-focus"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">FILE__CF_TUNNEL_CONFIG=/config/tunnelconfig.yml</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> extra_hosts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld:127.0.0.1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span></code></pre></div><p>You're not quite done yet... <span class="i-twemoji-cold-face"></span></p><p>You'll need to add more to finish the installation: First, <code>nano /home/[USER]/appdata/swag/tunnelconfig.yml</code>, and add these contents:</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">ingress</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">hostname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"*.domain.tld"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://domain.tld</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_status:404</span></span></code></pre></div><p>Then, edit the <code>/home/[USER]/appdata/swag/dns-conf/cloudflare.ini</code>, add the API token, you'll comment the top two lines, add the token after uncommenting the bottom line.</p><details class="details custom-block"><summary><em>insert funni meeme here:</em></summary><p><img src="`+e+'" alt="/cat-typing.gif"></p></details>',17)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default};
|
||||
|
|
@ -1 +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 "Changelog""></a></h1><h2 id="version-1-1-0-11-20-24" tabindex="-1">Version 1.1.0: 11-20-24 <a class="header-anchor" href="#version-1-1-0-11-20-24" aria-label="Permalink to "Version 1.1.0: 11-20-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added code block closure functionality to minify pages -ldez</li><li>Added back Cdez's credits -ldez</li><li>Moved cloudflare tunneling to misc -ldez</li></ul><h2 id="version-1-0-4-10-11-24" tabindex="-1">Version 1.0.4: 10-11-24 <a class="header-anchor" href="#version-1-0-4-10-11-24" aria-label="Permalink to "Version 1.0.4: 10-11-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added miscellaneous section -ldez</li></ul><h2 id="version-1-0-3-07-07-24" tabindex="-1">Version 1.0.3: 07-07-24 <a class="header-anchor" href="#version-1-0-3-07-07-24" aria-label="Permalink to "Version 1.0.3: 07-07-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Removed Google Domains as they have moved to shitspace -ldez</li><li>Added a Cisco Duo logo -ldez</li></ul><h2 id="version-1-0-2-06-22-24" tabindex="-1">Version 1.0.2: 06-22-24 <a class="header-anchor" href="#version-1-0-2-06-22-24" aria-label="Permalink to "Version 1.0.2: 06-22-24""></a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed "mini-req" to just "requirements" -ldez</li><li>Fixed the formatting issues on dp-setup -ldez</li></ul><h2 id="version-1-0-1-06-19-24" tabindex="-1">Version 1.0.1: 06-19-24 <a class="header-anchor" href="#version-1-0-1-06-19-24" aria-label="Permalink to "Version 1.0.1: 06-19-24""></a></h2><ul><li>Fixed some documentation -ldez</li><li>Added section about cloudflare tunneling -ldez</li><li>Added more commands to successfully deploy dp-stack -ldez</li><li>Added an explanation for Debian's sudo -ldez</li><li>Added the FAQ expanlanation to add an application -ldez</li></ul>',11)]))}const g=l(d,[["render",n]]);export{m as __pageData,g as default};
|
||||
|
|
@ -1 +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 "Changelog""></a></h1><h2 id="version-1-1-0-11-20-24" tabindex="-1">Version 1.1.0: 11-20-24 <a class="header-anchor" href="#version-1-1-0-11-20-24" aria-label="Permalink to "Version 1.1.0: 11-20-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added code block closure functionality to minify pages -ldez</li><li>Added back Cdez's credits -ldez</li><li>Moved cloudflare tunneling to misc -ldez</li></ul><h2 id="version-1-0-4-10-11-24" tabindex="-1">Version 1.0.4: 10-11-24 <a class="header-anchor" href="#version-1-0-4-10-11-24" aria-label="Permalink to "Version 1.0.4: 10-11-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Added miscellaneous section -ldez</li></ul><h2 id="version-1-0-3-07-07-24" tabindex="-1">Version 1.0.3: 07-07-24 <a class="header-anchor" href="#version-1-0-3-07-07-24" aria-label="Permalink to "Version 1.0.3: 07-07-24""></a></h2><ul><li>Updated dependencies to latest version -ldez</li><li>Removed Google Domains as they have moved to shitspace -ldez</li><li>Added a Cisco Duo logo -ldez</li></ul><h2 id="version-1-0-2-06-22-24" tabindex="-1">Version 1.0.2: 06-22-24 <a class="header-anchor" href="#version-1-0-2-06-22-24" aria-label="Permalink to "Version 1.0.2: 06-22-24""></a></h2><ul><li>Redo the homepage -ldez</li><li>Added some icons to pages -ldez</li><li>Changed "mini-req" to just "requirements" -ldez</li><li>Fixed the formatting issues on dp-setup -ldez</li></ul><h2 id="version-1-0-1-06-19-24" tabindex="-1">Version 1.0.1: 06-19-24 <a class="header-anchor" href="#version-1-0-1-06-19-24" aria-label="Permalink to "Version 1.0.1: 06-19-24""></a></h2><ul><li>Fixed some documentation -ldez</li><li>Added section about cloudflare tunneling -ldez</li><li>Added more commands to successfully deploy dp-stack -ldez</li><li>Added an explanation for Debian's sudo -ldez</li><li>Added the FAQ expanlanation to add an application -ldez</li></ul>',11)]))}const g=l(d,[["render",n]]);export{m as __pageData,g as default};
|
||||
|
|
@ -1 +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 "Authy/Duo Configuration""></a></h1><p>This is like one of those "Choose Your Own Adventure" books! Pick one, not the other, it may be hard to swap later on. You may be able to give your user a choice too! 2FA is handled by either Authelia using an 8 digit code that generates through Authy <span class="i-logos-authy"></span> or it can be passed off to Duo <span class="i-simple-icons-cisco"></span> to handle, and then "reinjected" back into the authentication process later on. I'll outline steps for both, and you can choose the method(s) you want your users to be able to 2FA.</p><hr><p>Authy is probably the easiest, and the cheapest way to configure 2FA, especially if you are going to have more than 5 users.</p><p>The default for the SALA/D Stack for 2FA for the more technical people is SHA1, 8 Digits</p><p>All this means for the user is what applications are supported, list is below:</p><ul><li><a href="https://bitwarden.com" target="_blank" rel="noreferrer">Bitwarden</a> <span class="i-simple-icons-bitwarden"></span> / <a href="https://github.com/dani-garcia/vaultwarden" target="_blank" rel="noreferrer">Vaultwarden</a> <span class="i-simple-icons-vaultwarden"></span> (Password Managers, Vaultwarden can be selfhosted!, 2FA is setup in addition to account)</li><li>Authy <span class="i-logos-authy"></span> (Recommended application, named as the best for the stack)</li><li>Aegis (Supported, never used. YMMV)</li></ul><p>These three options are supported for 2FA for Authelia <span class="i-simple-icons-authelia"></span>. It is recommended to actually set this up, as it prevents complete lockouts.</p><hr><p>Duo <span class="i-simple-icons-cisco"></span> is another way to configure 2FA. If you enable Duo 2FA, you'll need to consult the documentation for Duo setup via Authelia, I've linked some setup links here.</p><p><a href="https://www.authelia.com/configuration/second-factor/duo/" target="_blank" rel="noreferrer">https://www.authelia.com/configuration/second-factor/duo/</a></p><p><a href="https://www.authelia.com/overview/authentication/push-notification/" target="_blank" rel="noreferrer">https://www.authelia.com/overview/authentication/push-notification/</a></p><p>You'll need to modify the configuration of Authelia to finish the setup of 2FA via Duo.</p>',13)]))}const f=t(n,[["render",s]]);export{d as __pageData,f as default};
|
||||
|
|
@ -1 +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 "Authy/Duo Configuration""></a></h1><p>This is like one of those "Choose Your Own Adventure" books! Pick one, not the other, it may be hard to swap later on. You may be able to give your user a choice too! 2FA is handled by either Authelia using an 8 digit code that generates through Authy <span class="i-logos-authy"></span> or it can be passed off to Duo <span class="i-simple-icons-cisco"></span> to handle, and then "reinjected" back into the authentication process later on. I'll outline steps for both, and you can choose the method(s) you want your users to be able to 2FA.</p><hr><p>Authy is probably the easiest, and the cheapest way to configure 2FA, especially if you are going to have more than 5 users.</p><p>The default for the SALA/D Stack for 2FA for the more technical people is SHA1, 8 Digits</p><p>All this means for the user is what applications are supported, list is below:</p><ul><li><a href="https://bitwarden.com" target="_blank" rel="noreferrer">Bitwarden</a> <span class="i-simple-icons-bitwarden"></span> / <a href="https://github.com/dani-garcia/vaultwarden" target="_blank" rel="noreferrer">Vaultwarden</a> <span class="i-simple-icons-vaultwarden"></span> (Password Managers, Vaultwarden can be selfhosted!, 2FA is setup in addition to account)</li><li>Authy <span class="i-logos-authy"></span> (Recommended application, named as the best for the stack)</li><li>Aegis (Supported, never used. YMMV)</li></ul><p>These three options are supported for 2FA for Authelia <span class="i-simple-icons-authelia"></span>. It is recommended to actually set this up, as it prevents complete lockouts.</p><hr><p>Duo <span class="i-simple-icons-cisco"></span> is another way to configure 2FA. If you enable Duo 2FA, you'll need to consult the documentation for Duo setup via Authelia, I've linked some setup links here.</p><p><a href="https://www.authelia.com/configuration/second-factor/duo/" target="_blank" rel="noreferrer">https://www.authelia.com/configuration/second-factor/duo/</a></p><p><a href="https://www.authelia.com/overview/authentication/push-notification/" target="_blank" rel="noreferrer">https://www.authelia.com/overview/authentication/push-notification/</a></p><p>You'll need to modify the configuration of Authelia to finish the setup of 2FA via Duo.</p>',13)]))}const f=t(n,[["render",s]]);export{d as __pageData,f as default};
|
||||
|
|
@ -1,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 "LLDAP Configuration :material-symbols-lock:""></a></h1><p>LLDAP <span class="i-material-symbols-lock"></span> is the <em>Light Lightweight Directory Access Protocol</em>, and for our purposes, it will store all the information that we have on our users, like usernames, emails, and hashed passwords. These are the typical values, and only a few more exist in this light implementation of LDAP. I include a sample config file if you don't want to set values in the Docker Compose file.</p><p>As with the Authelia <span class="i-simple-icons-authelia"></span> Configuration, please change things in square brackets to your relevant values. This file uses <strong>REPLACE_WITH</strong> to tell you where to replace other such values like secrets/tokens.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Default configuration for Docker.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## All the values can be overridden through environment variables, prefixed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## with "LLDAP_". For instance, "ldap_port" can be overridden with the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## "LLDAP_LDAP_PORT" variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Tune the logging to be more verbose by setting this to be true.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_VERBOSE environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># verbose=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the LDAP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "ldap_host" to "::":</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the LDAP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_port = 3890</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the HTTP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "http_host" to "::".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the HTTP server, for user login and</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_port = 17170</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The public URL of the server, for password reset links.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#http_url = "http://localhost"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Random secret for JWT signature.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This secret should be random, and should be shared with application</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## servers that need to consume the JWTs.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Changing this secret will invalidate all user sessions and require</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## them to re-login.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You should probably set it through the LLDAP_JWT_SECRET environment</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## variable from a secret ".env" file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_JWT_SECRET_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can generate it with (on linux):</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\\''()*+,-./:;<=>?@[\\]^_{|}~' </dev/urandom | head -c 32; echo ''</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = "REPLACE_WITH_RANDOM"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Base DN for LDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This is usually your domain name, and is used as a</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## namespace for your users. The choice is arbitrary, but will be needed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to configure the LDAP integration with other services.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The sample value is for "example.com", but you can extend it with as</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many "dc" as you want, and you don't actually need to own the domain</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## name.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the LDAP interface, a value of "admin" here will create the LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the administration interface, this is the username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_dn = "admin"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin email.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Email for the admin account. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user, and can safely be omitted.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_email = "admin@[DOMAIN.TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Password for the admin account, both for the LDAP bind and for the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration interface. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## It should be minimum 8 characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_LDAP_USER_PASS environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_LDAP_USER_PASS_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: you can create another admin user for user administration, this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is just the default one.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_pass = "REPLACE_WITH_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Database URL.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This encodes the type of database (SQlite, MySQL, or PostgreSQL)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## , the path, the user, password, and sometimes the mode (when</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## relevant).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: SQlite should come with "?mode=rwc" to create the DB</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## if not present.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Example URLs:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "postgres://postgres-user:password@postgres-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "mysql://mysql-user:password@mysql-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">##</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be overridden with the LLDAP_DATABASE_URL env variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">database_url = "sqlite:///data/users.db?mode=rwc"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Private key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Contains the secret private key used to store the passwords safely.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note that even with a database dump and the private key, an attacker</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## would still have to perform an (expensive) brute force attack to find</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## each password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Randomly generated on first run if it doesn't exist.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Alternatively, you can use key_seed to override this instead of relying on</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## a file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_FILE</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">key_file = "/data/private_key"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Seed to generate the server private key, see key_file above.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be any random string, the recommendation is that it's at least 12</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_SEED</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_seed = "RanD0m STR1ng"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Ignored attributes.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Some services will request attributes that are not present in LLDAP. When it</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is the case, LLDAP will warn about the attribute being unknown. If you want</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to ignore the attribute and the service works without, you can add it to this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## list to silence the warning.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_user_attributes = [ "sAMAccountName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ "mail", "userPrincipalName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure SMTP parameters, to send password reset emails.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">smtp_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enabled password reset via email, from LLDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enable_password_reset=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#server="smtp.gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP port.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=587</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = "TLS"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP user, usually your email address.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#user="sender@gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#password="password"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The header field, optional: how the sender appears in the email. The first</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is a free-form name, followed by an email between <>.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from="LLDAP Admin <sender@gmail.com>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Same for reply-to, optional.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#reply_to="Do not reply <noreply@localhost>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldaps_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enable LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enabled=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Port on which to listen.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=6360</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#cert_file="/data/cert.pem"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_file="/data/key.pem"</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};
|
||||
|
|
@ -1,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 "LLDAP Configuration :material-symbols-lock:""></a></h1><p>LLDAP <span class="i-material-symbols-lock"></span> is the <em>Light Lightweight Directory Access Protocol</em>, and for our purposes, it will store all the information that we have on our users, like usernames, emails, and hashed passwords. These are the typical values, and only a few more exist in this light implementation of LDAP. I include a sample config file if you don't want to set values in the Docker Compose file.</p><p>As with the Authelia <span class="i-simple-icons-authelia"></span> Configuration, please change things in square brackets to your relevant values. This file uses <strong>REPLACE_WITH</strong> to tell you where to replace other such values like secrets/tokens.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Default configuration for Docker.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## All the values can be overridden through environment variables, prefixed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## with "LLDAP_". For instance, "ldap_port" can be overridden with the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## "LLDAP_LDAP_PORT" variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Tune the logging to be more verbose by setting this to be true.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_VERBOSE environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># verbose=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the LDAP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "ldap_host" to "::":</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the LDAP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_port = 3890</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The host address that the HTTP server will be bound to.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To enable IPv6 support, simply switch "http_host" to "::".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To only allow connections from localhost (if you want to restrict to local self-hosted services),</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## change it to "127.0.0.1" ("::1" in case of IPv6)".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_host = "0.0.0.0"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The port on which to have the HTTP server, for user login and</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">http_port = 17170</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The public URL of the server, for password reset links.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#http_url = "http://localhost"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Random secret for JWT signature.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This secret should be random, and should be shared with application</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## servers that need to consume the JWTs.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Changing this secret will invalidate all user sessions and require</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## them to re-login.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You should probably set it through the LLDAP_JWT_SECRET environment</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## variable from a secret ".env" file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_JWT_SECRET_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can generate it with (on linux):</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\\''()*+,-./:;<=>?@[\\]^_{|}~' </dev/urandom | head -c 32; echo ''</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jwt_secret = "REPLACE_WITH_RANDOM"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Base DN for LDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This is usually your domain name, and is used as a</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## namespace for your users. The choice is arbitrary, but will be needed</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to configure the LDAP integration with other services.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The sample value is for "example.com", but you can extend it with as</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## many "dc" as you want, and you don't actually need to own the domain</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## name.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_base_dn = "dc=[DOMAIN],dc=[TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the LDAP interface, a value of "admin" here will create the LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## For the administration interface, this is the username.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_dn = "admin"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin email.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Email for the admin account. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user, and can safely be omitted.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_email = "admin@[DOMAIN.TLD]"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Admin password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Password for the admin account, both for the LDAP bind and for the</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## administration interface. It is only used when initially creating</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## the admin user.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## It should be minimum 8 characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## You can set it with the LLDAP_LDAP_USER_PASS environment variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can also be set from a file's contents by specifying the file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## in the LLDAP_LDAP_USER_PASS_FILE environment variable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: you can create another admin user for user administration, this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is just the default one.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldap_user_pass = "REPLACE_WITH_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Database URL.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This encodes the type of database (SQlite, MySQL, or PostgreSQL)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## , the path, the user, password, and sometimes the mode (when</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## relevant).</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note: SQlite should come with "?mode=rwc" to create the DB</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## if not present.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Example URLs:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "postgres://postgres-user:password@postgres-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## - "mysql://mysql-user:password@mysql-server/my-database"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">##</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be overridden with the LLDAP_DATABASE_URL env variable.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">database_url = "sqlite:///data/users.db?mode=rwc"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Private key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Contains the secret private key used to store the passwords safely.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Note that even with a database dump and the private key, an attacker</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## would still have to perform an (expensive) brute force attack to find</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## each password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Randomly generated on first run if it doesn't exist.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Alternatively, you can use key_seed to override this instead of relying on</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## a file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_FILE</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">key_file = "/data/private_key"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Seed to generate the server private key, see key_file above.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## This can be any random string, the recommendation is that it's at least 12</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## characters long.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Env variable: LLDAP_KEY_SEED</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_seed = "RanD0m STR1ng"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Ignored attributes.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Some services will request attributes that are not present in LLDAP. When it</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is the case, LLDAP will warn about the attribute being unknown. If you want</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## to ignore the attribute and the service works without, you can add it to this</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## list to silence the warning.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_user_attributes = [ "sAMAccountName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#ignored_group_attributes = [ "mail", "userPrincipalName" ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure SMTP parameters, to send password reset emails.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">smtp_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enabled password reset via email, from LLDAP.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enable_password_reset=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP server.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#server="smtp.gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP port.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=587</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#smtp_encryption = "TLS"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP user, usually your email address.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#user="sender@gmail.com"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The SMTP password.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#password="password"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## The header field, optional: how the sender appears in the email. The first</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## is a free-form name, followed by an email between <>.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#from="LLDAP Admin <sender@gmail.com>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Same for reply-to, optional.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#reply_to="Do not reply <noreply@localhost>"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Options to configure LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## To set these options from environment variables, use the following format</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ldaps_options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Whether to enable LDAPS.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#enabled=true</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Port on which to listen.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#port=6360</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#cert_file="/data/cert.pem"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">## Certificate key file.</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#key_file="/data/key.pem"</span></span></code></pre></div>`,4)]))}const A=a(t,[["render",l]]);export{c as __pageData,A as default};
|
||||
|
|
@ -1 +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 "SWAG Configuration :simple-icons-linuxserver:""></a></h1><p>Configuring the Secure Web Application Gateway has a lot of options and potential. It is primarily used to have one gateway for all your services hosted through two ports. Assuming you've used the Docker Compose file, you should be able to view and edit all the configuration files through <code>/home/[USER]/appdata/swag</code>. This location now has multiple places you can go.</p><ol><li><code>/home/[USER]/appdata/swag/nginx</code> - This holds all of the webserver configuration files, this is where you will go when adding a new application/service. <ul><li><code>/home/[USER]/appdata/swag/nginx/proxy-confs</code> - This is where all the reverse proxy magic happens, and will likely be the most used folder.</li><li><code>/home/[USER]/appdata/swag/nginx/site-confs</code> - If you want to host a static site using SWAG, this is the conf file that you will modify to make it function.</li></ul></li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Highly recommend learning how NGINX <span class="i-logos-nginx"></span> conf files work.</p></div><ul><li>The files in this nginx directory are all usually not touched, but used for the rest of configuration to connect Authelia <span class="i-simple-icons-authelia"></span> to SWAG <span class="i-simple-icons-linuxserver"></span> for logins.</li></ul><ol start="2"><li><code>/home/[USER]/appdata/swag/etc/letsencrypt</code> - This holds all the relevant data for your SSL certificates using Let's Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the "<em>live</em>" folder, under the domain name folder.</li><li><code>/home/[USER]/appdata/swag/dns-conf</code> - This holds the API keys or access information in order for SWAG to setup Let's Encrypt <span class="i-simple-icons-letsencrypt"></span> certificates or other DNS <span class="i-material-symbols-dns-outline"></span> information. There are many providers available, however, Cloudflare will most likely be used. In order for a SSL Certificate to be issued, you will have to set this up.</li><li><code>/home/[USER]/appdata/swag/www</code> - This folder holds all of the static site stuff, if you decide to make a static site, you can host it through SWAG's configurations. This does take some patience, as getting the stuff exactly right is a bit tricky.</li></ol><p>See <a href="/faq#how-do-i-add-a-new-application-to-my-stack">How do I add a new application to my stack?</a> for more information as to how to use the SWAG proxy-confs folder to add a new application to your hosting repertoire.</p>',7)]))}const u=o(s,[["render",n]]);export{f as __pageData,u as default};
|
||||
|
|
@ -1 +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 "SWAG Configuration :simple-icons-linuxserver:""></a></h1><p>Configuring the Secure Web Application Gateway has a lot of options and potential. It is primarily used to have one gateway for all your services hosted through two ports. Assuming you've used the Docker Compose file, you should be able to view and edit all the configuration files through <code>/home/[USER]/appdata/swag</code>. This location now has multiple places you can go.</p><ol><li><code>/home/[USER]/appdata/swag/nginx</code> - This holds all of the webserver configuration files, this is where you will go when adding a new application/service. <ul><li><code>/home/[USER]/appdata/swag/nginx/proxy-confs</code> - This is where all the reverse proxy magic happens, and will likely be the most used folder.</li><li><code>/home/[USER]/appdata/swag/nginx/site-confs</code> - If you want to host a static site using SWAG, this is the conf file that you will modify to make it function.</li></ul></li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Highly recommend learning how NGINX <span class="i-logos-nginx"></span> conf files work.</p></div><ul><li>The files in this nginx directory are all usually not touched, but used for the rest of configuration to connect Authelia <span class="i-simple-icons-authelia"></span> to SWAG <span class="i-simple-icons-linuxserver"></span> for logins.</li></ul><ol start="2"><li><code>/home/[USER]/appdata/swag/etc/letsencrypt</code> - This holds all the relevant data for your SSL certificates using Let's Encrypt <span class="i-simple-icons-letsencrypt"></span>. The current certificates are in the "<em>live</em>" folder, under the domain name folder.</li><li><code>/home/[USER]/appdata/swag/dns-conf</code> - This holds the API keys or access information in order for SWAG to setup Let's Encrypt <span class="i-simple-icons-letsencrypt"></span> certificates or other DNS <span class="i-material-symbols-dns-outline"></span> information. There are many providers available, however, Cloudflare will most likely be used. In order for a SSL Certificate to be issued, you will have to set this up.</li><li><code>/home/[USER]/appdata/swag/www</code> - This folder holds all of the static site stuff, if you decide to make a static site, you can host it through SWAG's configurations. This does take some patience, as getting the stuff exactly right is a bit tricky.</li></ol><p>See <a href="/faq#how-do-i-add-a-new-application-to-my-stack">How do I add a new application to my stack?</a> for more information as to how to use the SWAG proxy-confs folder to add a new application to your hosting repertoire.</p>',7)]))}const u=o(s,[["render",n]]);export{f as __pageData,u as default};
|
||||
|
|
@ -1,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 "One File Docker Compose (One File to Rule them all!)""></a></h1><p>This is the Docker Compose file used for the VM Template, and can be used as a custom template in Portainer. The custom network listed under "<em>Networks</em>" is used for all the applications that you want to connect through the stack. Please replace the <strong>ALL_CAPS_PORTIONS</strong> and the pieces in <strong>square brackets</strong>. These are values that you will want to set yourself.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>For things like passwords and such, I'd recommend a 26 character random string, using alphanumeric characters in both upper and lower case. These values are crucial that they remain both secret and lengthy.</p></div><p>These values are crucial that they remain both secret and lengthy. You should not need to change these, and some of them will break the application if you try to change them. I'd recommend that you backup your compose file to the cloud in case you need to redo the setup.</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> authelia</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia/authelia:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">9091</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/authelia:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> depends_on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mariadb</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> lldap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap/lldap:stable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"3890:3890"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For the web front-end</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"17170:17170"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/lldap:/data</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> redis</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bitnami/redis:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">6379</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> REDIS_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_REDIS_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> mariadb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mysql</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">linuxserver/mariadb:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3306</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_ROOT_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_DATABASE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_USER_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> driver</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bridge</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> external</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div>`,5)]))}const y=i(h,[["render",p]]);export{g as __pageData,y as default};
|
||||
|
|
@ -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 "One File Docker Compose (One File to Rule them all!)""></a></h1><p>This is the Docker Compose file used for the VM Template, and can be used as a custom template in Portainer. The custom network listed under "<em>Networks</em>" is used for all the applications that you want to connect through the stack. Please replace the <strong>ALL_CAPS_PORTIONS</strong> and the pieces in <strong>square brackets</strong>. These are values that you will want to set yourself.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>For things like passwords and such, I'd recommend a 26 character random string, using alphanumeric characters in both upper and lower case. These values are crucial that they remain both secret and lengthy.</p></div><p>These values are crucial that they remain both secret and lengthy. You should not need to change these, and some of them will break the application if you try to change them. I'd recommend that you backup your compose file to the cloud in case you need to redo the setup.</p><div class="language-yml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> swag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lscr.io/linuxserver/swag:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">swag</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cap_add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">NET_ADMIN</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PUID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PGID=1000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">URL=[sakura.nt]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">VALIDATION=dns</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">SUBDOMAINS=wildcard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DNSPLUGIN=cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">EMAIL=[sakurant@gmail.com]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ONLY_SUBDOMAINS=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #- EXTRA_DOMAINS= #optional</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">STAGING=false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DOCKER_MODS=linuxserver/mods:universal-docker|linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/swag:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">443:443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">80:80</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> authelia</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia/authelia:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">9091</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/authelia:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> depends_on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mariadb</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> lldap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lldap/lldap:stable</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For LDAP</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"3890:3890"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # For the web front-end</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"17170:17170"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/lldap:/data</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">TZ=America/Phoenix</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_JWT_SECRET=REPLACE_WITH_RANDOM</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_USER_PASS=REPLACE_WITH_PASSWORD</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LLDAP_LDAP_BASE_DN=dc=sakura,dc=nt</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> redis</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">redis</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bitnami/redis:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">6379</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/redis:/bitnami/</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> REDIS_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_REDIS_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> mariadb</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">mysql</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">linuxserver/mariadb:latest</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expose</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3306</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/home/[INSERT USER FOLDER HERE]/appdata/mariadb:/config</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_ROOT_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_ROOT_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_DATABASE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_USER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">authelia</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> MYSQL_PASSWORD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"YOUR_MYSQL_USER_PASSWORD"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">networks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">INSERT NETWORK NAME HERE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> driver</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bridge</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> external</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div>`,5)]))}const y=i(h,[["render",p]]);export{g as __pageData,y as default};
|
||||
49
.vitepress/dist/assets/faq.md.By3ovNs1.js
vendored
49
.vitepress/dist/assets/faq.md.By3ovNs1.lean.js
vendored
1
.vitepress/dist/assets/home.md.DWjC1jWa.js
vendored
|
|
@ -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 "Welcome!""></a></h1><p>This is page to be when looking to deploy the DP-Salad stack! If you need to see if your system fits the DP-Salad stack requirements, you can find the page you're looking for here: <a href="/install/requirements">DP-Salad Requirements</a>.</p><p>Otherwise, down below are the Legacy Instructions for the DP-Salad stack, they do have bad formatting so we do not suggest using them in a public deployment. You can also find the legacy instructions on this <a href="https://dp-salad-legacy.cdezselfhosted.pw" target="_blank" rel="noreferrer">website</a>.</p><p>The main instructions can be found on the <a href="/install/dp-setup">DP-Setup</a> page, and are the instructions you will use to deploy the <span class="i-twemoji-green-salad"></span> stack.</p><p>Otherwise, feel free to poke about the documentation!</p><h2 id="legacy-instructions" tabindex="-1">Legacy Instructions: <a class="header-anchor" href="#legacy-instructions" aria-label="Permalink to "Legacy Instructions:""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Do not use these instructions as they have poor formatting and will lead to a bad stack deployment</p></div><p><strong>PDF instructions for the DP-SALA/D Stack:</strong> <a href="./dp-salad-stack.pdf">DP-SALAD_STACK.pdf</a> (Updated 10/11/2023, 12:03PM)</p><p><strong>Docker Compose file for the DP-SALA/D Stack:</strong> <a href="./docker-compose-dpsalad.rtf">docker-compose-dpsalad.rtf</a> (Updated 10/13/2023, 11:03PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Download the docker compose file, rename to docker-compose.yml for best results.</p></div><p><strong>OVA/VM Template for DP-SALA/D Stack:</strong> <a href="https://drive.google.com/file/d/1z2rR20i1UdySJfolpxUM6MiD0f46gqA_/view?usp=drive_link" target="_blank" rel="noreferrer">DP-SALA/D OVA Template</a></p><p><strong>Authelia Example Configuration File:</strong> <a href="./configuration.yml.rtf">configuration.yml</a> (Updated 10/12/2023, 8:32PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using in actual deployment</p></div><p><strong>LLDAP Example Configuration File:</strong> <a href="./lldap_config.toml.rtf">lldap_config.toml</a> (Updated 10/12/2023, 8:38PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using, however, this file is not always needed.</p></div><p>SWAG Example file locations are detailed in the Guidebook to the DP-SALA/D Stack</p>',16)]))}const f=t(n,[["render",i]]);export{u as __pageData,f as default};
|
||||
|
|
@ -1 +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 "Welcome!""></a></h1><p>This is page to be when looking to deploy the DP-Salad stack! If you need to see if your system fits the DP-Salad stack requirements, you can find the page you're looking for here: <a href="/install/requirements">DP-Salad Requirements</a>.</p><p>Otherwise, down below are the Legacy Instructions for the DP-Salad stack, they do have bad formatting so we do not suggest using them in a public deployment. You can also find the legacy instructions on this <a href="https://dp-salad-legacy.cdezselfhosted.pw" target="_blank" rel="noreferrer">website</a>.</p><p>The main instructions can be found on the <a href="/install/dp-setup">DP-Setup</a> page, and are the instructions you will use to deploy the <span class="i-twemoji-green-salad"></span> stack.</p><p>Otherwise, feel free to poke about the documentation!</p><h2 id="legacy-instructions" tabindex="-1">Legacy Instructions: <a class="header-anchor" href="#legacy-instructions" aria-label="Permalink to "Legacy Instructions:""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Do not use these instructions as they have poor formatting and will lead to a bad stack deployment</p></div><p><strong>PDF instructions for the DP-SALA/D Stack:</strong> <a href="./dp-salad-stack.pdf">DP-SALAD_STACK.pdf</a> (Updated 10/11/2023, 12:03PM)</p><p><strong>Docker Compose file for the DP-SALA/D Stack:</strong> <a href="./docker-compose-dpsalad.rtf">docker-compose-dpsalad.rtf</a> (Updated 10/13/2023, 11:03PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Download the docker compose file, rename to docker-compose.yml for best results.</p></div><p><strong>OVA/VM Template for DP-SALA/D Stack:</strong> <a href="https://drive.google.com/file/d/1z2rR20i1UdySJfolpxUM6MiD0f46gqA_/view?usp=drive_link" target="_blank" rel="noreferrer">DP-SALA/D OVA Template</a></p><p><strong>Authelia Example Configuration File:</strong> <a href="./configuration.yml.rtf">configuration.yml</a> (Updated 10/12/2023, 8:32PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using in actual deployment</p></div><p><strong>LLDAP Example Configuration File:</strong> <a href="./lldap_config.toml.rtf">lldap_config.toml</a> (Updated 10/12/2023, 8:38PM)</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Remove RTF extension before using, however, this file is not always needed.</p></div><p>SWAG Example file locations are detailed in the Guidebook to the DP-SALA/D Stack</p>',16)]))}const f=t(n,[["render",i]]);export{u as __pageData,f as default};
|
||||
1
.vitepress/dist/assets/index.md.DDpI40D1.js
vendored
|
|
@ -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};
|
||||
|
|
@ -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};
|
||||
|
|
@ -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 "Configuration""></a></h1><h2 id="debian-configuration" tabindex="-1">Debian Configuration <span class="i-logos-debian"></span> <a class="header-anchor" href="#debian-configuration" aria-label="Permalink to "Debian Configuration :logos-debian:""></a></h2><p>Sudo should have been setup after the install, however, nothing much else is required for the setup end in Debian. If you want, here is a list of recommended software to install to make the commandline a little easier to learn:</p><ol><li><strong>TLDR</strong> <strong><span class="i-simple-icons-tldraw"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span></span></code></pre></div><ol start="2"><li><strong>Tmux</strong> <strong><span class="i-simple-icons-tmux"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tmux</span></span></code></pre></div><h2 id="portainer-configuration" tabindex="-1">Portainer Configuration <span class="i-simple-icons-portainer"></span> <a class="header-anchor" href="#portainer-configuration" aria-label="Permalink to "Portainer Configuration :simple-icons-portainer:""></a></h2><p>Portainer is ready right out of the box. There should be nothing you need to do to configure it, unless you are running a "<em>clustered setup</em>" involving more than one computer, which can be done for this stack, but does add a layer of complexity, and allows for scalability for the amount of applications you can offer to either yourself or your users. A "<em>clustered setup</em>" is on the <a href="https://docs.portainer.io/" target="_blank" rel="noreferrer">Portainer CE wiki</a> and is out of the scope for this guide.</p><p>If you are using the VM Template, Portainer has the custom templates loaded so that if you need to install a newer version, or change something and restart, they are there.</p><h2 id="app-templates" tabindex="-1">App Templates <span class="i-material-symbols-touch-app"></span> <a class="header-anchor" href="#app-templates" aria-label="Permalink to "App Templates :material-symbols-touch-app:""></a></h2><p>In Portainer, <a href="https://docs.portainer.io/user/docker/templates" target="_blank" rel="noreferrer">App Templates</a> enable you to easily deploy services with a predetermined configuration, while allowing you to customize options through the web UI. While Portainer ships with some default templates (see <a href="https://github.com/portainer/templates" target="_blank" rel="noreferrer">portainer/templates</a>), it's often helpful to have 1-click access to many more apps + stacks, without having to constantly switch template sources.</p><p>Under Settings → App Templates in your Portainer GUI, paste this URL:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json</span></span></code></pre></div>',14)]))}const g=a(o,[["render",n]]);export{u as __pageData,g as default};
|
||||
|
|
@ -1 +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 "Configuration""></a></h1><h2 id="debian-configuration" tabindex="-1">Debian Configuration <span class="i-logos-debian"></span> <a class="header-anchor" href="#debian-configuration" aria-label="Permalink to "Debian Configuration :logos-debian:""></a></h2><p>Sudo should have been setup after the install, however, nothing much else is required for the setup end in Debian. If you want, here is a list of recommended software to install to make the commandline a little easier to learn:</p><ol><li><strong>TLDR</strong> <strong><span class="i-simple-icons-tldraw"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tldr</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span></span></code></pre></div><ol start="2"><li><strong>Tmux</strong> <strong><span class="i-simple-icons-tmux"></span></strong></li></ol><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt-get</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tmux</span></span></code></pre></div><h2 id="portainer-configuration" tabindex="-1">Portainer Configuration <span class="i-simple-icons-portainer"></span> <a class="header-anchor" href="#portainer-configuration" aria-label="Permalink to "Portainer Configuration :simple-icons-portainer:""></a></h2><p>Portainer is ready right out of the box. There should be nothing you need to do to configure it, unless you are running a "<em>clustered setup</em>" involving more than one computer, which can be done for this stack, but does add a layer of complexity, and allows for scalability for the amount of applications you can offer to either yourself or your users. A "<em>clustered setup</em>" is on the <a href="https://docs.portainer.io/" target="_blank" rel="noreferrer">Portainer CE wiki</a> and is out of the scope for this guide.</p><p>If you are using the VM Template, Portainer has the custom templates loaded so that if you need to install a newer version, or change something and restart, they are there.</p><h2 id="app-templates" tabindex="-1">App Templates <span class="i-material-symbols-touch-app"></span> <a class="header-anchor" href="#app-templates" aria-label="Permalink to "App Templates :material-symbols-touch-app:""></a></h2><p>In Portainer, <a href="https://docs.portainer.io/user/docker/templates" target="_blank" rel="noreferrer">App Templates</a> enable you to easily deploy services with a predetermined configuration, while allowing you to customize options through the web UI. While Portainer ships with some default templates (see <a href="https://github.com/portainer/templates" target="_blank" rel="noreferrer">portainer/templates</a>), it's often helpful to have 1-click access to many more apps + stacks, without having to constantly switch template sources.</p><p>Under Settings → App Templates in your Portainer GUI, paste this URL:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json</span></span></code></pre></div>',14)]))}const g=a(o,[["render",n]]);export{u as __pageData,g as default};
|
||||
|
|
@ -1 +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 "SALA/D Setup""></a></h1><p>Instructions to set up the SALA/D Part of the stack.</p><h2 id="overview-of-the-sala-d-stack" tabindex="-1">Overview of the SALA/D Stack: <a class="header-anchor" href="#overview-of-the-sala-d-stack" aria-label="Permalink to "Overview of the SALA/D Stack:""></a></h2><p>The SALA/D stack, or SWAG, Authelia, LLDAP, Authy/Duo stack is a simple way to get a webserver/reverse proxy, an identity and access control management system, as well as 2FA; all working together to host whatever you'd like. Here is what does what:</p><ul><li><p>Swag <span class="i-simple-icons-linuxserver"></span></p><ul><li>Handles the webserver and reverse proxy.</li><li>All configuration is handled via <em>.conf</em> files and text</li><li>This guide also demonstrates how to set up the Docker Mods Auto Reload, GeoIPBlock, and ...</li></ul></li><li><p>Authelia <span class="i-simple-icons-authelia"></span></p><ul><li>Handles weblogin and the front end of 2FA.</li><li>This has one configuration file, and hooks into LLDAP.</li></ul></li><li><p>LLDAP <span class="i-material-symbols-lock"></span></p><ul><li>Handles the "identity" part of the Authentication solution.</li><li>Requires that a domain is setup, and has a bit of a learning curve.</li><li>This has a bit of configuration involved whenever you setup a new application with LDAP integrations, however, <a href="https://github.com/lldap/lldap" target="_blank" rel="noreferrer">LLDAP's GitHub page</a> usually has sample configurations on how to setup LDAP auth for an application.</li></ul></li><li><p>Authy/Duo</p><ul><li>Pick one between Authy or Duo <ul><li>Authy <span class="i-logos-authy"></span><ul><li>This allows for 2FA via an 8 digit code. The configuration is handled via Authelia, with the end user setting up 2FA through the Authy App or through Bit/Vaultwarden. The user can self register their 2FA in this way, through email.</li></ul></li><li>Duo <ul><li>This allows for 2FA via a push notification on your phone. The configuration is handled via Authelia.</li></ul></li></ul></li></ul></li></ul>',5)]))}const A=a(s,[["render",o]]);export{c as __pageData,A as default};
|
||||
|
|
@ -1 +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 "SALA/D Setup""></a></h1><p>Instructions to set up the SALA/D Part of the stack.</p><h2 id="overview-of-the-sala-d-stack" tabindex="-1">Overview of the SALA/D Stack: <a class="header-anchor" href="#overview-of-the-sala-d-stack" aria-label="Permalink to "Overview of the SALA/D Stack:""></a></h2><p>The SALA/D stack, or SWAG, Authelia, LLDAP, Authy/Duo stack is a simple way to get a webserver/reverse proxy, an identity and access control management system, as well as 2FA; all working together to host whatever you'd like. Here is what does what:</p><ul><li><p>Swag <span class="i-simple-icons-linuxserver"></span></p><ul><li>Handles the webserver and reverse proxy.</li><li>All configuration is handled via <em>.conf</em> files and text</li><li>This guide also demonstrates how to set up the Docker Mods Auto Reload, GeoIPBlock, and ...</li></ul></li><li><p>Authelia <span class="i-simple-icons-authelia"></span></p><ul><li>Handles weblogin and the front end of 2FA.</li><li>This has one configuration file, and hooks into LLDAP.</li></ul></li><li><p>LLDAP <span class="i-material-symbols-lock"></span></p><ul><li>Handles the "identity" part of the Authentication solution.</li><li>Requires that a domain is setup, and has a bit of a learning curve.</li><li>This has a bit of configuration involved whenever you setup a new application with LDAP integrations, however, <a href="https://github.com/lldap/lldap" target="_blank" rel="noreferrer">LLDAP's GitHub page</a> usually has sample configurations on how to setup LDAP auth for an application.</li></ul></li><li><p>Authy/Duo</p><ul><li>Pick one between Authy or Duo <ul><li>Authy <span class="i-logos-authy"></span><ul><li>This allows for 2FA via an 8 digit code. The configuration is handled via Authelia, with the end user setting up 2FA through the Authy App or through Bit/Vaultwarden. The user can self register their 2FA in this way, through email.</li></ul></li><li>Duo <ul><li>This allows for 2FA via a push notification on your phone. The configuration is handled via Authelia.</li></ul></li></ul></li></ul></li></ul>',5)]))}const A=a(s,[["render",o]]);export{c as __pageData,A as default};
|
||||
|
|
@ -1 +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 "Maintenance of the DP-SALA/D Stack""></a></h1><p>Suggested maintenance for the DP-SALA/D Stack</p><h2 id="required-maintenance-for-the-dp-sala-d-stack" tabindex="-1">Required Maintenance for the DP-SALA/D Stack <a class="header-anchor" href="#required-maintenance-for-the-dp-sala-d-stack" aria-label="Permalink to "Required Maintenance for the DP-SALA/D Stack""></a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a "<code>sudo apt-get update && sudo apt-get update</code>" to update the base applications for Debian, this applies security and feature upgrades for your OS, which is important.</p></li><li><p>At least bi-weekly, save all the configuration files and important data to a secure, private, personal location. You could even use the Google Drive <span class="i-mdi-google-drive"></span> space of the Gmail address that you setup, and save the previous backups. You could probably keep the last 5 backups just to be safe, but minimum of 3.</p></li></ul><p><strong>Portainer:</strong> <span class="i-simple-icons-portainer"></span></p><ul><li>Update whenever there is an update. If you login and it tells you there is an update available, update right then and there. Portainer is just a docker container that lets you manage other docker containers, but make sure to keep this as up to date as possible.</li><li>You generally don't have to keep a backup of the Portainer data volume, unless you've made some crazy modification to it's configuration that was different from the standard install.</li></ul><p><strong>SWAG:</strong> <span class="i-simple-icons-linuxserver"></span></p><ul><li>At least monthly, restart the container. This allows it to pull new configurations from the GitHub <span class="i-mdi-github"></span> page, as well as renew your SSL certificates for your webserver.</li></ul><p><strong>Authelia:</strong> <span class="i-simple-icons-authelia"></span></p><ul><li>At least monthly, restart the container. This allows it to pull updates for the container.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Make sure that your configuration for this is backed up, since multiple sensitive things are within this file, and recovering them will be impossible.</p></div><p><strong>LLDAP:</strong> <span class="i-material-symbols-lock"></span></p><ul><li>This is probably the lowest maintenance thing out of the stack. Just make sure that it is backed up completely.</li></ul><p><strong>Authy/Duo:</strong> <span class="i-logos-authy"></span></p><ul><li>Set it and forget it. This is typically included in Authelia <span class="i-simple-icons-authelia"></span>, so another reason to make sure that config file is completely backed up properly.</li></ul>',16)]))}const m=a(s,[["render",o]]);export{h as __pageData,m as default};
|
||||
|
|
@ -1 +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 "Maintenance of the DP-SALA/D Stack""></a></h1><p>Suggested maintenance for the DP-SALA/D Stack</p><h2 id="required-maintenance-for-the-dp-sala-d-stack" tabindex="-1">Required Maintenance for the DP-SALA/D Stack <a class="header-anchor" href="#required-maintenance-for-the-dp-sala-d-stack" aria-label="Permalink to "Required Maintenance for the DP-SALA/D Stack""></a></h2><p><strong>Debian 12:</strong> <span class="i-logos-debian"></span></p><ul><li><p>At least monthly, run a "<code>sudo apt-get update && sudo apt-get update</code>" to update the base applications for Debian, this applies security and feature upgrades for your OS, which is important.</p></li><li><p>At least bi-weekly, save all the configuration files and important data to a secure, private, personal location. You could even use the Google Drive <span class="i-mdi-google-drive"></span> space of the Gmail address that you setup, and save the previous backups. You could probably keep the last 5 backups just to be safe, but minimum of 3.</p></li></ul><p><strong>Portainer:</strong> <span class="i-simple-icons-portainer"></span></p><ul><li>Update whenever there is an update. If you login and it tells you there is an update available, update right then and there. Portainer is just a docker container that lets you manage other docker containers, but make sure to keep this as up to date as possible.</li><li>You generally don't have to keep a backup of the Portainer data volume, unless you've made some crazy modification to it's configuration that was different from the standard install.</li></ul><p><strong>SWAG:</strong> <span class="i-simple-icons-linuxserver"></span></p><ul><li>At least monthly, restart the container. This allows it to pull new configurations from the GitHub <span class="i-mdi-github"></span> page, as well as renew your SSL certificates for your webserver.</li></ul><p><strong>Authelia:</strong> <span class="i-simple-icons-authelia"></span></p><ul><li>At least monthly, restart the container. This allows it to pull updates for the container.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Make sure that your configuration for this is backed up, since multiple sensitive things are within this file, and recovering them will be impossible.</p></div><p><strong>LLDAP:</strong> <span class="i-material-symbols-lock"></span></p><ul><li>This is probably the lowest maintenance thing out of the stack. Just make sure that it is backed up completely.</li></ul><p><strong>Authy/Duo:</strong> <span class="i-logos-authy"></span></p><ul><li>Set it and forget it. This is typically included in Authelia <span class="i-simple-icons-authelia"></span>, so another reason to make sure that config file is completely backed up properly.</li></ul>',16)]))}const m=a(s,[["render",o]]);export{h as __pageData,m as default};
|
||||
1
.vitepress/dist/assets/style.CpK5ZA6m.css
vendored
BIN
.vitepress/dist/cat-typing.gif
vendored
|
Before Width: | Height: | Size: 1.4 MiB |
95
.vitepress/dist/cf-tunnel.html
vendored
26
.vitepress/dist/changelog.html
vendored
1465
.vitepress/dist/configuration.yml.rtf
vendored
1350
.vitepress/dist/configuration/auth-config.html
vendored
156
.vitepress/dist/configuration/lldap-config.html
vendored
26
.vitepress/dist/configuration/swag-config.html
vendored
95
.vitepress/dist/docker-compose-dpsalad.rtf
vendored
|
|
@ -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
|
||||
120
.vitepress/dist/docker-compose.html
vendored
BIN
.vitepress/dist/dp-salad-stack.pdf
vendored
74
.vitepress/dist/faq.html
vendored
1
.vitepress/dist/hashmap.json
vendored
|
|
@ -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"}
|
||||
26
.vitepress/dist/home.html
vendored
26
.vitepress/dist/index.html
vendored
26
.vitepress/dist/install/dp-config.html
vendored
37
.vitepress/dist/install/dp-setup.html
vendored
26
.vitepress/dist/install/requirements.html
vendored
26
.vitepress/dist/install/salad-setup.html
vendored
148
.vitepress/dist/lldap_config.toml.rtf
vendored
|
|
@ -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"
|
||||
26
.vitepress/dist/maintenance/maintain-guide.html
vendored
2
.vitepress/dist/robots.txt
vendored
|
|
@ -1,2 +0,0 @@
|
|||
User-agent: *
|
||||
Disallow:/
|
||||
2
.vitepress/dist/vp-icons.css
vendored
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
/* cannot detect icon mode: not set in options and icon set is missing info, rendering as mask */
|
||||
26
.vitepress/dist/x11-guide.html
vendored
|
|
@ -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;
|
||||
|
|
@ -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
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"recommendations": ["astro-build.astro-vscode"],
|
||||
"unwantedRecommendations": []
|
||||
}
|
||||
11
.vscode/launch.json
vendored
Normal 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
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"conventionalCommits.scopes": [
|
||||
"deps"
|
||||
]
|
||||
}
|
||||
24
LICENSE
Normal 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
|
|
@ -0,0 +1 @@
|
|||
# emu-docs
|
||||
32
astro.config.mjs
Normal 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
|
|
@ -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;
|
||||
});
|
||||
};
|
||||
}
|
||||
35
index.md
|
|
@ -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
59
package.json
|
|
@ -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
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
151
src/components/Tooltip.vue
Normal 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
|
|
@ -0,0 +1,6 @@
|
|||
import { defineCollection } from 'astro:content';
|
||||
import { docsSchema } from '@astrojs/starlight/schema';
|
||||
|
||||
export const collections = {
|
||||
docs: defineCollection({ schema: docsSchema() }),
|
||||
};
|
||||