Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 75 additions & 14 deletions website/docs/developer-docs/setup/full-dev-environment.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
---
title: Full development environment
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';

## Requirements

- Python 3.12
- Poetry, which is used to manage dependencies
- Go 1.23 or newer
- Node.js 21 or newer
- PostgreSQL 14 or newer
- Redis (any recent version will do)
- [Python](https://www.python.org/) 3.12
- [Poetry](https://python-poetry.org/), which is used to manage dependencies
- Poetry 2.0 or higher also requires the [poetry-plugin-shell](https://github.com/python-poetry/poetry-plugin-shell) extension.
- [Go](https://go.dev/) 1.23 or newer
- [Node.js](https://nodejs.org/en) 21 or newer
- [PostgreSQL](https://www.postgresql.org/) 14 or newer
- [Redis](https://redis.io/) (any recent version will do)
- [Docker](https://www.docker.com/) (Community Edition will do)

## Services Setup

Expand All @@ -23,7 +28,51 @@ If you use locally installed databases, the PostgreSQL credentials given to auth
## Backend Setup

:::info
Depending on your platform, some native dependencies might be required. On macOS, run `brew install libxmlsec1 libpq krb5`, and for the CLI tools `brew install postgresql redis node@20`.
Depending on your platform, some native dependencies might be required.

<Tabs
defaultValue={ (ExecutionEnvironment.canUseDOM) ? (() => {
const ua = window.navigator.userAgent.toLowerCase();
return ["linux", "windows", "mac"].find((p) => ua.includes(p)) || "mac";
})() : "mac" }

values={[
{label: "MacOS", value: "mac"},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{label: "MacOS", value: "mac"},
{label: "macOS", value: "mac"},

{label: "Linux", value: "linux"},
{label: "Windows", value: "windows"},
]}>

<TabItem value="mac">
To install the native dependencies on MacOS, run:
Comment thread
kensternberg-authentik marked this conversation as resolved.
Outdated

```sh
$ pip install poetry poetry-plugin-shell
$ brew install libxmlsec1 libpq krb5 # Required development libraries,
$ brew install postgresql redis node@22 golangci-lint # Required CLI tools
```

</TabItem>

<TabItem value="linux">
To install native dependencies on Debian or Ubuntu, run:

``` sh
$ pip install poetry poetry-plugin-shell
$ sudo apt-get install libgss-dev krb5-config libkrb5-dev postgresql-server-dev-all
$ sudo apt-get install postresql redis
```

Adjust your needs as required for other distributions such as Red Hat, SUSE, or Arch.

Install golangci-lint locally [from the site
instructions](https://golangci-lint.run/welcome/install/#other-ci).

</TabItem>

<TabItem value="windows">[We require community input on running the full dev environment under windows]</TabItem>
Comment thread
kensternberg-authentik marked this conversation as resolved.
Outdated

</Tabs>

:::

1. Create an isolated Python environment. To create the environment and install dependencies, run the following commands in the same directory as your local authentik git repository:
Expand All @@ -43,17 +92,19 @@ Generally speaking, authentik is a Django application, ran by gunicorn, proxied

Most functions and classes have type-hints and docstrings, so it is recommended to install a Python Type-checking Extension in your IDE to navigate around the code.

Before committing code, run the following commands in the same directory as your local authentik git repository:

```shell
make lint # Ensures your code is well-formatted
make gen # Generates an updated OpenAPI Docs for any changes you make
```

## Frontend Setup

By default, no compiled bundle of the frontend is included so this step is required even if you're not developing for the UI.

The UI requires the authentik API files for Typescript be built and installed:

```
$ make migrate # On a fresh install, ensures the API schema file is available
$ make gen # Generates the API based on the schema file
```

If you make changes to the authentik API, you must re-run `make gen` so that the corresponding changes are made to API library used by the UI.
Comment thread
kensternberg-authentik marked this conversation as resolved.
Outdated

To build the UI once, run the following command in the same directory as your local authentik git repository:

```shell
Expand Down Expand Up @@ -87,3 +138,13 @@ To define a password for the default admin (called **akadmin**), you can manuall

In case of issues in this process, feel free to use `make dev-reset` which drops and restores the Authentik PostgreSQL instance to a "fresh install" state.
:::

## Submitting Pull Requests

Before submitting a pull request, run the following commands in the same directory as your local authentik git repository:

```shell
make lint # Ensures your code is well-formatted
make gen # Generates an updated OpenAPI Docs for any changes you make
Comment thread
kensternberg-authentik marked this conversation as resolved.
Outdated
```