vps心得&部署一些工具感想

N 人看过


最近因為朋友的surfshark到期了,加上自己想獲得一個連線到日本的節點,以及希望有一個public ip可以拿來建立一些web service,上網研究了一下購入了日本的VPS服務。

在一篇講馬娘如何繞過cygames的檢查的巴哈文章裡面看到了 WebArena Indigo ,一個月只要400多日幣就可以開一台VPS (spec如下,少的可憐 QQ)對於我目前的需求來說還是蠻夠用了。

image


Instance選擇?

因為WebArena蠻多中國的文章都有詳述,開instance的介面說實在也蠻單純的,這邊就直接跳過開機的步驟(我也沒截圖 嘻嘻)。

機器本身就是一台qemu/kvm,可以選centos/ubuntu等常見的distrubtion,似乎也有windows server的選項,但想到license的溢價,對我個人來說是完全沒考慮過,就一台vps打天下吧!

另外平台也有提供snapshot功能,但snapshot也要依照儲存時間計費,實在太不划算了,趕緊弄一弄自己的IaC做自動部署環境那些,感覺還比較實際。


首先拿來幹嘛

我個人的使用目的第一號,是想要一個日本的網路節點可以拿來看一些日本動畫之類的(動畫瘋不是什麼都有),但大家也知道日本的網路服務非常的鎖國外IP,甚至三大csp/oracle的都被ban光光,更別說那些每天看得到廣告的vpn品牌可以說是完全不用想拿來看任何日本網站。

所以首先就使用這邊開的instance來嘗試連線,很幸運的沒有在我想使用的服務的block list中,順利用100多台幣獲得一台好夥伴。


部署了什麼服務

TW forum feed 化大作戰

在去年開啟了gcp試用的期間,我使用golang簡單寫了一些cloud function拿來做ptt/噗浪的貼文feed化,repo在這邊go-feed-tool原本是使用cloud function形式,試用了Cursor來進行web server的改版,用起來還挺得心應手,大約在半小時~一小時的區間就成功部署成為web server app,還做了一些功能的調整更新。


RSS feed telegram bot

因為我個人和交友圈,最常使用的social app其實是telegram,telegram有著碾壓其他社群軟體的跨平台同步速度,更扯的是他的bot是完全不用收錢,為了讓自己更方便「被動」獲取一些論壇資訊(真的花太多時間滑PTT= =)我使用了公開repo RSS-To-Telegram-Bot,部署到自己的機器上,在做for個人的RSS通知機器人。

順帶一提這個作者也有一個共同使用的bot公開,但為了自己rss註冊表資料的可控、隱私、還有爬文web app說實在也不想隨便暴露,所以自己建在自己機器上對我來說比較適合一些。


Nuget To Unitypackage 服務

使用Unity的時候,如果想使用nuget的package(例如大家都愛的Newtonsoft.Json)其實是一件相當麻煩的苦差事,現在大部分使用 NuGetForUnity 專案來管控下載以及dependency等,但有時候只是想單獨使用某一包,也不想安裝這個專案(有時候覺得太過龐大),所以簡單做了一個web service + executable的程式,可以使用nuget下載package,自動選擇對unity專案較為適合的target,建立asmdef的關聯,最後打包成unitypackage可以一鍵置入專案。

專案在這:nuget-2-dll-go

值得一提的是,在部署這個服務的時候遇到蠻多問題,第一個是目前前面的服務docker image都是基於alpine就可以運行,但這個專案因為需要nuget,使用debian會是相對穩定的執行環境,所以程式在build的時候雖然一樣基於golang的alpine環境建立,但執行環境我選擇了debian:bullseye-slim,沒想到才是噩夢的開始…

首先是因為其他docker-compose都在正常進行中,所以機器本來記憶體就所剩不多,在安裝debian的nuget的時候又會調用到蠻大量的記憶體,結果我這台只有1G記憶體的vps直接吃不消,被out of memory killer砍翻了,機器當掉好幾次。

後來開著htop同時監督,才發現這個階段記憶體完全用到超過90%,後面是不可能完成的,還好這vps雖小還是給了20GB的SSD,趕緊的切了2GB當swap file,才真的成功部署到機器上(kernal版本不給我跑zram orz,不然真的不太想直接開到swap file)。

其他部署問題

因為這期間我也購入了自己的domain name,所以用了traefik來做簡易的LB/reverse proxy,把這些服務都分到不同的subdomain去。

結果發現Cloudflare的dns,好像會自動上https,所以處理CA憑證那邊也花了快半小時左右,才成功把這些service公開出來讓自己的rss reader使用。


接下來要做什麼

目前還在想有什麼服務可以部署,但作為一個遊戲開發者,感覺自己應該要開始拓展多人遊戲的開發技能了。

這個機器小到離譜,所以如果拿來做relay server感覺可能會翻車,目前構想應該是做簡單的match-making/lobby,然後打通STUN之後讓玩家們直接nat punchthrough來連線? 不曉得unity netcode有沒有別人寫好的套件可用,Unity自己要賣Cloud Service的Relay Server,感覺肯定不會推薦用p2p遊玩 lul。


總之最近買了vps/domain name等,又複習了一大堆linux admin的設定,還有現代雲的一些常用工具等等,接下來如果可以蹭到一些oracle的機器,感覺可以開始導入一些Terraform之類的IaC之類的來做自動化部署etc。

後端技能樹越點越多的Game Programmer是不是搞錯了什麼? 為了自清自己是Game Programmer指好放一下自己上電視的片段已證清白 haha