背景交代:
唉...這段時間和朋友跑團,原本都是用的roll20
但是事情發生了變化——大家都考完final了,有的成功(歐洲)人士機票沒有被取消已經收拾好東西準備回國了。
Roll20在國內並不能直連使用,不是所有人都願意...額應該說,梯子這個東西並不是所有人都能熟練駕馭的wwww
而且主要是我們的DM要回國——誰願意回國不能用了還繼續給Roll20交錢呢是不是?
所以是時候找一個替代品了,然後我們的DM找到了Foundry VTT這個東西(後文簡稱FVTT),他....可以說就是一個Roll20的威力加強版。和roll20一樣是打開瀏覽器就可以玩,但他的光影特效實時地圖還有天氣系統等等實在太精緻了,簡直就是我們心目中的那個DND世界。
雖然這個東西其實是要給開發者捐贈支持的,但是為一款這樣的DND SERVER捐贈那不是天經地義的事兒嗎?!
就像上面所交代的那樣,我們被這個FVTT徹底吸引住了,如果你沒有辦法感受到他是多麼精緻的一款跑團遊戲,這裡是官網的demo鏈接 ,你可以從DM還有兩個角色的角度去參與進這個demo(AccessKey都是foundry)。能直接在畫面上表現出光源和場景遮蔽還有互動的DND平台可一點也不多見,討論了一下,不如直接掏出我的伺服器開幹吧!
一、準備工作
因為是要架設Server,所以對於我而言當然是CentOS/Debian/Ubuntu這幾個我相對而言比較熟悉的系統了。
當然,雖然我應該不會選擇用windows server作為server端,我還是大概的看了一下。Windows下的程序,我記得沒錯的話是直接Electron封裝好的app,那Linux下面的話則直接是一個node.js的app——雖然說Electron其實就是node.js和Chromium打包在一起的東西本質上沒什麼不同www。
這裡很果斷的選擇Linux作為server端了,第一是本身系統的佔用就比較小,我不太需要一個比較強的VPS就能達到很好的效果;第二是,新開的vps不需要交Win Server的授權費,這樣子每個月就便宜很多很多了。
最後就決定使用Linux系來作為server了,因為之前都是用的centOS比較多,想著好像沒用過幾次Ubuntu Server(雖然我自己家裡電腦裝Linux基本上是ubuntu或是elementaryOS,因為好看)所以這次就採用了Ubuntu 20.04LTS作為server的OS,你問我為什麼選擇20.04而不是18.04...嘗嘗鮮嘛!
因為是會跑node.js的app,所以想了想這次的vps配置選擇了2 vCPU,4G RAM,10G Storage的主機。雖然感覺好像有點浪費......
總體的思路是部署好環境,使用pm2來開機自動運行FVTT,最後再用Nginx做一個反向代理(雖然說是可以直接把FVTT運行在80端口下沒有錯,但是為了“順便”搭個梯子我還是更傾向於使用Nginx簡單的做一個反向代理)
二、工具準備
這次用的vps性能上比較好一點,而我最近正在翻譯視頻做字幕沒有太多時間去自己幹活(其實就是懶),所以用了最懶人的方法——我裝了寶塔()
寶塔其實是一個挺好用的後端管理工具來著,對於初學者來說也很好駕馭——對懶人十分友好的工具wwww
所以剩下我們只需要準備幾個東西了:node.js,pm2,fvtt的zip文件(如果你是官網購買的,請直接在你的profile裡找到node.js版的zip包下載)
三、擼起袖子開幹吧!
寶塔面板安裝和設置
SSH連接上VPS以後,首先我們來安裝一下寶塔面板
Debian/Ubuntu用戶是這個指令:
1 | wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh |
CentOS用戶的話則是下面這個指令:
1 | yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh |
安裝好寶塔面板跟著提示用他隨機生成的賬號密碼去訪問後台(記得自己去設置頁面改入口還有用戶名密碼啊,隨機生成的入口反正我記不住www)
進入面板後他會提示你安裝lnmp或是lamp,因為這是一個為網頁服務器設計的後台管理面板來著,這裡我們根據需求選擇就好。對我而言是lnmp,版本我使用的是nginx1.17/MySQL5.7/php7.2 ,至於phpMyAdmin和ftp我都是選用他默認的版本。
這個安裝會持續一段比較長的時間,視你的機器配置可能會持續數十分鐘到數小時都有可能(我的話花費了大約30分鐘左右)
在這個過程中你可以選擇先下載好你的FVTT壓縮包並把它上傳到Server——對了,這裡直接用寶塔面板的文件管理上傳文件的話會比較方便,而且速度上也比Google的SSH Console上傳速度快一些。
安裝完成以後我們就可以進行下一步了!
安裝node.js和部署遊戲
這裡的話,因為其實node.js的版本差異挺大的,比較建議在安裝的時候看製作者推薦使用的版本,我使用的是node.js 12.x的版本。
1 | curl -sL https://deb.nodesource.com/setup_12.x | sudo bash |
1 | sudo apt install -y nodejs |
等他跑完以後我們就已經可以運行fvtt程序了,所以現在我們開始進行遊戲的預先設置吧!
首先是在你使用的用戶的home目錄下建立兩個資料夾 foundry 以及 foundrydata。這兩個資料夾一個是用來存放遊戲本體的,一個是用來存放配置文件還有後期的add-on啊data什麼的。這裡我們可以直接用寶塔的文件管理建立這兩個資料夾,權限建立為777。當然也可以直接用指令完成——就一個mkdir而已,還是用命令來的比較快吧!
首先我們先跳到home
cd ~
然後就可以開始mkdir了
mkdir foundry
mkdir foundrydata
建立好這兩個資料夾以後,如果是從官網下載並上傳到Server的,把你傳上去的zip資料檔移動到foundry目錄,並解壓他unzip foundryvtt-x.x.zip
,或是用寶塔的文件管理界面去解壓也可以,怎麼方便怎麼來。
如果是通過Patreon獲取指令鏈接的,請直接移動到foundry資料夾並執行你獲取的指令,他長得應該是像這個樣子的:
1 | wget https://foundryvtt.s3-us-west-2.amazonaws.com/releases/[AccessKey]/FoundryVirtualTabletop-linux-x64.zip |
後面的操作官網License和Patreon用戶是一致的,也是unzip到這個foundry資料夾
記得刪掉zip壓縮檔www,當然你要是懶得省硬碟空間也是可以留在那裡不刪就是啦... ...
然後我們就來試著執行一次程式咯!(現在我們的位置是在foundry目錄下)
1 | node resources/app/main.js --dataPath=$HOME/foundrydata |
然後我們看到像下面一樣的界面就說明程序正常運行了,此時我們就已經可以通過IP加端口或是主機名+端口號(如果你有綁定域名的話)訪問fvtt後台了。程序默認運行在30000端口,如果需要修改運行端口可以在foundrydata/Config下找到option.json進行修改。
其實如果只是為了玩到的話,做到這一步就已經可以正常遊玩了,但是每次開機都得手動輸入node resources/app/main.js
命令開啟有點麻煩(雖然只有第一次運行需要加--dataPath=$HOME/foundrydata
設置data的路徑,但還是很麻煩)
而且還有個端口號在那裡怎麼看都不舒服(雖然如果改成80端口就可以不用輸入端口號,但還是用nginx吧)
而且還一直會佔用住前台很不爽啊...
所以pm2的用處這就來了。pm2是一個很方便的node.js的管理工具,可以簡單的管理計算機裡的node程序,而且還能開機自啟在pm2 list裡面的程序。
好,那現在先按ctrl+c結束程序的運行,開始安裝pm2!
安裝pm2並設置開機自啟
這個部分其實沒什麼好說的,我覺得這個部分應該是整個文章中最簡單的part了
1 | sudo npm install pm2 -g |
嗯,等他跑完就安裝好了,安裝完成可以用 pm2 --version
指令查看當前安裝的pm2版本,確認是否正確的安裝上了。
嗯...然後就沒了。
執行pm2 startup
命令,在他跑完一大串以後應該會在末尾給出一行命令,把那條命令複製下來執行,pm2就會在開機的時候自動啟動了。
使用pm2執行fvtt程序
這裡基本也就是一句話的事兒,執行命令
1 | pm2 start /home/你的系統用戶名/foundry/resource/app/main.js --name"foundry" |
這裡的--name是pm2的option,也就是說你把這個程序現在加了一個別名叫“foundry”,在pm2的list裡面以後他會顯示為foundry,而且執行的時候也是直接敲pm2 start foundry
就可以運行程序了。
此時我們的程序就已經用pm2運行了,可以在list裡面看到現在正在用pm2運行的程序,如果輸入pm2 stop
+list裡對應的程序名就可以終止該程序的進程,比如我們要停止運行fvtt,只需要敲pm2 stop foundry
就可以了。
因為前面已經設置好了pm2的自啟,所以運行過後理論上重啟電腦他也會自動啟動fvtt,這裡你們可以重啟嘗試一下。反正我這裡是已經能工正常自啟動了。
下一步就是進行nginx的配置了!
配置nginx
這裡,我人懶,所以直接在寶塔裡面找到nginx並點到配置修改標籤直接改。
在include前面我們加入這樣幾行字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | server { listen 80; server_name 你的域名地址; access_log /var/log/foundry/access.log; error_log /var/log/foundry/error.log; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; #這裡的30000改成你設置的端口號 proxy_pass http://127.0.0.1:30000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_read_timeout 90; # 這裡依舊是改成你的端口號,後面是你的域名 proxy_redirect http://127.0.0.1:30000 http://你的域名; } } |
到這裡我們就大功告成啦!只需要輸入你的域名,我們就可以直接連入你的FVTT程序了!
那我說的慘案又是怎麼回事呢?
說起來挺不好意思的,我本來想加SSL結果一不小心整個FVTT崩了,沒辦法訪問了,改了配置文件以後直接執行FVTT沒有出現問題,能夠正常的通過域名訪問到FVTT,但是一換成pm2就沒辦法直接訪問到...
萬念俱灰下我決定乾脆刪掉重來——因為我發現這玩意兒是有docker的!!!!!!我直接用docker不就好了?!還省得這麼麻煩了!
然後!!!我就刪錯了!!!!!!我把本站所在的那個vps刪掉了!!!!!!
然後我上一次備份是去年的十一月.......................好吧,結果又得重新來了..........連著我這幾個月發的sp永世皆感想啊什麼的全部都沒了...
沒了..........
嗯,這就是事情的開端了...
叨叨幾句... NOTHING