はじめに
友人とValheimをやるために、AWSでマルチプレイ用のサーバーを立てた。
ローカルでポート開放し、立ててもよかったけど、この記事をみて、AWSに挑戦してみました!
とても簡潔に書いてあるし、料金についても考えているし背中を押してくれた記事です!
立てるのは意外と楽だ
今回ふれたアプリはこの二つだけ!
コンソールの画面をそのまま貼り付ける情弱でもできました。
EC2の設定だけで建てられる
最終的な構成はとてもシンプルで、使ったサービスはEC2(仮想サーバー)ひとつだけだった。
| 項目 | 選択 |
|---|---|
| リージョン | 東京(ap-northeast-1) |
| インスタンスタイプ | t3.medium(2vCPU / 4GB) |
| OS | Ubuntu 24.04 LTS |
| ディスク | gp3 20GB |
| 通信の許可 | UDP 2456-2457(全体)、SSH 22(自分のIPのみ) |
やることは、EC2の作成画面でOSとスペックとディスクを選び、通信を許可する設定(セキュリティグループ)を作るだけ。
(マジで怖い言葉 Auto Scaling は使用していません!!)
構成はAIと相談したよ
最初に相談したのは構成そのものだ。「6人くらいで遊ぶ」「月2,000円前後」という条件を伝えたところ、選択肢が整理されて返ってきた。
要点は、4GBメモリのサーバーを24時間動かすと月8,000円前後になり、予算に収まらないということだった。
そこで提示されたのが、遊ぶときだけ起動して、終わったら停止するという運用だ。EC2は起動している時間だけ課金されるので、月60時間なら1,000円弱で済む。
AIの提案で月額固定のLightsailという選択肢も出たが、よくわからなかったのでパスした。
建て方も聞いてみたよ
構成が決まった後は、手順をすべて出してもらった。
GUIですべて設定し、画面のスクリーンショットを貼って「ここはどう設定すればいい?」と聞けるので、初心者にはかなり楽だった。
EC2のインスタンスを起動した後の作業は、実質3ステップだった。
- SteamCMDというツールを入れる
- ヴァルヘイムのサーバー本体をダウンロードする
- systemdに登録して、サーバー起動時に自動で立ち上がるようにする
最終的にAIと行った作業、サーバーを確認するコマンド、サーバーの起動、停止の仕方を確認してドキュメントにまとめて終わり!
怖いのは料金だよね
正直、技術的な部分より怖かったのはこちらだ。「気づいたら数万円」という話はよく聞く。
料金はどれくらいなのかを計算しよう
まず、何にいくらかかるのかを正確に把握した。ここが一番大事だったと思う。
| 項目 | 起動中 | 停止中 |
|---|---|---|
| インスタンス(t3.medium) | 約$0.054/時間 | 無料 |
| パブリックIP | $0.005/時間 | 無料 |
| ディスク(gp3 20GB) | 約$1.9/月 | 約$1.9/月 |
ポイントは、停止してもディスク代だけは消えないことだ。月に一度も遊ばなくても330円ほどかかる。これはワールドデータの保管料と考えるしかない。
この前提で計算すると、こうなる。
- 月60時間遊ぶ:約970円
- 予算2,000円の上限:月150時間くらいまで
- 24時間つけっぱなし:約8,000円
つまり、停止し忘れがすべてということが分かった。そこさえ守れば予算内に収まる。
↓AI曰く
固定IP(Elastic IP)は使っていなくても月約$3.6かかる、NATゲートウェイは月数千円かかるので作ってはいけない、といった話だ。知らずに固定IPを取っていたら、気づかないまま課金され続けるらしい。
料金を監視しよう
計算しただけでは安心できないので、監視も入れた。
1. 予算アラート(Budgets)
インスタンスを作る前に設定した。予算を$12にして、50%・80%・100%、それと月末予測が100%を超えた時点でメールが飛ぶようにしている。
これは2つまで無料(3つ目以降は1日$0.02)なので、今回のように1つ作るだけなら費用はかからない。メール通知も無料だ。
2. Cost Explorer
日別・サービス別で料金の推移が見られる。遊んだ日だけ料金が上がっているかを確認できる。画面で見るだけなら無料だ。
注意点として、料金の反映は最大で1日ほど遅れる。今日遊んだ分は翌日に確認することになる。
↓ 記事を書いているときに下記のことを提案された
CloudWatchによる自動停止(任意)
CPU使用率が一定を下回る状態が1時間続いたら自動停止する、という設定もできる。アラームは10個まで無料。停止し忘れの保険として入れておくと安心できる。
プラスアルファ:ここは深く聞いた
作業中に疑問に思ったこと、詰まったことをまとめておく。
AMI(OSの種類)はなぜUbuntuなのか
デフォルトはAmazon Linuxだったので理由を聞いた。
簡単に言うとSteamCMDの入れやすさだった。よく分かっていないがSteamのゲームサーバーが立てやすいって話らしい
Ubuntuなら apt install steamcmd で終わるが、Amazon Linuxには公式パッケージがなく、手動で用意する必要がある。
加えて、ゲームサーバー関連の記事はほぼUbuntu前提なので、詰まったときに検索で解決しやすい。OS自体はどちらも無料なので、料金は変わらない。
停止するとデータは消えるのか
消えない。ワールドも設定もディスクに残る。
消えるのはEC2のインスタンスのステータスで「終了(terminate)」を押したときだけだ。名前が似ていて紛らわしいが、terminateは削除を意味する。
| 操作 | データ | IPアドレス |
|---|---|---|
| 停止 | 残る | 変わる |
| 再起動 | 残る | 変わらない |
| 終了 | 消える | なくなる |
「Valheimを止める」と「EC2を止める」は別物
ここは最初、混同していた。
systemctl stop valheim はヴァルヘイムのプログラムを止めるだけで、EC2は動いたままなので課金は続く。料金を止めたいなら、止めるのはEC2インスタンスのほうだ。
気をつけろ!
パブリックIPが毎回変わる
停止して起動するたびにIPアドレスが変わるので、遊ぶたびに友人へ共有する必要がある。
固定する方法(Elastic IP)もあるが、月約$3.6かかるうえ、使っていないときも課金される。数十円のIP課金を避けるために月500円払うのは本末転倒なので、毎回共有する運用にした。
記事を書いているときにこの仕様を知りましたw
つまずいたエラー2つ
WARNING: UNPROTECTED PRIVATE KEY FILE!
鍵ファイルの権限が広すぎるとSSHが接続を拒否する。鍵をOneDriveのフォルダに置いていたのが原因だった。icacls コマンドで権限を絞ったら解決した。
Job for valheim.service failed because a timeout was exceeded
サーバー起動前のアップデート確認に90秒以上かかり、systemdのデフォルトのタイムアウトに引っかかっていた。TimeoutStartSec=600 を追加して解決。失敗しているように見えるが、インストール済みのものは壊れていないので焦らなくていい。
構成図
業務で構成図はよく見るよね、あれってかっこいいよね
だからAIに構成図を出してもらいました。構成図にするとやっている感あっていいね
だけどめちゃシンプルだね。(AWSのアプリのマークとあの書き方できるようになりたいね)
まとめ
- 構築は半日かからない。 使うサービスはEC2だけ
- 怖いのは技術ではなく料金。 先に計算して、先に監視を入れる
- 停止し忘れがすべて。 予算アラートと自動停止を保険にする
- 月60時間で約1,000円。 つけっぱなしなら約8,000円
よくわからないから怖かったけど
一回立ててみたらAWSを触る怖さは少しだけなくなったかも
1週間は怖いから監視します!w

