# Authelia avanzado

1. [#comenzamos-con-authelia-basico.](#comenzamos-con-authelia-basico. "mention")
2. [#docker-que-usaremos.](#docker-que-usaremos. "mention")
3. [#configuracion-componentes-primarios.](#configuracion-componentes-primarios. "mention")
   1. [#configuracion-de-red.](#configuracion-de-red. "mention")de red.
   2. [#configuracion-authelia.](#configuracion-authelia. "mention")
   3. [#creacion-de-contrasenas.](#creacion-de-contrasenas. "mention")
      1. [#ejemplo-valido-para-todas-las-demas-contrasenas.](#ejemplo-valido-para-todas-las-demas-contrasenas. "mention")&#x20;
   4. [#mariadb.](#mariadb. "mention")
   5. [#redis.](#redis. "mention")
   6. [#nginx-proxy-manager-official.](#nginx-proxy-manager-official. "mention")
   7. [#authelia.](#authelia. "mention")

> Authelia es un servidor y portal de autenticación y autorización de código abierto que cumple la función de gestión de identidad y acceso (IAM) de la seguridad de la información al proporcionar autenticación multi factor e inicio de sesión único (SSO) para sus aplicaciones a través de un portal web.

{% hint style="success" %}
Dificultad tutorial: Media  Conocimientos a tener: Medios-Altos
{% endhint %}

Como seguir este tutorial.

<figure><img src="/files/haoXzt4EoQV6uB6ZJkvp" alt=""><figcaption></figcaption></figure>

Esto es lo que nos dice la web de Authelia. Lo que vamos a conseguir es brindar nuestras web con una capa adicional de seguridad utilizando tanto el factor único, como el doble factor, con Dúo / Mobile Push, también incluiremos la opción WebAuthn.

También aprenderemos a utilizar reglas para permitir a usuarios la entrada en recursos o no, desde luego la configuración ofrece bastantes alternativas.

### Comenzamos con Authelia básico.

{% hint style="info" %}
El tutorial solo se aplica a Nginx-Proxy-Manager-Official. Si desea utilizar otro servidor proxy puedes seguir la guia oficial. <https://www.authelia.com/integration/proxies/>
{% endhint %}

### Docker que usaremos.

<figure><img src="/files/SJ6bYeXZ7EnsMQLkiRl5" alt=""><figcaption></figcaption></figure>

### Configuración componentes.

Primeramente configuraremos una nueva red, donde añadiremos todos los componentes de la instalación, a continuación, los Docker principales y secundarios, configurando sus plantillas.

#### Configuración de red.

Para crear la nueva red, abriremos la terminar de Unraid e introduciremos el siguiente comando.

```
docker network create --gateway 172.21.0.1 --subnet 172.21.0.0/16 authelia
```

#### Configuración Authelia.

Primeramente crearemos las carpetas necesarias para la instalación, de esta manera avanzaremos con la instalación, añadiendo posteriormente en la plantilla variables y rutas necesarias.

Introduce el siguiente comando en el terminal de UnRaid.

```batch
mkdir /mnt/user/appdata/authelia && cd /mnt/user/appdata/authelia && mkdir config && cd config && mkdir secrets && cd secrets && echo '0' > secret && echo '0' > jwt && echo '0' > mysql && echo '0' > smtp && echo '0' > encryption && echo '0' > duo_api && echo 'DI77IIOJIV831245LLKJ' > redis && clear && chmod 660 ./* && ls -L && echo "si no existe error sal del termninal"
```

Con esta operación se han creado las carpetas y archivos necesarios para jwt secret, en los archivos creados introduciremos las contraseña de los diferentes componentes que utilizaremos, esto lo haremos siguiendo los pasos a continuación, describiremos una opción, como ejemplo y los demás archivos se hacen de la misma manera, únicamente  volviendo a ejecutar el comando para crear las contraseñas.

{% hint style="warning" %}
Estos archivos contendrán las contraseña utilizadas por Authelia, pero en las plantillas de Mariadb y Redis si tenemos que introducir las contraseñas como describiremos mas adelante.
{% endhint %}

tendremos los siguientes archivos en la carpeta <mark style="color:blue;">**/secrets**</mark>

* encryption
* mysql
* redis
* smtp
* jwt
* duo\_api  => esta dejala tal cual, mas adelante la añadiremos.
* secret

#### Creación de contraseñas.

Para la creación de las diferentes contraseña utilizaremos el siguiente comando, desde la terminal de Unraid, donde el numero 50 es la longitud, podemos poner la longitud que deseemos >20.

```markup
openssl rand -base64 50
```

#### Ejemplo valido para todas las demás contraseñas.

Primeramente abriremos el archivo encryption y borraremos su contenido, luego ejecutaremos el comando anterior y <mark style="color:orange;">**copiaremos el resultado tal cual, sin variar ni espacios ni nada**</mark>, en el interior del archivo encryption, guardamos y salimos. Este mismo paso se debe seguir hasta completar los diferentes archivos situados en <mark style="color:blue;">**/secrets,**</mark> ejecutando el comando para cada uno.

<figure><img src="/files/Nlvz3q3qTTAnVaTvWwlb" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Una vez completada la acción de las contraseñas y si quieres mejorar la seguridad, tanto la carpeta <mark style="color:blue;">**/secrets,**</mark> como los archivos contenidos, puedes ponerlos en solo lectura, a excepción de duo\_api, que tendremos que modificar mas adelante.
{% endhint %}

#### Mariadb.

En la foto se pueden ver las configuraciones necesarias, recuerda que debes seguir los datos de tu subred creada, si son distintos a los del tutorial.

<figure><img src="/files/of9FT1hIPySA6atYbjVC" alt=""><figcaption></figcaption></figure>

Ya tenemos en marcha Mariadb, comprueba que no existan errores y que admite conexiones.

#### Redis.

Redis lo utilizaremos para las sesiones y almacenaje de cookies.

<figure><img src="/files/E3uW6ZuHdvtZPKgBFmIR" alt=""><figcaption></figcaption></figure>

Es posible que al iniciarse de error por no tener permisos de escritura en <mark style="color:blue;">**/redis**</mark> , lo unico que debes hacer es darle esos permisos.

Ya tenemos en marcha Redis, comprueba que no existan errores y que admite conexiones.

#### Nginx-Proxy-Manager-Official.

Utilizaremos este proxy inverso, por dos razones, su facilidad de uso y buen funcionamiento.

<figure><img src="/files/W6hg19eGOrwjy2G5H3on" alt=""><figcaption></figcaption></figure>

La instalación de la plantilla es verdaderamente fácil, ahora queda añadir configuraciones avanzadas que realizaremos mas adelante. Aplica los cambios y comprueba que no existen errores en los Docker creados hasta el momento.

#### Authelia.

{% hint style="danger" %}
Si vas a realizar la instalación sobre un proxy en producción, realiza los Backup necesarios.
{% endhint %}

Vamos con lo interesante, la instalación de Authelia, todo lo demás ha sido la preparación para añadir a la plantilla de Authelia las diferentes carpetas y variables.

Lo primero que haremos en la plantilla será cambiar el nombre como figura en la foto, todo en minúsculas y activar la vista avanzada, en la parte superior derecha de la plantilla.

<div align="center"><figure><img src="/files/IjQNlg9COSZbAyrcgDa0" alt=""><figcaption></figcaption></figure></div>

Las variables que añadiremos a la plantilla serán las siguiente.

* AUTHELIA\_JWT\_SECRET\_FILE                                  =><mark style="color:blue;">**/config/secrets/jwt**</mark>
* AUTHELIA\_DUO\_API\_SECRET\_KEY*FILE                   =>* <mark style="color:blue;">**/config/secrets/**</mark>*<mark style="color:blue;">**duo\_**</mark>*<mark style="color:blue;">**api**</mark>
* AUTHELIA\_SESSION\_REDIS\_PASSWORD\_FILE        => <mark style="color:blue;">**/config/secrets/redis**</mark>
* AUTHELIA\_STORAGE\_MYSQL\_PASSWORD\_FILE     => <mark style="color:blue;">**/config/secrets/mysql**</mark>
* AUTHELIA\_NOTIFIER\_SMTP\_PASSWORD\_FILE        => <mark style="color:blue;">**/config/secrets/smtp**</mark>
* AUTHELIA\_STORAGE\_ENCRYPTION\_KEY\_FILE       => <mark style="color:blue;">**/config/secrets/encryption**</mark>
* AUTHELIA\_SESSION\_SECRET\_FILE                          => <mark style="color:blue;">**/config/secrets/secret**</mark>

Cada una de ellas tendrá una ruta a su correspondiente archivo de contraseña. Mostrare un ejemplo, y añadiré las rutas correspondiente a cada variable para evitar errores.

<figure><img src="/files/4frxa2sMR5Yy9c6Ld0NV" alt=""><figcaption></figcaption></figure>

A partir de este ejemplo puedes añadir las demás variables. También puedes añadir la siguiente variable. Aunque es opcional.

```
Key TZ    valor Europe/Madrid
```

Parámetros de la plantilla

<figure><img src="/files/pkLDsqi77fE47NWoAyOf" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
El contenedor Authelia aún no te iniciara.
{% endhint %}

Pasamos al siguiente paso configuración avanzada Authelia.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://topete.gitbook.io/contenido/authelia-avanzado/authelia-avanzado.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
