Compare commits
1 Commits
5165-passw
...
root/remov
Author | SHA1 | Date | |
---|---|---|---|
c255ec7e71 |
29
Dockerfile
29
Dockerfile
@ -1,24 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
# Stage 1: Build website
|
# Stage 1: Build webui
|
||||||
FROM --platform=${BUILDPLATFORM} docker.io/node:21 as website-builder
|
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
|
||||||
|
|
||||||
WORKDIR /work/website
|
|
||||||
|
|
||||||
RUN --mount=type=bind,target=/work/website/package.json,src=./website/package.json \
|
|
||||||
--mount=type=bind,target=/work/website/package-lock.json,src=./website/package-lock.json \
|
|
||||||
--mount=type=cache,id=npm-website,sharing=shared,target=/root/.npm \
|
|
||||||
npm ci --include=dev
|
|
||||||
|
|
||||||
COPY ./website /work/website/
|
|
||||||
COPY ./blueprints /work/blueprints/
|
|
||||||
COPY ./SECURITY.md /work/
|
|
||||||
|
|
||||||
RUN npm run build-docs-only
|
|
||||||
|
|
||||||
# Stage 2: Build webui
|
|
||||||
FROM --platform=${BUILDPLATFORM} docker.io/node:21 as web-builder
|
FROM --platform=${BUILDPLATFORM} docker.io/node:21 as web-builder
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
@ -36,7 +18,7 @@ COPY ./gen-ts-api /work/web/node_modules/@goauthentik/api
|
|||||||
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Stage 3: Build go proxy
|
# Stage 2: Build go proxy
|
||||||
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.6-bookworm AS go-builder
|
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.6-bookworm AS go-builder
|
||||||
|
|
||||||
ARG TARGETOS
|
ARG TARGETOS
|
||||||
@ -68,7 +50,7 @@ RUN --mount=type=cache,sharing=locked,target=/go/pkg/mod \
|
|||||||
--mount=type=cache,id=go-build-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/root/.cache/go-build \
|
--mount=type=cache,id=go-build-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/root/.cache/go-build \
|
||||||
GOARM="${TARGETVARIANT#v}" go build -o /go/authentik ./cmd/server
|
GOARM="${TARGETVARIANT#v}" go build -o /go/authentik ./cmd/server
|
||||||
|
|
||||||
# Stage 4: MaxMind GeoIP
|
# Stage 3: MaxMind GeoIP
|
||||||
FROM --platform=${BUILDPLATFORM} ghcr.io/maxmind/geoipupdate:v6.1 as geoip
|
FROM --platform=${BUILDPLATFORM} ghcr.io/maxmind/geoipupdate:v6.1 as geoip
|
||||||
|
|
||||||
ENV GEOIPUPDATE_EDITION_IDS="GeoLite2-City GeoLite2-ASN"
|
ENV GEOIPUPDATE_EDITION_IDS="GeoLite2-City GeoLite2-ASN"
|
||||||
@ -82,7 +64,7 @@ RUN --mount=type=secret,id=GEOIPUPDATE_ACCOUNT_ID \
|
|||||||
mkdir -p /usr/share/GeoIP && \
|
mkdir -p /usr/share/GeoIP && \
|
||||||
/bin/sh -c "/usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0"
|
/bin/sh -c "/usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0"
|
||||||
|
|
||||||
# Stage 5: Python dependencies
|
# Stage 4: Python dependencies
|
||||||
FROM docker.io/python:3.12.1-slim-bookworm AS python-deps
|
FROM docker.io/python:3.12.1-slim-bookworm AS python-deps
|
||||||
|
|
||||||
WORKDIR /ak-root/poetry
|
WORKDIR /ak-root/poetry
|
||||||
@ -107,7 +89,7 @@ RUN --mount=type=bind,target=./pyproject.toml,src=./pyproject.toml \
|
|||||||
pip3 install poetry && \
|
pip3 install poetry && \
|
||||||
poetry install --only=main --no-ansi --no-interaction
|
poetry install --only=main --no-ansi --no-interaction
|
||||||
|
|
||||||
# Stage 6: Run
|
# Stage 5: Run
|
||||||
FROM docker.io/python:3.12.1-slim-bookworm AS final-image
|
FROM docker.io/python:3.12.1-slim-bookworm AS final-image
|
||||||
|
|
||||||
ARG GIT_BUILD_HASH
|
ARG GIT_BUILD_HASH
|
||||||
@ -149,7 +131,6 @@ COPY --from=go-builder /go/authentik /bin/authentik
|
|||||||
COPY --from=python-deps /ak-root/venv /ak-root/venv
|
COPY --from=python-deps /ak-root/venv /ak-root/venv
|
||||||
COPY --from=web-builder /work/web/dist/ /web/dist/
|
COPY --from=web-builder /work/web/dist/ /web/dist/
|
||||||
COPY --from=web-builder /work/web/authentik/ /web/authentik/
|
COPY --from=web-builder /work/web/authentik/ /web/authentik/
|
||||||
COPY --from=website-builder /work/website/help/ /website/help/
|
|
||||||
COPY --from=geoip /usr/share/GeoIP /geoip
|
COPY --from=geoip /usr/share/GeoIP /geoip
|
||||||
|
|
||||||
USER 1000
|
USER 1000
|
||||||
|
@ -22,7 +22,6 @@ func (ws *WebServer) configureStatic() {
|
|||||||
distFs := http.FileServer(http.Dir("./web/dist"))
|
distFs := http.FileServer(http.Dir("./web/dist"))
|
||||||
distHandler := http.StripPrefix("/static/dist/", distFs)
|
distHandler := http.StripPrefix("/static/dist/", distFs)
|
||||||
authentikHandler := http.StripPrefix("/static/authentik/", http.FileServer(http.Dir("./web/authentik")))
|
authentikHandler := http.StripPrefix("/static/authentik/", http.FileServer(http.Dir("./web/authentik")))
|
||||||
helpHandler := http.FileServer(http.Dir("./website/help/"))
|
|
||||||
indexLessRouter.PathPrefix("/static/dist/").Handler(distHandler)
|
indexLessRouter.PathPrefix("/static/dist/").Handler(distHandler)
|
||||||
indexLessRouter.PathPrefix("/static/authentik/").Handler(authentikHandler)
|
indexLessRouter.PathPrefix("/static/authentik/").Handler(authentikHandler)
|
||||||
|
|
||||||
@ -42,9 +41,6 @@ func (ws *WebServer) configureStatic() {
|
|||||||
|
|
||||||
indexLessRouter.PathPrefix("/media/").Handler(http.StripPrefix("/media", fs))
|
indexLessRouter.PathPrefix("/media/").Handler(http.StripPrefix("/media", fs))
|
||||||
|
|
||||||
statRouter.PathPrefix("/if/help/").Handler(http.StripPrefix("/if/help/", helpHandler))
|
|
||||||
statRouter.PathPrefix("/help").Handler(http.RedirectHandler("/if/help/", http.StatusMovedPermanently))
|
|
||||||
|
|
||||||
ws.lh.Path("/robots.txt").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
ws.lh.Path("/robots.txt").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
||||||
rw.Header()["Content-Type"] = []string{"text/plain"}
|
rw.Header()["Content-Type"] = []string{"text/plain"}
|
||||||
rw.WriteHeader(200)
|
rw.WriteHeader(200)
|
||||||
|
@ -1,129 +0,0 @@
|
|||||||
const config = require("./docusaurus.config");
|
|
||||||
import type { Config } from "@docusaurus/types";
|
|
||||||
|
|
||||||
module.exports = async function (): Promise<Config> {
|
|
||||||
const remarkGithub = (await import("remark-github")).default;
|
|
||||||
const defaultBuildUrl = (await import("remark-github")).defaultBuildUrl;
|
|
||||||
const mainConfig = await config();
|
|
||||||
return {
|
|
||||||
title: "authentik",
|
|
||||||
tagline: "Making authentication simple.",
|
|
||||||
url: "https://goauthentik.io",
|
|
||||||
baseUrl: "/if/help/",
|
|
||||||
onBrokenLinks: "throw",
|
|
||||||
favicon: "img/icon.png",
|
|
||||||
organizationName: "BeryJu",
|
|
||||||
projectName: "authentik",
|
|
||||||
themeConfig: {
|
|
||||||
navbar: {
|
|
||||||
logo: {
|
|
||||||
alt: "authentik logo",
|
|
||||||
src: "img/icon_left_brand.svg",
|
|
||||||
},
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
to: "docs/",
|
|
||||||
activeBasePath: "docs",
|
|
||||||
label: "Docs",
|
|
||||||
position: "left",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
to: "integrations/",
|
|
||||||
activeBasePath: "integrations",
|
|
||||||
label: "Integrations",
|
|
||||||
position: "left",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
to: "developer-docs/",
|
|
||||||
activeBasePath: "developer-docs",
|
|
||||||
label: "Developer Docs",
|
|
||||||
position: "left",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
href: "https://github.com/goauthentik/authentik",
|
|
||||||
label: "GitHub",
|
|
||||||
position: "right",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
href: "https://goauthentik.io/discord",
|
|
||||||
label: "Discord",
|
|
||||||
position: "right",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
footer: {
|
|
||||||
links: [],
|
|
||||||
copyright: mainConfig.themeConfig.footer.copyright,
|
|
||||||
},
|
|
||||||
colorMode: mainConfig.themeConfig.colorMode,
|
|
||||||
tableOfContents: mainConfig.themeConfig.tableOfContents,
|
|
||||||
prims: mainConfig.themeConfig.prism,
|
|
||||||
},
|
|
||||||
presets: [
|
|
||||||
[
|
|
||||||
"@docusaurus/preset-classic",
|
|
||||||
{
|
|
||||||
docs: {
|
|
||||||
id: "docs",
|
|
||||||
sidebarPath: require.resolve("./sidebars.js"),
|
|
||||||
editUrl:
|
|
||||||
"https://github.com/goauthentik/authentik/edit/main/website/",
|
|
||||||
remarkPlugins: [
|
|
||||||
[
|
|
||||||
remarkGithub,
|
|
||||||
{
|
|
||||||
repository: "goauthentik/authentik",
|
|
||||||
// Only replace issues and PR links
|
|
||||||
buildUrl: function (values) {
|
|
||||||
return values.type === "issue"
|
|
||||||
? defaultBuildUrl(values)
|
|
||||||
: false;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
pages: false,
|
|
||||||
theme: {
|
|
||||||
customCss: require.resolve("./src/css/custom.css"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
plugins: [
|
|
||||||
[
|
|
||||||
"@docusaurus/plugin-content-docs",
|
|
||||||
{
|
|
||||||
id: "docsIntegrations",
|
|
||||||
path: "integrations",
|
|
||||||
routeBasePath: "integrations",
|
|
||||||
sidebarPath: require.resolve("./sidebarsIntegrations.js"),
|
|
||||||
editUrl:
|
|
||||||
"https://github.com/goauthentik/authentik/edit/main/website/",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"@docusaurus/plugin-content-docs",
|
|
||||||
{
|
|
||||||
id: "docsDevelopers",
|
|
||||||
path: "developer-docs",
|
|
||||||
routeBasePath: "developer-docs",
|
|
||||||
sidebarPath: require.resolve("./sidebarsDev.js"),
|
|
||||||
editUrl:
|
|
||||||
"https://github.com/goauthentik/authentik/edit/main/website/",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"@docusaurus/plugin-client-redirects",
|
|
||||||
{
|
|
||||||
redirects: [
|
|
||||||
{
|
|
||||||
to: "/docs/",
|
|
||||||
from: ["/"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
};
|
|
||||||
};
|
|
Reference in New Issue
Block a user