Skip to content

클라우드 컴퓨팅 서비스 이용

클라우드 컴퓨팅 서비스란 사용자가 직접 물리적인 서버를 관리할 필요 없이 인터넷에 연결된 컴퓨터 시스템 자원을 사용할 수 있도록 제공하는 서비스입니다. 유명한 서비스 업체로는 AWS(아마존 웹 서비스)가 있으며 오늘날 상당수의 IT 기업들이 물리적 서버를 직접 두지 않고 클라우드 컴퓨팅 서비스를 이용해 서버를 구축합니다.

일반적으로 클라우드 컴퓨팅 서비스는 서비스 제공자가 제공하는 가상머신 목록에서 사용자가 목적에 맞는 CPU, RAM 등의 하드웨어 스펙 및 Linux, Windows 등의 운영체제를 선택해 클라우드상의 가상의 컴퓨터인 인스턴스(Instance)를 생성하는 방식으로 사용할 수 있습니다. 인스턴스는 원하는 시점에 원하는 숫자만큼 바로 개설하거나 폐기할 수 있으며 사용 시간에 비례해 요금제에 명시된 금액만큼 다음 달 사용료가 청구됩니다.

다행히도 Java, Oracle Database 등으로 유명한 Oracle사에서 평생 무료 가상머신 인스턴스 및 저장공간을 1 인당 2 개까지 제공합니다. 무료 인스턴스는 그리 좋은 성능은 아니지만 FoundryVTT는 높은 서버 사양을 필요로 하지 않으며 무료 제공 저장공간도 각 인스턴스당 50 GB로 넉넉한 편이기 때문에 사용에 별다른 불편이나 지장은 없습니다.

본 문서에서는 Oracle에서 제공하는 무료 인스턴스를 이용해 FoundryVTT 서버를 개설하는 방법을 소개합니다. 다른 서비스를 사용하고 싶거나 조금 더 성능이 좋은 서버를 필요로 할 경우 AWSMicrosoft Azure 등의 서비스도 대안이 될 수 있습니다. (특히 대학에 재학 중이신 학생 분들은 무료로 제공되는 AWS Credit 등의 혜택이 있습니다.) 다른 서비스를 사용할 경우 인스턴스 생성이나 방화벽 설정 등과 같이 가상머신 외부에서 설정하는 요소들은 UI 및 세부 설정 등에서 다소 상이할 수 있으나 인스턴스 운영체제로 이 글에서와 마찬가지로 Linux를 선택한 경우 인스턴스 생성 이후의 나머지 가이드 내용은 그대로 유효합니다.

또한 Linux 운영체제나 웹 서버 등과 친숙하지 않은 분들도 가능한 편리하게 사용할 수 있도록 제가 별도로 만든 코드를 통해 서버를 구축하도록 안내하고 있습니다. 좀 더 일반적인 구축 가이드는 Foundry VTT Comunity Wiki에 다양하게 소개되어 있습니다.

Oracle Cloud 가입

먼저 Oracle Cloud에 가입합니다. 가입 후 상시 무료 인스턴스 사용 권한 및 30 일간 사용할 수 있는 $300만큼의 무료 크레딧이 제공되며 30 일의 체험 기간이 지난 후에도 상시 무료 인스턴스는 별도의 과금 없이도 계속 사용할 수 있습니다. 가입 과정에서 신용카드를 인증해야 하지만 계정을 유료 계정으로 업데이트하는 과정을 거치지 않으면 유료 서비스를 사용할 수 없으며 별도로 요금이 청구되지 않으니 안심하셔도 됩니다.

주의하실 점은 최초 가입 시에 홈 영역을 선택하게 되는데, 30 일의 체험 기간이 종료된 후에는 홈 영역 이외의 리전에서는 무료 인스턴스를 사용할 수 없으며 홈 영역 이외의 리전에 이미 생성된 인스턴스는 삭제됩니다. 해외 리전에 있는 인스턴스를 국내에서 접속할 경우 통신 지연이 발생할 수 있기 때문에 주로 국내에서 플레이하시는 분들은 서울 리전을 홈 영역으로 선택하시는 것이 좋습니다.

가입 과정이 헷갈리실 경우 구글에 "오라클 무료 클라우드 가입" 등으로 검색하시면 친절하게 설명된 글이 많습니다.

인스턴스 생성

Oracle Cloud 메인 페이지에서 Create VM Instance를 선택합니다.

   

Create Compute Instance 페이지에서 인스턴스의 Name에 적당한 명칭을 기입한 후 Configure placement and hardware 그룹의 우측 상단에 있는 Edit를 클릭합니다.

   

Availability domain, Shape 등의 항목에 항상 무료임을 의미하는 Always Free Eligible 라벨이 붙어 있는지 확인 후 Image 항목의 Change Image 버튼을 클릭합니다.

   

Browse All Images 팝업의 Platform Images 탭에서 가장 대중적인 Linux 배포판인 Ubuntu의 최신 LTS 버전인 Canonical Ubuntu 20.04를 선택 후 Select Image 버튼을 클릭합니다.

   

Add SSH keys 그룹에서 Generate SSH key pair를 선택 후 Save Private Key 버튼을 클릭해 SSH key를 새로 생성해 다운로드합니다. 다운로드한 key 파일은 생성할 인스턴스에 SSH라는 프로토콜로 접속하기 위해 필요한 암호화 key이며 잃어버릴 경우 다시 발급받을 수 없기 때문에 안전한 장소에 저장해 두고 유출되지 않도록 주의해야 합니다.

여기까지 마친 후 창 좌측 하단의 파란색 Create을 클릭하면 인스턴스가 생성됩니다.

   

인스턴스가 생성되면 자동으로 인스턴스 관리 페이지로 이동됩니다. 생성 직후에는 좌측에 노란색으로 프로비저닝(PROVISIONING)이라는 메시지가 표시되는데, 이는 현재 인스턴스를 준비 중이라는 의미로 준비가 완료되기 전까지는 해당 인스턴스를 사용할 수 없습니다. 일반적으로 프로비저닝은 몇 분 내로 완료됩니다.

   

잠시 후 프로비저닝이 완료되어 노란색 PROVISIONING 메시지가 녹색 RUNNING으로 변경되면 방화벽에서 포트를 열기 위해 Subnet 항목의 파란색 글씨를 클릭합니다.

   

Subnet 설정 페이지에서 Security Lists 그룹의 Default Security List로 시작하는 파란색 항목을 클릭합니다.

   

Security List 설정 페이지에서 Ingress Rules 그룹의 Add Ingress Rules 버튼을 클릭합니다.

   

Add Ingress Rules 팝업에서 SOURCE TYPE에는 CIDR, SOURCE CIDR에는 0.0.0.0/0, IP PROTOCOL에는 TCP, DESTINATION PORT RANGE에는 일반적인 인터넷 HTTP 접속에 쓰이는 포트 번호인 80을 지정한 후 Add Ingress Rules 버튼을 클릭합니다.

마찬가지 방식으로 개설할 서버의 파일 관리 메뉴를 위해 사용할 8080번 포트도 Ingress Rule로 추가합니다.

   

이렇게 생성한 인스턴스는 Oracle Cloud 사이트의 좌측 상단 햄버거 메뉴의 Compute > Instances 항목에서 조회 및 관리를 할 수 있습니다.

Public IP로 표시되는 193.123.228.170이 현재 인스턴스의 공용 IP 주소로, 이 주소를 통해 인스턴스에 접속할 수 있으며 추후 FoundryVTT를 플레이하는 데에도 이 주소를 사용하게 됩니다. 물론 해당 공용 IP 주소는 여기서 만든 예시 인스턴스의 주소이며 여러분이 만든 서버의 공용 IP 주소는 다른 값이 될 것입니다. IP 주소를 직접 사용하는 대신 도메인을 구매 후 해당 IP 주소를 등록해 사용할 수도 있습니다.

SSH 클라이언트 설치 및 접속

이제 생성한 인스턴스에 SSH 프로토콜로 접속해서 FoundryVTT 서버를 구축할 차례입니다. Linux나 MacOS 등의 운영체제는 기본적으로 터미널에서 SSH 기능을 지원하지만 일반적으로 사용하는 Windows의 경우 SSH 클라이언트라 불리는 별도의 소프트웨어를 설치해야 합니다.

Windows에서 가장 대중적으로 사용되는 SSH 클라이언트는 PuTTY라는 소프트웨어지만 기능 및 UI가 복잡하며 낯선 소프트웨어를 새로 설치하는 것은 번거로운 일이기 때문에 여기서는 Chrome 브라우저의 확장 프로그램인 Secure Shell을 사용하도록 하겠습니다. Chrome 이외의 Firefox나 Edge 브라우저 등을 사용하시는 분들은 Chrome 브라우저 또는 PuTTY 설치를 권장드립니다.

Chrome 브라우저에서 Chrome 웹 스토어의 Secure Shell 페이지를 열고 Chrome에 추가 버튼을 클릭하면 설치가 완료됩니다.

   

Chrome 브라우저의 주소 란에 sshSpace 키를 입력 후 Enter 키를 누르면 Chrome 브라우저에서 바로 Secure Shell을 실행할 수 있습니다.

   

Secure Shell 창에서 가장 위의 입력 란에는 위에서 생성한 인스턴스의 Username인 ubuntu 뒤에 @과 인스턴스의 공용 IP 주소인 193.123.228.170을 붙인 값인 ubuntu@193.123.228.170를 기입했습니다. 이 값은 예시로 생성한 인스턴스의 접속 정보이므로 여러분의 인스턴스 정보에 알맞는 값을 입력합니다.

다음으로 ID 항목의 가져오기...를 클릭해 인스턴스 생성 시 다운로드한 SSH key 파일을 등록한 후 연결 버튼을 클릭합니다.

   

계속할지를 묻는 팝업이 뜨면 yes를 입력 후 Enter 키를 입력합니다.

   

위와 같은 화면이 나타나면 SSH 프로토콜로 인스턴스에 접속하는 데에 성공한 것입니다.

FoundryVTT 설치 및 서버 구축

기본적으로 이와 같이 SSH 클라이언트로 인스턴스에 접속할 경우 명령어를 통해서만 인스턴스를 조작할 수 있습니다. 이러한 환경에 익숙하지 않은 분들을 위해 FoundryVTT 서버 구축 및 관리를 쉽게 할 수 있도록 구성한 스크립트를 실행할 것입니다.

다음 명령어를 복사해(칸 우측에 복사 버튼이 있습니다) Secure Shell 창에 붙여넣은 후 Enter 키를 입력합니다.

bash <(curl -s https://raw.githubusercontent.com/ShoyuVanilla/FoundryVTT-docker-compose/master/install.sh)

   

스크립트 실행 및 설치에 다소 시간이 걸리므로 잠시 기다립니다. 처음 접속했을 때와 마찬가지로 터미널의 맨 아랫 줄에 ubuntu@foundryvtt-example:~$ 과 같은 글씨가 나타나면 실행이 완료된 것입니다.

실행이 완료되면 다음 명령어를 복사해 Secure Shell 창에 붙여넣은 후 Enter 키를 입력합니다.

sudo su $USER

그리고 다음 명령어를 입력해 서버를 실행합니다.

foundry up

이 명령어는 처음에 설치한 스크립트에서 정의된 명령어로 FoundryVTT 서버 및 관련 환경을 실행합니다. 그러나 현재 서버에는 FoundryVTT 실행 파일이 없는 상태이므로 실제로 FoundryVTT가 실행되지는 않습니다. FoundryVTT 실행 파일을 서버에 설치할 차례입니다.

   

FoundryVTT 공식 사이트에 로그인 후 계정 페이지에서 Purchased License 버튼을 클릭한 후 Software Download LinksNode.js 버전을 다운로드합니다.

원래대로라면 FTP라는 프로토콜을 통해 서버에 FoundryVTT 파일을 업로드해야 하지만 이 또한 생소하고 불편할 수 있는 과정이기 때문에 처음에 실행한 스크립트에서 인터넷 브라우저를 통해 서버의 파일을 관리할 수 있는 Tiny File Manager라는 웹 어플리케이션을 설치해 두었습니다. Tiny File Manager도 foundry up 명령어를 통해 서버의 8080번 포트에서 실행하도록 되어 있기 때문에 현재 서버에서는 Tiny File Manager가 실행 중인 상태입니다.

   

인터넷 브라우저의 주소 란에 <서버의 공용 IP>:8080을 입력해 Tiny File Manager에 접속합니다. 여기서 :8080은 포트 번호를 의미하는데 Security List 설정에서 8080번 포트를 연 이유가 이 Tiny File Manager를 사용하기 위해서였습니다. 예시로 생성한 인스턴스에서는 193.123.228.170:8080가 해당 주소입니다.

Usernameadmin, Passwordadmin@321을 입력해 로그인합니다.

   

가장 먼저 해야 할 일은 위에서 로그인에 사용했던 초기 계정 정보를 재설정하는 것입니다. 파일 목록에서 tinyfilemanager-config.php를 클릭한 후 해당 파일의 페이지에서 Edit을 클릭해 편집 모드로 들어갑니다.

아래와 같이 $auth_users 라고 적힌 부분에서 ID 및 비밀번호를 설정하고 있습니다.

...
// Login user name and password
// Users: array('Username' => 'Password', 'Username2' => 'Password2', ...)
// Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html
$auth_users = array(
    'admin' => '$2y$10$B7KU3h8BGp4Xa6r9PZEK7.moQEw8LjTRqh7wJogUhKos5UvhE926a', //admin@321
    'user' => '$2y$10$mXFT.YsdMoxHlTRpGJFHWOrkhv5XUNXUlMnOiHBoJOtL39Ftg7dOW' //user@321
);
...

'admin'으로 설정된 관리자 ID를 원하는 ID로 변경합니다. 단 ID는 반드시 따옴표('')사이에 있어야 합니다.

비밀번호는 => 뒤의 '$2y$10$B7KU3h8BGp4Xa6r9PZEK7.moQEw8LjTRqh7wJogUhKos5UvhE926a' 부분에서 설정하고 있습니다. 그러나 이 값은 비밀번호 자체가 아니라 비밀번호를 통해 생성한 Hash 값이기 때문에 새 비밀번호의 Hash를 생성해야 합니다. 위의 주석에 적힌 주소 https://tinyfilemanager.github.io/docs/pwd.html 에 접속해 Hash를 생성합니다.

   

Password 란에 새 비밀번호를 입력 후 Generate 버튼을 클릭 후 생성된 Hash를 Copy로 복사해서 기존 Hash를 대체합니다. ID와 마찬가지로 비밀번호는 반드시 따옴표('')사이에 있어야 합니다.

'admin' 아래에 'user'라고 적힌 항목은 관리자가 아닌 일반 플레이어에게 파일을 업로드할 권한을 부여하기 위해 설정한 계정입니다. 이 계정의 폴더 접근 권한은 다음과 같이 Data 폴더 아래의 player-uploads 폴더로 한정되어 있으며 해당 폴더보다 상위 폴더에는 접근할 수 없습니다.

...
// user specific directories
// array('Username' => 'Directory path', 'Username2' => 'Directory path', ...)
$directories_users = array(
    'admin' => 'data',
    'user' => 'data/foundrydata/Data/player-uploads'
);
...

이 계정도 마찬가지로 ID 및 비밀번호를 변경합니다. 사용하지 않으려면 'user' => '<비밀번호 Hash>''user' => '<폴더 권한>' 에 해당하는 내용을 $auth_users$directories_users 항목에서 제거합니다. 혹은 $auth_users$directories_users 항목에 새 값을 추가해서 새 계정을 추가하는 것도 가능합니다.

마지막으로 아래와 같이 $default_timezone = 'Etc/UTC라고 설정된 항목을 현재 지역의 타임존으로 변경합니다.

...
// Default timezone for date() and time()
// Doc - http://php.net/manual/en/timezones.php
$default_timezone = 'Asia/Seoul';
...

   

편집이 완료되면 우측 상단의 Save 버튼을 눌러 저장합니다. 로그인 정보를 수정했을 경우 로그인이 해제되므로 변경한 정보로 다시 로그인해야 합니다.

이제 FoundryVTT 실행 파일을 업로드할 차례입니다.

   

Tiny File Manager 메인 페이지에서 foundryvtt 폴더를 클릭 후 우측 상단의 Upload 버튼을 클릭합니다. Drop files here to upload 라고 적힌 칸에 FoundryVTT 공식 사이트에서 다운로드한 실행파일을 끌어다 놓거나 혹은 해당 칸을 클릭하면 열리는 파일 탐색기에서 실행파일을 지정합니다.

   

업로드가 완료되면 다시 foundryvtt 폴더로 돌아가 업로드한 파일을 클릭한 후 UnZip을 클릭해 압축을 해제합니다. 압축이 해제되면 FoundryVTT 설치를 위해 필요한 준비가 모두 끝났습니다.

다시 Secure Shell 창(혹은 PuTTY 등의 다른 SSH 클라이언트)으로 돌아가 터미널에 다음 명령어를 입력해 서버를 정지합니다.

foundry stop

그리고 다음 명령어로 서버를 다시 실행합니다.

foundry up

인터넷 브라우저의 주소 란에 포트 번호 없이 공용 IP 주소를 입력합니다. 예시에서는 193.123.228.170에 해당되는 주소입니다.

   

위와 같이 FoundryVTT 라이선스 키 입력을 요청하는 페이지가 보이면 서버 설정 및 개설이 완료된 것입니다. FoundryVTT 공식 사이트에서 구입한 라이선스 키를 입력합니다. 게임에 참여하는 플레이어도 마찬가지로 인터넷 브라우저의 주소 란에 공용 IP 주소를 입력해 FoundryVTT 서버에 접속할 수 있습니다.

   

주의할 점은 공용 IP 주소를 통해 누구나 서버에 접근할 수 있기 때문에 위와 같이 FoundryVTT Setup 페이지의 Configuration 탭에서 관리자 비밀번호인 Administration Password를 반드시 지정해야 합니다. 비밀번호를 지정하면 해당 비밀번호를 입력해야만 FoundyVTT를 관리자 권한으로 제어할 수 있습니다.

파일 업로드 및 백업

작성 중

(선택) TSL HTTPS 보안 적용

작성 중

(선택) 한 서버에 여러 개의 FoundryVTT 실행하기

작성 중