안녕하세요!
이번 포스팅에서는 Gamevault를 Docker 환경에 설치하고, Steam UI와 유사한 인터페이스를 통해 패키지 게임을 관리하는 방법에 대해 알아보겠습니다.
게임 라이브러리를 깔끔하게 정리하고 싶으신 분들에게 도움이 되길 바랍니다.
Docker Compose
docker 폴더 생성

먼저 docker 경로에 폴더를 생성해야 합니다.
- /docker/gamevault
- /docker/gamevault/files
- /docker/gamevault/media
- /docker/gamevault/database
다만, 필자는 docker/gamevault 아래에 집어넣도록 하겠습니다.
따라서 경로는 다음과 같습니다.
- /docker/gamevault/gamevault
- /docker/gamevault/gamevault/files
- /docker/gamevault/gamevault/media
- /docker/gamevault/gamevault/database
files 부분에 게임을 업로드하면 됩니다.
gamevault backend 다운로드

github 링크에 접속하여 우측의 Version 항목을 클릭합니다.
포스팅 기준, Version 13.0.0이 최신 버전입니다.

하단의 Source code (zip)을 클릭하여 다운로드합니다.

압축을 해제하고 /volume1/docker/gamevault에 위치시킵니다.
이제 docker-compose.yml 파일을 다음과 같이 수정합니다.
version: "3.8"
services:
gamevault-backend:
image: phalcode/gamevault-backend:latest
restart: unless-stopped
environment:
DB_HOST: db
DB_USERNAME: gamevault
DB_PASSWORD: YOURPASSWORDHERE
volumes:
# Mount the folder where your games are
- /your/games/folder:/files
# Mount the folder where GameVault should store its media
- /your/images/folder:/media
ports:
- 8080:8080/tcp
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: gamevault
POSTGRES_PASSWORD: YOURPASSWORDHERE
POSTGRES_DB: gamevault
volumes:
# Mount the folder where your PostgreSQL database files should land
- /your/database/folder:/var/lib/postgresql/data
- YOURPASSWORDHERE
- 실제 사용할 비밀번호로 변경
- 12, 14, 26번째 줄
- 실제 경로로 변경
- 16번째 줄
- 다른 docker 컨테이너와 포트가 겹친다면 좌측의 포트를 변경
필자의 경우는 아래와 같습니다.
version: "3.8"
services:
gamevault-backend:
image: phalcode/gamevault-backend:latest
restart: unless-stopped
environment:
DB_HOST: db
DB_USERNAME: gamevault
DB_PASSWORD: PW
volumes:
# Mount the folder where your games are
- /volume1/docker/gamevault/gamevault/files:/files
# Mount the folder where GameVault should store its media
- /volume1/docker/gamevault/gamevault/media:/media
ports:
- 8065:8080/tcp
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: gamevault
POSTGRES_PASSWORD: PW
POSTGRES_DB: gamevault
volumes:
# Mount the folder where your PostgreSQL database files should land
- /volume1/docker/gamevault/gamevault/database:/var/lib/postgresql/data
PW 부분만 실제로 사용할 비밀번호로 변경하여 사용 중입니다.
docker compose 설치

이제 SSH를 통해 sudo -i로 권한을 얻은 다음,
아래 명령어를 입력하여 docker compose를 설치합니다.
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

이후 다음 명령어로 권한 부여와 함께 정상적으로 설치됐는지 확인합니다.
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose version
만약 docker compose가 설치되지 않는다면,
앞으로 나올 모든 명령어에서 docker compose 부분은 docker-compose로 변경하여 사용하시기 바랍니다.
docker compose
정상적으로 설치됐다면 docker compose.yml이 있는 경로로 이동합니다.
cd /volume1/docker/gamevault/gamevault-backend-master
개인의 경로에 맞게 수정하여 이동합니다.

다음 명령어를 통해 docker compose로 컨테이너를 실행합니다.
docker compose up -d
몇 분 정도 소요됩니다.

작업이 끝났다면 다음 명령어로 컨테이너의 상태를 확인합니다.
docker compose ps
STATUS 항목의 UP과
PORTS 항목에서 backend의 좌측 포트를 확인하시기 바랍니다.
혹여나 삭제를 원한다면 다음 명령어로 제거할 수 있습니다.
docker compose down
GameVault Client Application

이제 조금 전 확인한 포트를 통해 내부망으로 접속합니다.

GameVault Client Application 링크를 클릭해 Microsoft Store에서 GameVault 런처를 다운로드하여 실행합니다.

처음 실행하면 위와 같은 화면이 나타날 것입니다.
Begin을 클릭하여 진행합니다.

게임을 다운로드할 경우, 어디에 저장할 것인지 경로를 지정합니다.

이제 Server URL을 입력해야 하는데, 내부망이라면 간단하게 내부망 IP:포트로 접속이 가능합니다.
하지만 외부에서 사용하거나 지인에게 공유해야 할 경우에는 공인 IP:포트로 접속해야 합니다.

역방향 프록시를 사용한다면 좀 더 편리하게 접속할 수 있으므로, 참고하시기 바랍니다.
주의할 점으로는 https가 아닌 http로 접속해야 하므로
소스 프로토콜과 포트를 위와 같이 설정하시기 바랍니다.

Register를 클릭하여 계정을 생성합니다.

정상적으로 계정이 생성됐다면, 위와 같은 화면이 나타날 것입니다.
당장에는 라이브러리가 비어있을 테니, 아무런 게임도 나타나지 않을 것입니다.
IGDB 연동
Twitch
이제 업로드했거나 업로드할 게임의 DB를 자동으로 가져오기 위해 IGDB를 이용할 것입니다.
트위치에서 계정을 생성하거나 로그인합니다.
다만 계정의 보안에 이슈가 있으면 안 됩니다.

우측 상단에서 프로필을 클릭하여 계정 설정에 진입합니다.

보안 및 개인정보 보호 탭에서, 이메일을 인증하거나 인증됨이라는 문구를 확인해 주세요.

또한 비밀번호에도 이슈가 없어야 합니다.
필자는 이중 인증은 사용하지 않았습니다.

좌측의 응용 프로그램 > 내 응용 프로그램 등록을 클릭합니다.

이름을 제외하고 위 화면과 동일하게 설정하고 만들기를 클릭합니다.

만들기를 클릭하고 나오는 창에서 관리를 클릭합니다.

하단의 신규 시크릿을 클릭하고, 클라이언트 ID와 클라이언트 시크릿을 메모합니다.
docker env 수정

docker로 돌아와, gamevault의 backend 컨테이너를 종료하고 편집에 진입합니다.

고급 설정을 클릭합니다.

환경 탭에서 추가를 클릭하여, 다음 내용을 입력합니다.
METADATA_IGDB_ENABLED = true
METADATA_IGDB_PRIORITY = 50
METADATA_IGDB_CLIENT_ID = 메모한 클라이언트 ID
METADATA_IGDB_CLIENT_SECRET = 메모한 클라이언트 시크릿
입력이 끝났다면 저장 후 컨테이너를 실행합니다.
GameVault Client Application 사용법
모든 세팅이 끝났다면, 실제로 게임을 업로드 합니다.

권장하는 방법은 게임을 압축하여 Archive 파일로 files에 업로드하는 것입니다.

필자의 경우로 예시를 들어보겠습니다.

게임을 하나 선택하고, 설정 버튼을 클릭합니다.

Metadata 탭에서 IGDB 탭을 클릭하고, 게임 이름을 검색합니다.
해당 게임이 DB에 나타난다면, Remap 버튼을 클릭합니다.

필자의 경우 정상적으로 게임이 인식되었고, Recache Game을 클릭하여 깔끔히 적용합니다.

적용된 모습을 확인합니다.

다만, 모든 게임이 DB에 있는 것은 아니므로
DB에서 검색이 불가하다면 직접 DB를 수정할 수 있습니다.
꽤 많은 항목을 수정할 수 있으므로, 유용하게 사용할 수 있을 것입니다.
고생 많으셨습니다! 잘 따라오셨나요?
저 역시 최신 버전 설치 가이드가 없어 고생하며 설치하였고
아직 사용법에 대해 완벽히 알지도 못해 포스팅할 자격이 있는지는 모르겠지만
GameVault는 매우 유용한 도구라 생각되어 급하게라도 포스팅하게 되었습니다.
추후 더 많은 정보를 습득하게 되면, 이 글을 수정하거나 추가하여 업데이트할 예정이니
앞으로도 많은 관심 부탁드립니다.
감사합니다!