From e872371970753c2f84ee89cd2d86ee34a3cf1cfc Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Sun, 29 Aug 2021 14:43:13 +0200 Subject: [PATCH] website/docs: add embedded outpost docs Signed-off-by: Jens Langhammer --- website/docs/outposts/embedded/embedded.md | 43 +++++++++++++++++++++ website/docs/outposts/embedded/stock.png | Bin 0 -> 23441 bytes website/sidebars.js | 3 +- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 website/docs/outposts/embedded/embedded.md create mode 100644 website/docs/outposts/embedded/stock.png diff --git a/website/docs/outposts/embedded/embedded.md b/website/docs/outposts/embedded/embedded.md new file mode 100644 index 000000000..c3d22d370 --- /dev/null +++ b/website/docs/outposts/embedded/embedded.md @@ -0,0 +1,43 @@ +--- +title: Embedded Outpost +--- + +Starting with 2021.8.1, authentik comes with an embedded outpost. This has been added to simplify deployment for users using the Proxy provider. + +The embedded outpost is ran in the main `server` container, and is managed by authentik itself. The embedded outpost authenticates itself via the secret key. + +You can access the embedded outpost on the same ports as authentik itself, 9000 and 9443. + +The embedded outpost cannot be disabled, if it doesn't make sense to use in your deployment you can simply ignore it. + +### Configuration + +Since the outpost uses OAuth2, there is some configuration required. + +On a fresh authentik install, your Outpost list will look like this: + +![](./stock.png) + +Click the edit button on the right of the colum, and set the value of `authentik_host` to the URL you want to login with. +Make sure to set it to full URL, only configuring a hostname or FQDN will not work. + +### Routing + +Routing is handled like this: + +1. Paths starting with `/static`, `/media` and `/help` return packaged CSS/JS files, and user-uploaded media files. +2. Paths starting with `/akprox` are sent to the embedded outpost. +3. Any hosts configured in the providers assigned to the embedded outpost are sent to the outpost. +4. Everything remaining is sent to the authentik backend server. + +### Differences + +There are a few more differences between managed outposts and the embedded outpost, mainly due to the fact that authentik can't fully manage the containers. + +1. (Docker-only) No automatic traefik labels are added to the server container. + + When you deploy a managed outpost on docker, the container has several labels to automatically configure traefik. This is not done for the embedded outpost. + +2. (Kubernetes-only) An additional service is created. + + Since authentik does not know what the normal authentik Service is called, another one is created with a common set of labels that is always set. diff --git a/website/docs/outposts/embedded/stock.png b/website/docs/outposts/embedded/stock.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f194633653914cf479a46f04094883b71cd696 GIT binary patch literal 23441 zcmeEtWmHvN)Gi zj(h)oW88n&G0tGS_NqDOUTZz`nRA7zC`n^KBzuU2goG_CBdLajgc5^}X|UZ;6B?6Pl2OrlGD&_U`6nOhWt}5{jC*<9k;WnF?g0 zFCPj&(uqEM^5Fe@!^afg9?;V2Jb0@i`E3+Gx{8LR^cnZgJ!Euq91h6AiYyqcBbz`dc~|T(!WS=?)N6=k$&i@ zIDU7@3-{%`w`Y&colK>qq}Cqcn%TdHgd=bCKdK?TS$TQJeobh3-85_QSb2hr&4SuA zkvAjl!XGqrllaMX(*oian+jwa^kRr zY2LZ+n2OQO1Q6<&ccSIi+?TKJ3ELYcT9^CS#{^+f-s#5Bp}-$;elXD8-%Vz+bFD-X z>S4NkLZB)nls7ONPPuwAlfjfZMxTiCir6HFT4@u@{oadxWHOkin(XjL9Fb#MB;rTe zSXzDx<#(ktsu?Nu&z1Bp*V=9&!m|Wu4x%Lx;*y2xr zp1t90Mjw(m7*%}3rx!sbPCi<*p?Sy#jc6ASc6t}rS+wNpM8eBGOiubfypw*Bu93J= z+~9FJnRb-jx4LD}a}z|PdIEvawjZVhp$k#N9nu

>XEys#RjM#d!@QW8>wT)6p(1O+lsdZ# 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