【Fly.io】创建可零扩展的Minecraft服务器
简介
和朋友一起玩Minecraft,最好自己搭建一个服务器。
昔に比べてminecraftのマルチサーバーを立てることのハードルは下がっているのを感じます。様々な企業がminecraft向けのサーバーレンタルプランを提供するようになっていますし、Realmもあります。
そこで借りてみようとするわけです。
大体8人ぐらいで安定して動かすためにメモリは8GB必要です。
レンタルすると8GBで月3000-7000円。
不是很高吗?
并不总是在运动,并且不会完全使用规格一个月。
また、先払いなのでとりあえずサーバーを立ててみようぜってのがやりにくいわけです。
ので、今回は従量課金のfly.ioでオートスケールしてくれるminecraftサーバーを立てます。
环境
-
- windows 10
- minecraft 1.19.4
所需之物
-
- fly.io のアカウント
-
- flyctlのインストール
https://fly.io/docs/hands-on/install-flyctl/
terraformのインストール
https://docs.uipath.com/installation-and-upgrade/lang-ja/docs/installing-terraform
flyctlとterraformがCLIで操作できる
办法
terraformって何
いわゆるIacツール。クラウドとかのインフラの構成をソースコードで書ける。
サーバー内で動くプログラムについての設定はできない。
サーバーを構築する時点でのパラメータをソースコードで書いていける。
-溪流
-水流
-流動
-流轉
-流派
作業はこんな感じの流れでやっていきます。2つのpowershellを利用するのでちょっとわかりにくいかも
flyctl auth token でトークンを得る
flyctl machine api-proxy で プロキシを開く
main.tfを書く
terraform init で初期化
terraform applyで立ち上げる
让我们逐个来看。
fly.ioのTOKENをゲット
打开 PowerShell 并切换到工作目录。
flyctl auth token
执行它。然后浏览器会打开认证画面,请进行认证。
PS C:\Users\Documents\minecraft_server> flyctl auth token
TOKENTOKENTOKENTOEKENTOEK
如果令牌出现在藏匿的地方,那就是成功。
打开代理
flyctl machine api-proxy
请在这里打开代理。如果不打开它,使用 Terraform 会失败,请注意。
PS C:\Users\Documents\minecraft_server> flyctl machine api-proxy
automatically selected personal organization: yourmail.com
Proxying local port 4280 to remote [_api.internal]:4280
プロキシを開いた状態のまま、このウィンドウは閉じないでください。
次からの作業は別のpowershellを開いて実行します。
编写配置文件
打开另一个shell,并切换到工作目录。然后创建main.tf文件。可以使用任何编辑器或随意创建它。terraform将使用当前目录中的main.tf文件来进行配置。
terraform {
required_providers {
fly = {
source = "fly-apps/fly"
version = "0.0.16"
}
}
}
provider "fly" {fly_api_token = $(FLY_API_TOKEN)}
提供程序是fly.io,指定使用其版本0.0.16。
请确保在$(FLY_API_TOKEN)中放入刚刚获取的fly.io令牌。
最初的设置
terraform init
これで初期設定が行われます。
以下のようになればOKです。
PS C:\Users\Documents\minecraft_server> terraform init
Initializing the backend...
Initializing provider plugins...
- Reusing previous version of fly-apps/fly from the dependency lock file
- Using previously-installed fly-apps/fly v0.0.16
Terraform has been successfully initialized!
在main.tf中添加详细信息
如果没有问题,我会在main.tf中追加以下内容。
resource "fly_app" "minecraft" {
name = "flymcraftserver"
org = "personal"
}
resource "fly_volume" "mcVolume" {
app = "flymcraftserver"
name = "mcVolume"
size =15
region = "nrt"
depends_on = [
fly_app.minecraft
]
}
resource "fly_ip" "mcIP" {
app = "flymcraftserver"
type ="v4"
depends_on = [
fly_app.minecraft
]
}
resource "fly_machine" "mcServer" {
name = "mc-server"
region = "nrt"
app = "flymcraftserver"
image = "itzg/minecraft-server:latest"
env = {
EULA = "TRUE"
ENABLE_AUTOSTOP = "TRUE"
AUTOSTOP_TIMEOUT_EST = 120
AUTOSTOP_TIMEOUT_INIT = 120
MEMORY ="7G"
AUTOSTOP_PKILL_USE_SUDO = "TRUE"
}
services = [
{
ports = [
{
port = 25565
}
]
protocol = "tcp"
internal_port = 25565
}
]
mounts = [
{
path = "/data"
volume = fly_volume.mcVolume.id
}
]
cpus = 4
memorymb = 8192
depends_on = [
fly_volume.mcVolume,fly_app.minecraft
]
}
资源配置按顺序排列着。
fly_machine的env块内进行了扩展的配置。
terraform apply
terraform applyでついにサーバーが用意されます。祈りましょう。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
色々出ますが、こんな感じでcomplete!とでてたら完成です。一応fly.ioのDashboardを確認してみましょう。
使用
最初的目标是以每月3000日元的费用建立一台具有8GB内存的服务器。
现在有3个人每天连接大约12个小时,每天大约是0.5美元。
按照这个速度计算一个月大约是15美元左右。
企業でサーバーを借りるのに比べると相当安くで済んでいるのではないでしょうか?
また、minecraftに飽きてこのサーバーをほったらかしにしてもその間はお金が発生しないので安心です。
总结
今のペースで月に2000円ぐらいなら、サーバーを借りるよりやすいような気がします。
常に24時間8人ぐらいで稼働しているのを想定するなら定額サーバーを借りたほうが安いかもしれませんが、とりあえずやるならこれぐらいでよさそうです。
祝你在Minecraft中过上美好的生活!
请参考