개요
홈서버를 구성하다보면, 남는 가용자원을 보며 이것저것 좀 더 구성할 것을 찾아보기 마련입니다(제가 그랬음).
Komga는 간단하게 설치하고 편리하게 사용할 수 있는 만화책 전용 웹뷰어입니다.
설치가 어렵지 않으니, 바로 시작해 보겠습니다.
Komga 준비 과정
Dataset 구성하기
appdata저장용과 실제 만화책 데이터가 저장된 라이브러리용 dataset 두 개면 됩니다. apps계정으로 실행되기 때문에 각 dataset에 apps계정을 할당해 주시면 됩니다.
Komga 설치하기
Komga로 검색하면 아래처럼 TrueNAS공식 버전과 Truecharts버전 모두를 찾을 수 있습니다. 저는 공식 버전을 선택하여 설치하겠습니다.
설치 과정 중에 건드릴만한 건 Storage Configuration뿐입니다.
Komga Config Storage에 appdata용도로 구성한 dataset을, Additional Storage에 라이브러리용 dataset을 각각 Host Path로 넘겨 주면 됩니다.
Additional Storage 항목에서 Mount Path는 pods내부 경로를 지정하는 곳으로, 저는 단순하게 /mnt/comic으로 지정했습니다.
지정이 끝났다면, Install을 클릭해 설치를 진행할 수 있으며, Web Portal 버튼을 클릭해 접근할 수 있습니다.
Komga 기본 사용법
직관적으로 만들어진 앱이라 사용에 어려움은 없습니다.
우선, 맨 처음 접속하면 관리자 계정으로 사용할 이메일과 비밀번호를 설정하도록 요구합니다.
Add Library를 클릭하여 호스트로부터 마운트 한 /mnt/comic을 지정하여 라이브러리를 설정할 수 있습니다.
Plex나 Jellyfin, Emby등을 구축해 본 경험이 있다면, 보다 수월하게 구축할 수 있습니다.
뷰어모드에서는, 좌→우, 혹은 우→좌 페이지 넘김을 하거나, 웹툰처럼 상하로 이어붙여 스크롤 방식으로 보는 등의 설정을 할 수 있습니다.
기타 그 외, 화면 폭맞춤, 애니메이션 효과 등의 설정을 할 수 있습니다. 꿀뷰 등의 뷰어와 동일하거나 비슷 체험을 제공합니다.
Server Settings – Users탭을 통해 새로운 유저를 생성하여 권한을 부여할 수 있고,
스트리밍(웹뷰)과 파일 다운로드 권한을 분리하여 설정할 수 있습니다.
생성된 계정에 대한 관리는 Account Settings에서 수행할 수 있으며, 비밀번호를 변경하거나 권한별로 정렬해서 보는 작업을 할 수 있습니다.
소셜 로그인(Social Login) 활성화하기
소셜 로그인 기능을 사용하면, 새로운 이용자가 올 때마다 ID를 만들어 배포할 필요가 없습니다. 별도로 간단한 스크립트 등을 사용해 자동화를 할 순 있겠지만, 보안에 취약합니다.
관련해서, Komga는 Google, Github, Facebook을 이용해 간편하게 소셜 로그인을 활성화할 수 있는 기능을 제공합니다.
우선, 해당 기능을 사용하기 위해서는 기본적으로 리버스 프록시가 활성화되어 있어야 합니다. 직접 포트를 오픈하는 포트포워딩은 여기선 추천하지 않습니다.
예시글에서는 komgasample.fentanest.com 이라는 도메인을 사용하겠습니다.
Google OAuth2.0 구성하기
이 곳을 클릭하여 구글 클라우드에 접속합니다. 가입한 적 있다면, 그대로 진행하면 되고, 가입한 적 없다면, 가입 절차를 거친 후 진행해야 합니다.
절차를 따라가기만 하면 되므로, 스샷 위주로 간략하게 서술하겠습니다.
프로젝트 생성
가입을 완료하였다면 프로젝트를 생성해 줍니다. 생성이 완료되면 알람을 클릭하여 해당 프로젝트로 이동합니다.
OAuth 동의 화면 구성
좌측에서 OAuth 동의 화면을 클릭 → 외부 선택 → 앱 이름과 사용자 본인 이메일, 리버스 프록시로 구성한 komga의 주소를 기입합니다.
하단에 승인된 도메인엔 루트도메인을 입력해 줍니다.
이후 모두 빈칸으로 놔둔 채로 진행해 동의 화면 구성을 완료하면 됩니다.
동의 화면 구성이 완료되었다면 아래 화면에서 앱 개시를 클릭합니다.
OAuth 클라이언트 ID 발급
좌측의 사용자 인증 정보 클릭 → 상단의 사용자 인증 정보 만들기 → OAuth 클라이언트 ID 클릭
승인된 리디렉션 URI에 아래와 같이 입력합니다.
https://{komga 리버스 프록시 주소}/login/oauth2/code/google
이 과정까지 완료하면 아래 스샷처럼 클라이언트 ID와 비밀번호를 얻을 수 있습니다. 해당 내용을 복사하거나 JSON 다운로드를 통해 가져옵니다.
application.yml 작성하기
아래와 같이 파일을 작성해 저장합니다.
spring:
security:
oauth2:
client:
registration:
google:
client-id: {발급받은 클라이언트 ID}
client-secret: {발급받은 클라이언트 보안 비밀번호}
맨 처음 appdata용으로 구성한 dataset에 작성한 파일을 붙여넣습니다.
설정 적용하기
TrueNAS의 komga에서 Additional Environment Variables를 하나 지정해 줍니다.
- Name: KOMGA_OAUTH2_ACCOUNT_CREATION
- Value: true
이 옵션은 소셜 로그인을 시도하는 계정과 매칭되는 계정이 로컬에 없을 경우, 자동으로 계정을 생성하도록 하는 옵션입니다.
재실행하면, 아래와 같이 구글 아이콘이 활성화되어 있는 것을 확인할 수 있습니다.
클릭하면 구글 계정을 선택하는 화면이 나오고,
아래처럼 정상적으로 로그인할 수 있게 됩니다.
관리자 계정으로 확인해보면, 구글 소셜 로그인을 통해 계정이 잘 생성된 것을 확인할 수 있습니다.
Facebook, Github 역시 비슷한 방식으로 만들어 추가할 수 있습니다. 각각 id와 secret을 발급받아 모두 구성한다면 application.yml의 예시는 아래와 같습니다.
spring:
security:
oauth2:
client:
registration:
google:
client-id: {발급받은 클라이언트 ID}
client-secret: {발급받은 클라이언트 보안 비밀번호}
facebook:
client-id: {발급받은 클라이언트 ID}
client-secret: {발급받은 클라이언트 보안 비밀번호}
github:
client-id: {발급받은 클라이언트 ID}
client-secret: {발급받은 클라이언트 보안 비밀번호}
scope: user:email
이후, 소셜 로그인을 통한 자동 가입을 차단하고 싶다면, KOMGA_OAUTH2_ACCOUNT_CREATION값을 false로 바꾸거나 해당 environment를 지워버리면 됩니다.
마무리
근데 사실 자주 사용할 일이 없다는게 함정