시놀로지 도커에 Authentik 설치하기 - 나만의 인증 서버/페이지 구성하기
달소님이 올려주신 가이드는 우분투에서 설치 하는 방법 입니다만
큰 수정 없이 시놀로지 도커에서 설치가 가능합니다
우선 조금 다른 부분이 7.2 컨테이너 매니저를 이용해서 설치를 할 생각 인데요
7.2가 아니신 분들은 도커에 portainer를 설치해서 사용하시던지
기존 도커 컴포즈 설치 하시던 방법 대로 설치 하시면 될 거 같습니다
- 우선 파일 스테이션을 통해서 /volume1/docker/authentik 폴더를 만들어 줍니다
그 후에 https://goauthentik.io/docker-compose.yml
---
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:-2023.5.4}
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:-9443}:9443"
depends_on:
- postgresql
- redis
worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.5.4}
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.yml 에서 요구하는 폴더를 생성 해주세요
- /volume1/docker/authentik/var/run/docker.sock
- /volume1/docker/authentik/certs
- /volume1/docker/authentik/custom-templates
- /volume1/docker/authentik/media
- /volume1/docker/authentik/redis
- /volume1/docker/authentik/database
위의 트리대로 생성을 다 해주시고 나서 ssh로 접속을 해줍니다
.env를 만들기 위한 과정인데요 시놀 도커는 우분투가 아니라
암호화키 생성을 도와줄 패키지를 설치합니다.
sudo apt-get install -y pwgen
그런 다음 다음 명령을 실행하여 비밀번호와 비밀 키를 생성하고 파일에 씁니다 .env.
echo "PG_PASS=$(pwgen -s 40 1)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env
이 부분이 실행이 안됩니다
- ssh 접속 후 sudo -i 입력을 통해 관리자 권한으로 진행 합니다
- cd /volume1/docker/authentik 으로 만들어 둔 폴더로 이동
echo "PG_PASS=$(openssl rand -base64 40)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 50)" >> .env
- 위의 명령을 한 줄씩 실행 해주시면 됩니다
pwgen 대신에 opnessl을 이용해 만들어진 40자 50자의 암호를 가지고 .env 파일을 생성하는 작업이고요
pwgen과 어느정도 비슷한 보안 수준일 겁니다
컨테이너 매니저로 이동 하셔서
프로젝트 이름과 만들어 둔 경로 그리고 도커 컴포즈 파일을 업로드 하시던지 만들기로 붙여넣기 하시던지 해서
다음 다음 누르면 별 다른 문제 없이 바로 생성이 될 겁니다
그 후에는
달소님 가이드를 참고 하시면 됩니다
적용 하는데 문제가 생기는지 확인은 못해봤습니다만 큰 문제는 없지 않을까 생각해봅니다
설치중에 아래와 같은 오류가 발생하는데 왜그럴까요?ㅜㅜ
가이드 올려주셔서 감사합니다ㅎ
위의 트리대로 생성을 다 해주시고 나서 ssh로 접속을 해줍니다
.env를 만들기 위한 과정인데요 시놀 도커는 우분투가 아니라
암호화키 생성을 도와줄 패키지를 설치합니다.
sudo apt-get install -y pwgen
그런 다음 다음 명령을 실행하여 비밀번호와 비밀 키를 생성하고 파일에 씁니다 .env.
echo "PG_PASS=$(pwgen -s 40 1)" >> .envecho "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env이 부분이 실행이 안됩니다
- ssh 접속 후 sudo -i 입력을 통해 관리자 권한으로 진행 합니다
- cd /volume1/docker/authentik 으로 만들어 둔 폴더로 이동
echo "PG_PASS=$(openssl rand -base64 40)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 50)" >> .env
- 위의 명령을 한 줄씩 실행 해주시면 됩니다
pwgen 대신에 opnessl을 이용해 만들어진 40자 50자의 암호를 가지고 .env 파일을 생성하는 작업이고요
pwgen과 어느정도 비슷한 보안 수준일 겁니다
이 가이드 글이 그 부분을 수정한 가이드 입니다
apt-get이 안먹혀서 pwgen을 설치 못하고 그래서 openssl을 이용해서 ,env를 만드는 과정이 들어가 있습니다
ipkg에는 pwgen패키지가 없습니다
openssl로 진행해 주세요
항상 친절히 도움 주셔서 정말 감사합니다
좋은 하루 보내세요^^
cmt alert