How to install Authentik on Docker using Docker Compose

 

Install Docker and Portainer

 

Make sure docker compose is installed

sudo apt install docker-compose -y

 

sudo mkdir docker/authentik

cd docker/authentik

sudo chown -R $USER /home/larry/docker/authentik

 

--------------------------

 

sudo apt-get install -y pwgen

echo "PG_PASS=$(pwgen -s 40 1)" >> .env

echo "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env

echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env

 

----------------------------

 

sudo nano docker-compose.yml

Add---->

 

--------------------------------------------

 

version: "3.4"

 

services:

  postgresql:

    image: docker.io/library/postgres:12-alpine

    restart: unless-stopped

    healthcheck:

      test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]

      start_period: 20s

      interval: 30s

      retries: 5

      timeout: 5s

    volumes:

      - database:/var/lib/postgresql/data

    environment:

      POSTGRES_PASSWORD: ${PG_PASS:?database password required}

      POSTGRES_USER: ${PG_USER:-authentik}

      POSTGRES_DB: ${PG_DB:-authentik}

    env_file:

      - .env

  redis:

    image: docker.io/library/redis:alpine

    command: --save 60 1 --loglevel warning

    restart: unless-stopped

    healthcheck:

      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]

      start_period: 20s

      interval: 30s

      retries: 5

      timeout: 3s

    volumes:

      - redis:/data

  server:

    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.1}

    restart: unless-stopped

    command: server

    environment:

      AUTHENTIK_REDIS__HOST: redis

      AUTHENTIK_POSTGRESQL__HOST: postgresql

      AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}

      AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}

      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}

    volumes:

      - ./media:/media

      - ./custom-templates:/templates

    env_file:

      - .env

    ports:

      - "${COMPOSE_PORT_HTTP:-9000}:9000"

      - "${COMPOSE_PORT_HTTPS:-8443}:9443" # Modify if needed

    depends_on:

      - postgresql

      - redis

  worker:

    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.1}

    restart: unless-stopped

    command: worker

    environment:

      AUTHENTIK_REDIS__HOST: redis

      AUTHENTIK_POSTGRESQL__HOST: postgresql

      AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}

      AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}

      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}

    # `user: root` and the docker socket volume are optional.

    # See more for the docker socket integration here:

    # https://goauthentik.io/docs/outposts/integrations/docker

    # Removing `user: root` also prevents the worker from fixing the permissions

    # on the mounted folders, so when removing this make sure the folders have the correct UID/GID

    # (1000:1000 by default)

    user: root

    volumes:

      - /var/run/docker.sock:/var/run/docker.sock

      - ./media:/media

      - ./certs:/certs

      - ./custom-templates:/templates

    env_file:

      - .env

    depends_on:

      - postgresql

      - redis

 

volumes:

  database:

    driver: local

  redis:

    driver: local

 

-------------------------------------

 

docker-compose pull

docker-compose up -d

 

 

https://10.5.1.187:8443/if/flow/initial-setup/    # Modify as needed