本文へスキップ

Discord.js ボットをデプロイ

Daki Hosting で Discord.js (Node.js) ボットをデプロイするためのステップバイステップガイド。

このガイドでは、Daki Hosting で Discord.js ボットをデプロイする手順を説明します — サーバーの作成から、ボットのオンライン化、トークンを安全に読み込むまで。

このページで学べること

  • ボット用の Node.js サーバーを作成する方法
  • コードをアップロードする方法
  • インストールコマンド、起動コマンド、Docker イメージ を設定する方法
  • .env ファイルでボットトークンを安全に設定する方法
  • ボットを起動して、動作を確認する方法

前提条件

  • Daki アカウント(Free Tier または有料)— アカウントの作成 を参照
  • ボットトークン を持つ Discord ボット。Discord Developer Portal で作成します
  • discord.js と dotenv を依存関係に含む package.json を含む、ボットのソースコード

Discord ボットは Discord のサーバーへ外向きに接続し、受信ポートを必要としません。そのため Discord ボットは Free Tier と有料プランの両方で動作します。ボットが HTTP リクエストも処理する場合(スラッシュコマンドのインタラクションや Webhook など)は、公開ポートは有料プランでのみ利用できるため、有料プランが必要です。ネットワークと割り当て を参照してください。


デプロイ手順

  1. Node.js サーバーを作成

    1. free.daki.cc の Free Tier Dashboard、または billing.daki.cc の Billing Panel にログインします。
    2. 新しいサーバーを作成し、Node.js の egg を選択します。
    3. サーバーに名前を付けます(例: MyDiscordBot)。

    全手順は 最初のサーバーを作成 を参照してください。

  2. Portal にアクセス

    Portal に SSO でログインします(ダッシュボードの Account ページの Open Portal、または Billing Panel のサービスページから)。または portal.daki.cc に直接アクセスします。Portal の概要 を参照。

  3. ボットのコードをアップロード

    方法 A — ZIP でアップロード(最も簡単):

    1. プロジェクトフォルダーをローカルで .zip ファイルに圧縮します。
    2. Portal で Files タブを開き、Upload をクリックします。
    3. .zip を右クリックし、Extract をクリックします。

    方法 B — SFTP を使う(サイズ制限なし): Settings タブに表示される SFTP の認証情報で接続し、フォルダーを直接アップロードします。ファイルマネージャー を参照。

    node_modules フォルダーは、アップロードに含めないでください — インストールコマンドによって自動的にインストールされます。package.json と package-lock.json は必ず含めてください。

  4. Startup タブを設定

    Startup タブを開き、3 つの項目すべてを設定します:

    1. Docker Image — ボットに必要な Node.js のバージョンを選びます(例: Node.js 22 または Node.js 24)。迷ったら Node.js 24 LTS が安全なデフォルトです。EOL と表示されたバージョンは避けてください。セキュリティアップデートが提供されなくなっています。

    2. Install Command — 依存関係を自動でインストールするために、次のように設定します:

    Shell
    npm install

    3. Startup Command — ボットを起動するコマンドに設定します:

    • node index.js — エントリーファイルが index.js の場合
    • node bot.js — エントリーファイルが bot.js の場合
    • npm start — package.json に start スクリプトがある場合

    これらのコマンドは、プロジェクトの構成に合わせて自由に変更してください。

    詳細は 起動設定 を参照してください。

  5. .env ファイルでボットトークンを追加

    ボットが接続するには Discord トークンが必要です。ソースコードに残らないよう、トークンはサーバー上の .env ファイルに保存してください。

    1. Files タブで New File をクリックし、.env と名前を付けます。
    2. トークンを追加します:
      .env
      BOT_TOKEN=your_discord_bot_token_here
    3. Save をクリックします。

    ボットのコードでは、dotenv で読み込みます:

    JavaScript
    require('dotenv').config();
    
    const { Client, GatewayIntentBits } = require('discord.js');
    const client = new Client({ intents: [GatewayIntentBits.Guilds] });
    
    client.once('ready', () => {
        console.log(`Logged in as ${client.user.tag}`);
    });
    
    client.login(process.env.BOT_TOKEN);

    dotenv が package.json の依存関係に記載されていることを確認してください。そうすればインストールコマンドでインストールされます。

    .env ファイルの使い方の詳細は 環境変数 を参照してください。

  6. ボットを起動

    Console タブで Start をクリックします。正常に起動すると、ボットのログイン確認が表示されます:

    Text
    Logged in as MyBot#1234!

    エラーが表示された場合は、トラブルシューティング ガイドを確認してください。


よくある問題

Error: Cannot find module 'discord.js'

依存関係がインストールされていません。package.json に discord.js が依存関係として記載されているか、Startup タブのインストールコマンドが npm install に設定されているかを確認してください。サーバーを再起動するとインストールが実行されます。

Error: Cannot find module 'dotenv'

package.json の依存関係に dotenv を追加し、サーバーを再起動して再インストールしてください。

Error: An invalid token was provided

.env ファイルのボットトークンが間違っているか、存在しません。Files タブで .env を開き、値を確認してください。余分なスペース、引用符、改行がないことを確かめてください。

ボットは起動するが、すぐに切断される

通常は Gateway Intents が不足していることが原因です。Discord Developer Portal で、ボットアプリケーションに必要な特権インテント(例: Message Content Intent)を有効にし、コードでそれらをリクエストしていることを確認してください。

起動直後にサーバーがクラッシュする

Console タブを開き、エラーを読んでください。よくある原因: 起動コマンドの誤り(ファイル名のタイプミス)、Node.js のバージョンの誤り、または node_modules がないこと。トラブルシューティング を参照してください。


次のステップ