개요

홈서버를 구성하다보면, 남는 가용자원을 보며 이것저것 좀 더 구성할 것을 찾아보기 마련입니다(제가 그랬음).

Komga는 간단하게 설치하고 편리하게 사용할 수 있는 만화책 전용 웹뷰어입니다.

설치가 어렵지 않으니, 바로 시작해 보겠습니다.

Komga 준비 과정

Dataset 구성하기

appdata저장용과 실제 만화책 데이터가 저장된 라이브러리용 dataset 두 개면 됩니다. apps계정으로 실행되기 때문에 각 dataset에 apps계정을 할당해 주시면 됩니다.

TrueNAS 스토리지 화면에서 Komga appdata용 dataset을 새로 생성하는 단계 라이브러리용 dataset의 권한 편집에서 소유자를 apps 계정으로 지정하는 설정

Komga 설치하기

Komga로 검색하면 아래처럼 TrueNAS공식 버전과 Truecharts버전 모두를 찾을 수 있습니다. 저는 공식 버전을 선택하여 설치하겠습니다.

TrueNAS 앱 카탈로그의 Komga 검색 결과에 공식 버전과 Truecharts 버전이 함께 나온 목록 TrueNAS 공식 Komga 앱 상세 페이지에서 설치를 시작하기 직전 단계

설치 과정 중에 건드릴만한 건 Storage Configuration뿐입니다.

Komga Config Storage에 appdata용도로 구성한 dataset을, Additional Storage에 라이브러리용 dataset을 각각 Host Path로 넘겨 주면 됩니다.

Additional Storage 항목에서 Mount Path는 pods내부 경로를 지정하는 곳으로, 저는 단순하게 /mnt/comic으로 지정했습니다.

Komga 설치 옵션의 Storage Configuration에서 Config Storage를 appdata dataset의 Host Path로 지정 Additional Storage에 라이브러리 dataset을 연결하고 Mount Path를 /mnt/comic으로 입력한 설정

지정이 끝났다면, Install을 클릭해 설치를 진행할 수 있으며, Web Portal 버튼을 클릭해 접근할 수 있습니다.

설치를 마친 TrueNAS 앱 목록에 Running 상태로 올라온 Komga와 Web Portal 버튼

Komga 기본 사용법

직관적으로 만들어진 앱이라 사용에 어려움은 없습니다.

우선, 맨 처음 접속하면 관리자 계정으로 사용할 이메일과 비밀번호를 설정하도록 요구합니다.

Komga 첫 접속 시 관리자 이메일과 비밀번호를 입력해 계정을 만드는 초기 설정

Add Library를 클릭하여 호스트로부터 마운트 한 /mnt/comic을 지정하여 라이브러리를 설정할 수 있습니다.

Plex나 Jellyfin, Emby등을 구축해 본 경험이 있다면, 보다 수월하게 구축할 수 있습니다.

라이브러리가 비어 있는 Komga 초기 대시보드에서 Add Library 버튼을 누르는 지점 Add Library 창에서 컨테이너에 마운트된 /mnt/comic 경로를 라이브러리 폴더로 선택

뷰어모드에서는, 좌→우, 혹은 우→좌 페이지 넘김을 하거나, 웹툰처럼 상하로 이어붙여 스크롤 방식으로 보는 등의 설정을 할 수 있습니다.

기타 그 외, 화면 폭맞춤, 애니메이션 효과 등의 설정을 할 수 있습니다. 꿀뷰 등의 뷰어와 동일하거나 비슷 체험을 제공합니다.

Komga 뷰어 설정에서 좌에서 우, 우에서 좌, 세로 스크롤 등 읽기 방향을 고르는 메뉴 뷰어 설정 패널에서 화면 폭맞춤과 애니메이션 효과 등 표시 옵션을 조정하는 항목 웹툰처럼 위아래로 이어붙여 스크롤하며 읽는 Komga 뷰어의 연속 페이지 표시

Server Settings – Users 탭을 통해 새로운 유저를 생성하여 권한을 부여할 수 있고,

스트리밍(웹뷰)과 파일 다운로드 권한을 분리하여 설정할 수 있습니다.

Server Settings의 Users 탭에 등록된 계정 목록과 사용자 추가 버튼이 놓인 관리 영역 새 사용자 추가 창에서 페이지 스트리밍과 파일 다운로드 권한을 따로 켜고 끄는 옵션

생성된 계정에 대한 관리는 Account Settings에서 수행할 수 있으며, 비밀번호를 변경하거나 권한별로 정렬해서 보는 작업을 할 수 있습니다.

Account Settings에서 비밀번호 변경과 최근 인증 활동 기록을 확인하는 계정 관리 항목

소셜 로그인(Social Login) 활성화하기

소셜 로그인 기능을 사용하면, 새로운 이용자가 올 때마다 ID를 만들어 배포할 필요가 없습니다. 별도로 간단한 스크립트 등을 사용해 자동화를 할 순 있겠지만, 보안에 취약합니다.

관련해서, Komga는 Google, Github, Facebook을 이용해 간편하게 소셜 로그인을 활성화할 수 있는 기능을 제공합니다.

우선, 해당 기능을 사용하기 위해서는 기본적으로 리버스 프록시가 활성화되어 있어야 합니다. 직접 포트를 오픈하는 포트포워딩은 여기선 추천하지 않습니다.

예시글에서는 komgasample.fentanest.com 이라는 도메인을 사용하겠습니다.

리버스 프록시 주소 komgasample.fentanest.com으로 접속한 Komga 로그인 창

Google OAuth2.0 구성하기

이 곳을 클릭하여 구글 클라우드에 접속합니다. 가입한 적 있다면, 그대로 진행하면 되고, 가입한 적 없다면, 가입 절차를 거친 후 진행해야 합니다.

절차를 따라가기만 하면 되므로, 스샷 위주로 간략하게 서술하겠습니다.

프로젝트 생성

가입을 완료하였다면 프로젝트를 생성해 줍니다. 생성이 완료되면 알람을 클릭하여 해당 프로젝트로 이동합니다.

구글 클라우드 콘솔의 프로젝트 선택 창에서 새 프로젝트 만들기 버튼을 찾는 단계 새 프로젝트 양식에 프로젝트 이름과 위치를 입력해 생성을 요청하는 과정 생성 완료 알림을 클릭해 방금 만든 프로젝트로 이동하는 구글 클라우드 알림창

OAuth 동의 화면 구성

좌측에서 OAuth 동의 화면을 클릭 → 외부 선택 → 앱 이름과 사용자 본인 이메일, 리버스 프록시로 구성한 komga의 주소를 기입합니다.

하단에 승인된 도메인엔 루트도메인을 입력해 줍니다.

이후 모두 빈칸으로 놔둔 채로 진행해 동의 화면 구성을 완료하면 됩니다.

좌측 메뉴의 OAuth 동의 화면으로 들어가 사용자 유형을 외부로 고르는 단계 OAuth 동의 화면 앱 정보에 앱 이름과 사용자 지원 이메일, Komga 주소를 채우는 입력란 승인된 도메인 항목에 Komga가 올라간 루트 도메인을 등록하는 OAuth 동의 화면 설정 범위와 테스트 사용자를 모두 비워 둔 채 다음을 눌러 동의 화면 구성을 마무리하는 단계

동의 화면 구성이 완료되었다면 아래 화면에서 앱 개시를 클릭합니다.

동의 화면 요약 페이지에서 게시 상태를 확인하며 앱 개시 버튼을 누르는 지점 프로덕션으로 전환할지 묻는 앱 개시 확인 대화상자의 구글 클라우드 안내

OAuth 클라이언트 ID 발급

좌측의 사용자 인증 정보 클릭 → 상단의 사용자 인증 정보 만들기 → OAuth 클라이언트 ID 클릭

승인된 리디렉션 URI에 아래와 같이 입력합니다.

https://{komga 리버스 프록시 주소}/login/oauth2/code/google

이 과정까지 완료하면 아래 스샷처럼 클라이언트 ID와 비밀번호를 얻을 수 있습니다. 해당 내용을 복사하거나 JSON 다운로드를 통해 가져옵니다.

사용자 인증 정보 만들기 메뉴에서 OAuth 클라이언트 ID 항목을 선택하는 단계 승인된 리디렉션 URI에 komga 주소 뒤 login/oauth2/code/google 경로를 입력한 클라이언트 설정 발급 완료 창에 표시된 OAuth 클라이언트 ID와 보안 비밀, JSON 다운로드 버튼

application.yml 작성하기

아래와 같이 파일을 작성해 저장합니다.

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: {발급받은 클라이언트 ID}
            client-secret: {발급받은 클라이언트 보안 비밀번호}

맨 처음 appdata용으로 구성한 dataset에 작성한 파일을 붙여넣습니다.

appdata용 dataset 안에 작성한 application.yml 파일을 넣어 둔 디렉터리 목록

설정 적용하기

TrueNAS의 komga에서 Additional Environment Variables를 하나 지정해 줍니다.

  • Name: KOMGA_OAUTH2_ACCOUNT_CREATION
  • Value: true

이 옵션은 소셜 로그인을 시도하는 계정과 매칭되는 계정이 로컬에 없을 경우, 자동으로 계정을 생성하도록 하는 옵션입니다.

TrueNAS Komga 편집 화면의 Additional Environment Variables에 새 변수 항목을 추가 환경 변수 이름에 KOMGA_OAUTH2_ACCOUNT_CREATION, 값에 true를 넣어 저장하는 입력란

재실행하면, 아래와 같이 구글 아이콘이 활성화되어 있는 것을 확인할 수 있습니다.

앱 재실행 뒤 Komga 로그인 창 아래에 구글 아이콘이 활성화되어 나타난 결과

클릭하면 구글 계정을 선택하는 화면이 나오고,

구글 아이콘을 누르자 뜬 계정 선택 창에서 로그인할 구글 계정을 고르는 단계

아래처럼 정상적으로 로그인할 수 있게 됩니다.

구글 계정 인증을 마치고 Komga 라이브러리 첫 페이지에 정상 진입한 결과

관리자 계정으로 확인해보면, 구글 소셜 로그인을 통해 계정이 잘 생성된 것을 확인할 수 있습니다.

관리자 계정의 Users 목록에 구글 소셜 로그인으로 자동 생성된 계정이 추가된 결과

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를 지워버리면 됩니다.

마무리

근데 사실 자주 사용할 일이 없다는게 함정