[構築編] Roblox Auto Data DeleterをVPSで運用してみよう

Roblox Auto Data DeleterのVPSでの導入手順を紹介していきます。今回はConoHa VPSでの手順をサーバー契約から解説しますが、その他の環境で構築する際にも参考になる部分は多いかと思うので、活用してみてください。

ただし、以下はサーバー管理知識がない人向けの超かみ砕いた解説になります。
サーバー管理知識がある場合は、ここを読まなくても、こちらのページを参考にすれば導入できると思います。

ただし、以下の手順を実行したとしても、必ず正しく動作すると保証することはできません。あくまで自己責任でお願いいたします。

ステップ1.サーバーを用意する

Roblox Auto Deleterは基本的にLinuxベースのサーバーが必要です。

必要スペックの目安は以下になります。

  • 24時間365日安定して稼働できる
  • メモリ1GB

知識があまり無い場合は、無難にVPS:仮想専用サーバーを契約するのがおすすめです。

VPSを簡単に説明すると、「仮想的な自分専用のサーバー」を持つことができるサービスです。

サーバーというとこのような機械をイメージする人もいるかもしれません。何百万何千万円もかかりそうなやつ。

あながち間違いではないのですが、VPSではこのような物理的なサーバーを仮想的に分割することで、1つのサーバー内に複数の仮想サーバーをたてることができ、仮想サーバーごとに契約するので、お手頃価格で利用することができます。

VPSを提供している会社はたくさんあります。
国内だと、さくらインターネットやXServerなど。

VPSの選定条件は以下です。
・運営会社の信頼性
・サーバーの安定性
・SLA(サービス品質保証)制度の有無
・料金
・プランの充実性(今回の場合、1GBプランがあるか?)

これを踏まえて、私はConoHa VPSかさくらVPSをおすすめします。
どちらかというとConoHaがおすすめです。

ただし、「GMOは嫌だ」という方はさくらVPS、「値段は気にしなくてもいいから絶対的な安定性が欲しい」という方はAWSやAzureなどの海外製クラウドも視野に入るのかなと思います。

今回はConoHa VPSを使います。

サーバーを決めたら、次のステップに進みましょう。
なお、ステップ2以降はConoHaで進めていきますが、他サーバーを使用する場合も、調べながら進めていけばどうにかなると思います。不安なら一緒にConoHaで進めるのが無難です。

ステップ2.サーバーを契約・構築する

ここからはサーバーを契約・構築していきます。

ConoHaには友達紹介制度があります。

以下の紹介リンクからConoHaに登録するだけで1000円分のクーポンがもらえるので、ぜひ活用してみてください。

https://www.conoha.jp/referral/?token=NnBz0SwasGe.ba5StZD5GwJiGCa2U0bufRkgdV5WXpRq2JzINd2GHjbjcTOX0A–1LU

ただし、友達紹介制度なので、私にも報酬が発生します。具体的には紹介された人が2000円分使うと私にも2000円分のクーポンがもらえます。
そのため、私に「1円たりともあげたくない!」という方は、上のリンクではなく、GoogleでConoHa VPSと検索して、そこからアクセスしてみてください。

ConoHaのサイトにアクセスしたら、適当にアカウントを作成してログインしてください。

この画面までこれたら成功です。
もし紹介制度が適用されていれば、クーポン残高が1000円になっているはずです。

それでは早速サーバーを追加しましょう。左上の「サーバー追加」を押してください。

いろいろごちゃごちゃしていて混乱するかもしれませんが、落ち着きましょう。
サービスは必ず「VPS」を選択してください。
イメージタイプについて、今回はCentOSを使用するので、「CentOS Stream9」が選択されていることを確認してスクロールしましょう。

さて、次の難所。料金タイプとプランを選択します。
プランは「1GB」を選んでください。

Roblox Auto Data Deleter単体で利用するなら十分なスペックですし、他の用途で使いたいなら別でサーバーを契約した方がいいと思います。このソフトは安定性が重要なので、サーバーを分けたほうが良いです。

ただ、512MBはビルド時のメモリが足りないし、プランアップもできないので、やめておきましょう。頑張れば512MBでも運用できますが、初心者にはとても難しいです。

さて、料金タイプの「時間課金」とはなんでしょうか?
これは、1時間ごとに課金するプランです。料金が割高になる分、数日など短期間の利用であれば、1か月契約よりも無駄なく料金を抑えられます。

ただし、Roblox Auto Data Deleterは長期間運用するタイプのソフトなので、時間課金はあまり向きません。
「1ヶ月」「3ヶ月」「12ヶ月」「24ヶ月」「36ヶ月」から好きなものを選択しましょう。
これは好みとしか言えないですが、1ヶ月契約でも月額762円とお手頃なので、迷うぐらいなら短い契約期間にすべきだと思います。おすすめは1ヶ月、3ヶ月、6ヶ月のいずれかです。後からの変更もできます。

総額料金にも注意しましょう。

さて、次はrootパスワードとネームタグを入力します。
rootパスワードとは、サーバーの管理者となるユーザーのパスワードのことです。
ただし、rootパスワードは使わないので、適当にランダムな文字列にすれば良いです。
ネームタグはサーバーの名前です。なんでもいいのですが、適当に「Roblox-Auto-Data-Deleter」とでも名づけておきましょう。

次に、オプションを開きます。

セキュリティグループ「IPv4v6-SSH」「IPv4v6-Web」を追加します。要はSSHとWeb(HTTP/HTTPS)用に使うポート開放ですね。

さて、ここから超重要!SSH Keyを生成します。SSH Keyとは、超簡単に言えば「SSHにログインするパスワードの代わり」となるものです。SSHとは、…後で説明します。

「キーを新規作成」を選択し、登録方法を「自動生成」に。ネームタグはSSH Keyの名前。適当に名づけておきましょう。

その後「追加」を押すとファイルのダウンロードを促されるので、ダウンロードします。
※SSH Keyあたり一度しかダウンロードできないので、大切に扱ってください。

ダウンロードが終わったら、先ほどのキーが選択されていることを確認してください。

これで一通り完了です!

・イメージタイプ:CentOS stream9
・料金タイプ:お好きなもの
・プラン:1GB
・セキュリティグループ:「default」「IPv4v6-SSH」「IPv4v6-Web」
・SSH Key:「キーを選択」->作成したやつを選択

…それと、料金にも注意。
この6つを確認できたら、「次へ」を押して進みましょう。

お支払いに進みます。
友達紹介リンクから登録した場合、クーポン1000円分が自動で適用され、申込料金から割引されているはずです。
私はチャージで支払いました。

おめでとうございます!サーバーが作成されました。※都合上画像ではメモリ512MBの表示になっていますが、気にしないでください。

この後、ステータスが「起動中」になるまで待機します。私は3分ほどで完了しました。速い!

ここまででサーバー作成は完了。おつかれさまでした。ちなみに、「IPアドレス」はあとで使います。

ステップ3.SSHでログインしてインストール!

さて、ここからはSSHにログインします。

SSHとは、「ネットワーク上のコンピューターを遠隔操作するためのプロトコル」です。あなたのPCから、先ほど作成したVPSをリモートで操作するために必要です。先ほど作成したSSH Keyも、SSH用のパスワードのようなものだったんですね。

SSHにログインする方法は色々ありますが、おすすめなのはmobaxtermというSSHソフトを使う方法です。愛用しています。
以下からダウンロード・インストールできます。

https://mobaxterm.mobatek.net/download.html

インストールして開けたら、Sessionを押します。

新しいウィンドウが出てきたと思います。
・まず「SSH」を選択します。
・Remote hostには、先ほどのVPSのIPアドレスを入力します。
・Specify usernameには、rootといれます。

次に、Advanced SSH settingsを開き、Use private keyに、先ほどダウンロードした.pemファイルを選択します。

ここまでできたら「OK」を押しましょう!

初回接続時だけ確認画面が出てきますが、Acceptを押します。

こんな画面になったらSSHログイン成功です!おめでとうございます!!

さて、ここで一度ConoHaのコントロールパネルに戻ります。Robloxからウェブフックを受け取るためにはドメインの設定が必要です。ここでは、VPSごとに割り当てられているサブドメインを使用します。
VPSのネームタグをクリックします。

「VPS設定」を開き、下のほうにある「逆引きホスト名」をコピーします。
v000-000-000-000.aaa.static.cnode.jpのような形式です。最後のjpの後のピリオドは消してください。

このサブドメインが、サイトにアクセスするためのドメインになります。
ちなみに、独自ドメインを持っている方はそれを使っても大丈夫です。DNS設定するだけでOK。

次に、以下のコマンドをコピーして、PCのメモ帳などに貼り付けます。

#!/bin/bash
set -e

#########################################
# ★ 各種入力項目
#########################################
DOMAIN="v000-000-000-000.aaa.static.cnode.jp"      # ドメイン名
EMAIL="example@roblog.jp"                # メールアドレス(Cert Bot用)
ALLOWED_IP="0.0.0.0, 0.0.0.0"  # ダッシュボードにログインできるIPアドレス

#########################################
# 0. Webダッシュボードログイン用パスワード
#########################################

# パスワードを手動入力
while true; do
  echo -n "◆ Webダッシュボードのログイン用パスワードを入力してください(入力は非表示/9文字以上、記号を含む): "
  read -s AUTH_PASSWORD
  echo ""
  
  echo -n "◆ 確認用パスワードを再入力してください(入力は非表示): "
  read -s AUTH_PASSWORD_CONFIRM
  echo ""
  
  # パスワードの一致確認
  if [ "$AUTH_PASSWORD" != "$AUTH_PASSWORD_CONFIRM" ]; then
    echo "エラー: パスワードが一致しません。再度入力してください。"
    continue
  fi

  # 文字数チェック
  if [ ${#AUTH_PASSWORD} -lt 9 ]; then
    echo "エラー: パスワードは9文字以上である必要があります。"
    continue
  fi

  # 記号を含むかどうかのチェック
  if ! [[ $AUTH_PASSWORD =~ [^a-zA-Z0-9] ]]; then
    echo "エラー: パスワードには少なくとも1つの記号を含める必要があります。"
    continue
  fi

  # 条件クリアならループを抜ける
  break
done

echo "パスワードが設定されました。"

#########################################
# 1. root のパスワードログイン禁止
#########################################
echo "◆ Step 1: root のパスワードログインを禁止します。"
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
if grep -q "^PermitRootLogin" /etc/ssh/sshd_config; then
  sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
else
  echo "PermitRootLogin no" >> /etc/ssh/sshd_config
fi
systemctl restart sshd
echo "※ root のパスワードログインを禁止しました。"

#########################################
# 2. システムアップデート & 必要パッケージのインストール
#########################################
echo "◆ Step 2: システムアップデート & 必要パッケージをインストールします。"
dnf -y update

# Nginx、Git、Python3、pip、OpenSSL、jq などをインストール
dnf install -y git nginx python3 python3-pip openssl jq

# Node.js 22.x のインストール (CentOS Stream 9 用)
echo "◆ Node.js 22.x をインストールします。"
curl -fsSL https://rpm.nodesource.com/setup_22.x | bash -
dnf install -y nodejs

# Nginx の自動起動設定 & 起動
systemctl enable --now nginx

#########################################
# 3. Roblox Data Auto Deleter のセットアップ
#########################################
echo "◆ Step 3: Roblox Data Auto Deleter を /opt にクローンします。"
cd /opt
if [ ! -d "roblox-data-auto-deleter" ]; then
  git clone https://github.com/roblox-jp-dev/roblox-auto-data-deleter.git
fi
cd roblox-auto-data-deleter

echo "◆ npm install を実行します。"
npm install

echo "◆ 認証用秘密鍵を生成します (npx auth secret)。"
echo "y" | npx auth secret

echo "◆ .env.local を生成します。"
AUTH_SECRET=$(openssl rand -hex 32)
cat <<EOF > .env.local
AUTH_PASSWORD=${AUTH_PASSWORD}
AUTH_SECRET=${AUTH_SECRET}
NEXTAUTH_URL=https://${DOMAIN}
ALLOWED_IP=${ALLOWED_IP}
MAX_LOGIN_ATTEMPTS=5
LOGIN_ATTEMPTS_TIMEOUT=10
EOF

echo "◆ npm run setup を実行します。"
npm run setup

#########################################
# 4. systemd サービスの作成 & 自動起動設定
#########################################
echo "◆ Step 4: systemd サービスを作成し、自動起動設定を行います。"
cat <<EOF > /etc/systemd/system/roblox-auto-data-deleter.service
[Unit]
Description=Roblox Auto Data Deleter
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/roblox-data-auto-deleter
Environment="NODE_OPTIONS=--max-old-space-size=512"
ExecStart=/usr/bin/npm run start
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now roblox-auto-data-deleter

#########################################
# 5. Nginx リバースプロキシ設定 (HTTP)
#########################################
echo "◆ Step 5: Nginx のリバースプロキシ設定を作成します。"
cat <<EOF > /etc/nginx/conf.d/roblox-auto-data-deleter.conf
server {
    listen 80;
    server_name ${DOMAIN};

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }

    # HSTS 設定
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
}
EOF

nginx -t && systemctl reload nginx

#########################################
# 6. pip で Certbot のインストール
#########################################
echo "◆ Step 6: pip で Certbot をインストールします。"
pip3 install --upgrade pip
pip3 install certbot certbot-nginx

# certbot コマンドを /usr/bin/certbot で呼び出せるようにリンク
ln -s /usr/local/bin/certbot /usr/bin/certbot 2>/dev/null || true

#########################################
# 7. ファイアウォール設定
#########################################
echo "◆ Step 7: firewalld を使って 80/443 ポートを開放します。"
dnf install -y firewalld || true
systemctl enable --now firewalld || true
firewall-cmd --add-service=http --permanent || true
firewall-cmd --add-service=https --permanent || true
firewall-cmd --reload || true

#########################################
# 8. Let’s Encrypt 証明書の取得 & Nginx への反映
#########################################
echo "◆ Step 8: Let’s Encrypt 証明書を取得し、Nginx を HTTPS 化します。"
certbot --nginx -d ${DOMAIN} --non-interactive --agree-tos --email ${EMAIL}

#########################################
# 9. cronジョブで自動更新
#########################################
echo '0 3 * * * /usr/bin/certbot renew --quiet' > /etc/cron.d/certbot_renew

#########################################
# 完了メッセージ
#########################################
echo "◆ インストール完了!"
echo "---------------------------------------------------"
echo ""
echo "  HTTPS で下記ドメインにアクセスしてください。"
echo "   => https://${DOMAIN}"
echo ""
echo "---------------------------------------------------"

メモ帳で、この各種入力項目の部分を編集してください。

#########################################
# ★ 各種入力項目
#########################################
DOMAIN="v000-000-000-000.aaa.static.cnode.jp"      # ドメイン名
EMAIL="example@roblog.jp"                # メールアドレス(Cert Bot用)
ALLOWED_IP="0.0.0.0, 0.0.0.0"  # ダッシュボードにログインできるIPアドレス

それぞれ説明すると:
・DOMAIN:ConoHaでコピーしたサブドメイン or DNS設定済みのドメイン
・EMAIL:自分のメールアドレス
・ALLOWED_IP:WebダッシュボードにログインできるIPアドレス。カンマ区切りで複数指定可能。0.0.0.0が含まれている場合、全IPを許可。(※セキュリティ的に非推奨。)

置き換えができたら、Shift+Insertでコマンドを貼り付けた後、Enterを押して実行します。

このような入力画面になると思うので、ログイン用パスワードを設定します。入力は非表示です。9文字以上で記号を含む必要があります。
何文字打っても打っていないように見えますが、打てているので安心してください。

確認用で、再度パスワードを入力します。

パスワードの設定に成功したら、自動で次のステップに進みます。
ここまで終えたらあとは何も触らず、15~20分ぐらい放置します。タイマーでもセットして待っておきましょう。

ここまで来たらあとは完了まで放置するだけです。(上手くいけば。)

「インストール完了!」の文字が表示されたら完了です。ブラウザにサブドメインを貼り付けてアクセスし、無事にページが表示されたら成功です。

おつかれさまでした!案外あっさりと終わりましたね。

もし上手くいかない場合は、Roblox好きの集いのDiscordサーバーの「スタジオ雑談」チャンネルで質問していただければ対応します。(せっかくVPS契約したのに使えない、なんてことになるのは公開した側としても悲しいです)

次は何をすればいい?

次は、サイトにアクセスして、Webhookやデータストア用のAPIキーの設定などをします。

紹介編のところに載せていますので、参考にしてみてください。

それでは、構築編はここまで。最後までご覧いただきありがとうございました。