content:serverbasics:docker-authentik
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| content:serverbasics:docker-authentik [2025/03/28 21:27] – [Dockerfile] obel1x | content:serverbasics:docker-authentik [2025/06/05 23:25] (aktuell) – [Dockerfile] obel1x | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Docker: Authentik ====== | ====== Docker: Authentik ====== | ||
| - | Authentik is a middleware expanding the basic authentication- features of FreeIPA by many additional, modern ways of authentication which is used by modern Software. It will make SSO possible (Single-Sign-On: | + | Authentik is a middleware expanding the basic authentication- features of FreeIPA by many additional, modern ways of authentication which is used by modern Software. It will make SSO possible (Single-Sign-On: |
| - | + | ||
| - | TODO | + | |
| ===== Dockerfile ===== | ===== Dockerfile ===== | ||
| Zeile 15: | Zeile 13: | ||
| #Authentik: https:// | #Authentik: https:// | ||
| AUTHENTIK_TAG=latest | AUTHENTIK_TAG=latest | ||
| + | #use maybe: openssl rand -base64 60 | tr -d ' | ||
| AUTHENTIK_SECRET_KEY=SEEDOCS | AUTHENTIK_SECRET_KEY=SEEDOCS | ||
| AUTHENTIK_ERROR_REPORTING__ENABLED=true | AUTHENTIK_ERROR_REPORTING__ENABLED=true | ||
| # | # | ||
| # | # | ||
| - | AUTHENTIK_POSTGRESQL__HOST=nextcloud-aio-database | + | AUTHENTIK_POSTGRESQL__HOST=servername-authentik_pgsql-1 |
| AUTHENTIK_POSTGRESQL__USER=authentik | AUTHENTIK_POSTGRESQL__USER=authentik | ||
| AUTHENTIK_POSTGRESQL__NAME=authentik | AUTHENTIK_POSTGRESQL__NAME=authentik | ||
| Zeile 29: | Zeile 28: | ||
| # | # | ||
| ## SMTP Host Emails are sent to | ## SMTP Host Emails are sent to | ||
| - | # | + | # |
| # | # | ||
| ## Optionally authenticate (don't add quotation marks to your password) | ## Optionally authenticate (don't add quotation marks to your password) | ||
| Zeile 45: | Zeile 44: | ||
| The File '' | The File '' | ||
| - | |||
| < | < | ||
| + | |||
| # Source: https:// | # Source: https:// | ||
| # wget -O docker-compose.yml https:// | # wget -O docker-compose.yml https:// | ||
| Zeile 62: | Zeile 61: | ||
| volumes: | volumes: | ||
| - authentik_pgsql_data:/ | - authentik_pgsql_data:/ | ||
| - | | + | - authentik_backup:/ |
| - | POSTGRES_PASSWORD: | + | #Defined in .env |
| - | POSTGRES_USER: | + | # |
| - | POSTGRES_DB: | + | # |
| + | # | ||
| + | # | ||
| env_file: | env_file: | ||
| - .env | - .env | ||
| Zeile 106: | Zeile 107: | ||
| # - " | # - " | ||
| # - " | # - " | ||
| + | | ||
| + | - nextcloud-aio | ||
| + | - default | ||
| # Authentik Worker | # Authentik Worker | ||
| Zeile 136: | Zeile 140: | ||
| env_file: | env_file: | ||
| - .env | - .env | ||
| + | | ||
| + | - nextcloud-aio | ||
| + | - default | ||
| volumes: | volumes: | ||
| authentik_pgsql_data: | authentik_pgsql_data: | ||
| - | driver: local | + | authentik_backup: |
| - | # redis: | + | |
| - | # driver: local | + | |
| authentik_media: | authentik_media: | ||
| - | driver: local | ||
| authentik_custom_templates: | authentik_custom_templates: | ||
| - | driver: local | ||
| authentik_certs: | authentik_certs: | ||
| - | | + | # redis: |
| + | |||
| + | networks: | ||
| + | | ||
| + | | ||
| + | # Still needs to be defined while without it won't enable ipv6 | ||
| + | default: | ||
| + | | ||
| + | enable_ipv6: | ||
| </ | </ | ||
| + | |||
| + | Carefully look at each line to fit your needs. | ||
| + | |||
| + | |||
| + | ===== Caddy ===== | ||
| + | |||
| + | in docker Caddy- Service enhance the lines: | ||
| + | < | ||
| + | |||
| + | # Authentik | ||
| + | https:// | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== First start ===== | ||
| + | |||
| + | After doing '' | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | and set the Password for the admin user '' | ||
| + | ===== Backup PostgresSQL Database ===== | ||
| + | |||
| + | This is really VERY Important! The reason is, that every PostgresDB- Version has it own Database- File- Format and if you update Postgres from on Major Version to the next, you WILL NOT BE ABLE to start your DB with the old Volume- Data! | ||
| + | |||
| + | You NEED to have the DB-Backed up and restored to the next Version! | ||
| + | |||
| + | Create a File in your Docker- Dir named e.g. '' | ||
| + | < | ||
| + | |||
| + | #!/bin/bash | ||
| + | # Make Postgres-Backup of Authentik | ||
| + | echo " | ||
| + | / | ||
| + | echo "Done Backup of Authentik-DB." | ||
| + | |||
| + | </ | ||
| + | |||
| + | Now add this script to '' | ||
| + | |||
| + | Don't forget to extend your '' | ||
| + | |||
| + | If you Update the Major- Version, make sure to create a new Volume for your pgsql- data. | ||
| + | |||
| + | ===== Configuring ===== | ||
| + | |||
| + | Now that Authentik is working, we are glueing all services together. | ||
| + | |||
| + | ==== Sync of FreeIPA/ | ||
| + | |||
| + | Don't use Kerberos-Sync, | ||
| + | |||
| + | To Sync FreeIPA with Authentik, follow this Guide: [[https:// | ||
| + | |||
| + | When the Sync has been configured, all FreeIPA- Users should show up in Authentik. | ||
| + | |||
| + | After SVC- user is created, use the following commands to modify password reset as written in the doc: | ||
| + | < | ||
| + | |||
| + | ldapmodify -x -D " | ||
| + | dn: cn=ipa_pwd_extop, | ||
| + | changetype: modify | ||
| + | add: passSyncManagersDNs | ||
| + | passSyncManagersDNs: | ||
| + | |||
| + | </ | ||
| + | |||
| + | At the next line, hit CTRL+D and the modification should be set, check with: | ||
| + | |||
| + | < | ||
| + | ldapsearch -xv -Z -W -H ldap:// | ||
| + | |||
| + | </ | ||
| + | |||
| + | which should show the entry for '' | ||
| + | === Secure LDAP- Users with TOTP === | ||
| + | |||
| + | Now any User can login with its FreeIPA- Password, also if SPNEGO/ kerberos as beneath is not setup yet. | ||
| + | |||
| + | This is quite insecure, so you shoul add a second factor for that type of Login (for SPNEGO the second factor is your integrated Machine, which has the key stored already). | ||
| + | |||
| + | To do so, in the Autentik Admin- Panel go to Stages and edit the Stage " | ||
| + | Change "Not configured action" | ||
| + | At " | ||
| + | |||
| + | The Next time you are logging in with User and Password in Authentik, it will ask to setup a TOTP- Device. You can for example use [[https:// | ||
| + | |||
| + | Hint: There is also an default Flow for this to import in Authentik here [[https:// | ||
| + | |||
| + | == Current Bug == | ||
| + | |||
| + | At the time of writing this, there was a bug here: https:// | ||
| + | |||
| + | So if you have to enter the OTP twice, than go to Flows, click on '' | ||
| + | |||
| + | |||
| + | ==== Attaching SPNEGO ==== | ||
| + | |||
| + | With SPNEGO, you gain access to SSO in Authentik. | ||
| + | |||
| + | Here is the link to the Docs: [[https:// | ||
| + | |||
| + | You need to logon to FreeIPA as Admin and do the following: | ||
| + | |||
| + | * Go to Hosts, add Host '' | ||
| + | * Go to Services, Add an new HTTP- Service for that Host, called HTTP/ | ||
| + | * Add the Ipa- User admin to the " | ||
| + | |||
| + | After that, you need to the Docker- Console into the running FreeIPA-Container and use the commands there: | ||
| + | < | ||
| + | |||
| + | #~> docker exec -it servername-ipa-1 bash | ||
| + | # Logon as Admin | ||
| + | kinit admin | ||
| + | # Create and read the Keytab for that service | ||
| + | ipa-getkeytab -s ipa.domain.tld -p HTTP/ | ||
| + | cat / | ||
| + | rm / | ||
| + | |||
| + | </ | ||
| + | |||
| + | This is the Keytab (a better " | ||
| + | |||
| + | Use the Servicename '' | ||
| + | |||
| + | Important: Use "User matching mode" = "Link to User with identical Username. …“ - otherwise Kerberos may fail! | ||
| + | |||
| + | Than activate Kerberos in Flows and Stages > Stages > default-authentication-identification > Source settings | ||
| + | |||
| + | Make sure, that your client is able to login with FreeIPA using SSSD/ | ||
content/serverbasics/docker-authentik.1743193643.txt.gz · Zuletzt geändert: von obel1x
