authelia/docs/deployment/deployment-ha.md
Amir Zarrinkafsh f8bd506326
[FEATURE] Embed static assets in Go binary (#916)
* [FEATURE] Embed static assets in Go binary

* Refactor/consolidate code and specify public_html via configuration

* Update docs and config template for assets

* Update AUR package pre-requisites and systemd unit

* Include static assets as Buildkite and GitHub artifacts

* Remove references to PUBLIC_DIR

* Only serve assets via embedded filesystem and remove configuration references

* Update authelia-scripts helper to build the embedded filesystem

* Mock the embedded filesystem for unit tests
Add to gitignore to ensure this isn't overwritten.

* Move go:generate to satisfy linter
2020-04-29 00:07:20 +10:00

2.2 KiB

layout title parent nav_order
default Deployment - Highly-Available Deployment 2

Highly-Available Deployment

Authelia can be deployed on bare metal or on Kubernetes with two different kind of artifacts: the distributable version (binary and public_html) or a Docker image.

NOTE: If not done already, we highly recommend you first follow the Getting Started documentation.

On Bare Metal

Authelia has been designed to be a proxy companion handling the authentication and authorization requests for your entire infrastructure.

As Authelia will be key to your architecture, it requires several components to make it highly-available. Deploying it in production means having an LDAP server for storing the information about the users, a Redis cache to store the user sessions in a distributed manner, a SQL server like MariaDB to persist user configurations and one or more nginx reverse proxies configured to be used with Authelia. With such a setup Authelia can easily be scaled to multiple instances to evenly handle the traffic.

Here are the available steps to deploy Authelia given the configuration file is /path/to/your/configuration.yml. Note that you can create your own configuration file from config.template.yml located at the root of the repo.

NOTE: Prefer using environment variables to set secrets in production otherwise pay attention to the permissions of the configuration file. See secrets for more information.

Deploy with the distributable version

# Build it if not done already
$ authelia-scripts build
$ authelia --config /path/to/your/configuration.yml

Deploy With Docker

$ docker run -v /path/to/your/configuration.yml:/etc/authelia/configuration.yml -e TZ=Europe/Paris authelia/authelia

FAQ

Why is this not automated?

Ansible would be a very good candidate to automate the installation of such an infrastructure on bare metal. We would be more than happy to review any PR on that matter.