Content is user-generated and unverified.

Ubuntu 24.04 LTSでMinecraft Java Editionサーバーを構築する完全ガイド

はじめに

このガイドでは、Intel N100搭載のミニPCにUbuntu 24.04 LTSをインストールし、5〜6人向けのMinecraft Java Editionサーバーを24時間稼働させる方法を解説します。Linux初心者の方でも理解できるよう、各コマンドの意味と実行内容を丁寧に説明していきます。

対象ハードウェア仕様

  • CPU: Intel N100(4コア、最大3.4GHz)
  • メモリ: 16GB DDR4
  • ストレージ: 512GB SSD
  • 想定プレイヤー数: 5〜6人
  • 稼働時間: 24時間365日

必要な準備物

  • 8GB以上のUSBメモリ
  • LANケーブル
  • USBキーボード・マウス
  • MacBook(作業用)

第1章:Ubuntu 24.04 LTSのインストール

1.1 インストールUSBの作成(macOSから)

方法1:Etcherを使用(推奨)

bash
# 1. Etcherをダウンロード
# https://etcher.balena.io/ からダウンロード

# 2. Ubuntu Server 24.04 LTSをダウンロード
# https://ubuntu.com/download/server から最新版をダウンロード

# 3. Etcherで書き込み
# - Etcherを起動
# - ISOファイルを選択
# - USBドライブを選択
# - "Flash"をクリック

方法2:コマンドラインを使用

bash
# ISOファイルの場所へ移動
cd ~/Downloads

# USBドライブを確認(diskXの部分を確認)
diskutil list

# USBドライブをアンマウント(diskXを実際の番号に置き換え)
diskutil unmountDisk /dev/diskX

# ISOをUSBに書き込み
sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/rdiskX bs=1m

# 完了後、USBを取り出し
diskutil eject /dev/diskX

1.2 Ubuntu 24.04 LTSのインストール

BIOS/UEFI設定

  1. ミニPCにUSBを挿入し、電源を入れる
  2. 起動時にF10、F12、またはDELキーを押してBIOSに入る
  3. Boot順序でUSBを最優先に設定
  4. Secure Bootを無効化(Linuxインストール用)
  5. 設定を保存して再起動

インストール手順

bash
# インストーラーが起動したら以下を選択

1. 言語選択
   → "English" を選択(日本語環境は後で設定)

2. キーボードレイアウト
   → "Japanese" → "Japanese" を選択

3. ネットワーク設定
   → DHCPで自動設定(後で固定IPに変更可能)

4. プロキシ設定
   → 空欄のままEnter(通常は不要)

5. ストレージ設定
   → "Use an entire disk" を選択
   → 対象ディスクを選択
   → "Done" → "Continue" で確定

6. ユーザー設定
   名前: あなたの名前
   サーバー名: minecraft-server
   ユーザー名: 任意のユーザー名
   パスワード: 強固なパスワードを設定

7. SSH設定
   → "Install OpenSSH server" にチェック

8. 追加パッケージ
   → 何も選択せずに "Done"

1.3 初期設定とアップデート

インストール完了後、再起動してログインします:

bash
# システムの更新
sudo apt update && sudo apt upgrade -y

# 説明:
# apt update - パッケージリストを最新に更新
# apt upgrade - インストール済みパッケージを最新版に更新
# -y - 全ての確認に自動的に「yes」と答える

# 必要な基本ツールのインストール
sudo apt install -y curl wget vim htop tree unzip software-properties-common

# 説明:各ツールの用途
# curl, wget - ファイルのダウンロード用
# vim - テキストエディタ
# htop - システムモニター
# tree - ディレクトリ構造表示
# unzip - 圧縮ファイル解凍
# software-properties-common - リポジトリ管理

# タイムゾーンを日本に設定
sudo timedatectl set-timezone Asia/Tokyo

# 日本語環境の設定
sudo apt install -y language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8

第2章:SSHサーバーの設定とセキュリティ強化

2.1 SSHの基本設定

bash
# SSH設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

# SSH設定の編集
sudo nano /etc/ssh/sshd_config

以下の設定を追加・変更します:

bash
# ポート番号を変更(セキュリティ向上のため)
Port 2222

# rootログインを無効化
PermitRootLogin no

# パスワード認証を一時的に有効(後で無効化)
PasswordAuthentication yes

# 認証試行回数を制限
MaxAuthTries 3

# ログイン猶予時間
LoginGraceTime 30

# 空のパスワードを禁止
PermitEmptyPasswords no

設定を適用:

bash
# SSH設定をテスト
sudo sshd -t

# 問題なければSSHを再起動
sudo systemctl restart ssh

2.2 SSHキー認証の設定(macOSから)

macOSで以下を実行:

bash
# SSHキーペアを生成(まだ作成していない場合)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 公開鍵をサーバーに転送
ssh-copy-id -p 2222 ユーザー名@サーバーのIPアドレス

# 接続テスト
ssh -p 2222 ユーザー名@サーバーのIPアドレス

キー認証が動作したら、パスワード認証を無効化:

bash
# サーバー側で実行
sudo nano /etc/ssh/sshd_config

# 以下に変更
PasswordAuthentication no

# SSHを再起動
sudo systemctl restart ssh

2.3 ファイアウォール(UFW)の設定

bash
# UFWをインストール(通常はプリインストール済み)
sudo apt install -y ufw

# デフォルトポリシーを設定
sudo ufw default deny incoming  # 受信を全て拒否
sudo ufw default allow outgoing  # 送信を全て許可

# SSHポートを許可
sudo ufw allow 2222/tcp comment 'SSH'

# Minecraftポートを許可
sudo ufw allow 25565/tcp comment 'Minecraft'
sudo ufw allow 25565/udp comment 'Minecraft'

# ファイアウォールを有効化
sudo ufw enable

# 状態確認
sudo ufw status verbose

2.4 Fail2banの設定(不正アクセス対策)

bash
# Fail2banをインストール
sudo apt install -y fail2ban

# 設定ファイルを作成
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# SSH用の設定を編集
sudo nano /etc/fail2ban/jail.local

以下の設定を追加:

ini
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 10m
bantime = 1w
bash
# Fail2banを起動
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 状態確認
sudo fail2ban-client status sshd

第3章:Minecraft Java Editionサーバーのセットアップ

3.1 Java 21のインストール

最新のMinecraft(1.20.5以降)はJava 21が必要です:

bash
# Java 21をインストール
sudo apt update
sudo apt install -y openjdk-21-jre-headless

# バージョン確認
java -version
# 出力例:openjdk version "21.0.x"

3.2 Minecraftサーバー用ユーザーの作成

セキュリティのため専用ユーザーを作成:

bash
# minecraftユーザーを作成
sudo adduser --system --home /opt/minecraft minecraft
sudo groupadd minecraft
sudo usermod -aG minecraft minecraft

# ディレクトリを作成
sudo mkdir -p /opt/minecraft/server
sudo mkdir -p /opt/minecraft/backups
sudo chown -R minecraft:minecraft /opt/minecraft

3.3 Paperサーバーのインストール(推奨)

Paperは公式サーバーより高性能です:

bash
# minecraftユーザーに切り替え
sudo su - minecraft

# サーバーディレクトリに移動
cd /opt/minecraft/server

# 最新のPaperをダウンロード
wget https://api.papermc.io/v2/projects/paper/versions/1.21.6/builds/latest/downloads/paper-1.21.6-latest.jar -O server.jar

# 初回起動(EULAファイル生成用)
java -jar server.jar --nogui

# EULA(利用規約)に同意
echo "eula=true" > eula.txt

3.4 サーバー設定の最適化

server.propertiesを編集:

bash
nano server.properties

5〜6人向けの推奨設定:

properties
# 基本設定
max-players=6                    # 最大プレイヤー数
difficulty=normal               # 難易度
gamemode=survival              # ゲームモード
pvp=true                       # PvP許可
white-list=true                # ホワイトリスト有効

# パフォーマンス設定
view-distance=8                # 描画距離(デフォルト10から削減)
simulation-distance=6          # シミュレーション距離
network-compression-threshold=64  # ネットワーク圧縮

# サーバー情報
motd=Private Server for Friends  # サーバー説明
server-port=25565              # ポート番号

# セキュリティ
online-mode=true               # 正規版チェック
enable-rcon=false              # リモートコンソール無効

3.5 起動スクリプトの作成

最適化されたJVMフラグを使用:

bash
# 起動スクリプトを作成
nano ~/start.sh

以下の内容を記述:

bash
#!/bin/bash
# N100向け最適化済み起動スクリプト

java -Xms6G -Xmx6G \
     -XX:+UseG1GC \
     -XX:+ParallelRefProcEnabled \
     -XX:MaxGCPauseMillis=200 \
     -XX:+UnlockExperimentalVMOptions \
     -XX:+DisableExplicitGC \
     -XX:+AlwaysPreTouch \
     -XX:G1NewSizePercent=30 \
     -XX:G1MaxNewSizePercent=40 \
     -XX:G1HeapRegionSize=8M \
     -XX:G1ReservePercent=20 \
     -jar server.jar --nogui
bash
# 実行権限を付与
chmod +x ~/start.sh

# テスト起動
./start.sh
# Ctrl+Cで停止

第4章:システム最適化(Intel N100向け)

4.1 CPUガバナーの設定

24時間稼働のため、パフォーマンスモードに固定:

bash
# cpufrequtilsをインストール
sudo apt install -y cpufrequtils

# 現在のガバナーを確認
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# パフォーマンスモードに設定
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils

# サービスを作成して永続化
sudo tee /etc/systemd/system/cpu-performance.service << 'EOF'
[Unit]
Description=CPU Performance Governor
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/cpufreq-set -g performance
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

# サービスを有効化
sudo systemctl enable cpu-performance.service
sudo systemctl start cpu-performance.service

4.2 メモリとスワップの最適化

bash
# 現在のメモリ状況を確認
free -h

# 4GBのスワップファイルを作成(16GBメモリの場合)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永続化
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# システム設定を最適化
sudo tee -a /etc/sysctl.conf << 'EOF'
# Minecraftサーバー向け最適化
vm.swappiness = 1              # スワップ使用を最小限に
vm.dirty_ratio = 15            # メモリ書き込み閾値
vm.dirty_background_ratio = 5  # バックグラウンド書き込み開始

# ネットワーク最適化
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
EOF

# 設定を適用
sudo sysctl -p

4.3 SSDの最適化

bash
# TRIMを有効化(SSDの性能維持)
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

# 毎日実行するよう設定
sudo mkdir -p /etc/systemd/system/fstrim.timer.d
sudo tee /etc/systemd/system/fstrim.timer.d/override.conf << 'EOF'
[Timer]
OnCalendar=
OnCalendar=daily
EOF

# タイマーを再起動
sudo systemctl daemon-reload
sudo systemctl restart fstrim.timer

第5章:24時間稼働の設定

5.1 Systemdサービスの作成

bash
# サービスファイルを作成
sudo tee /etc/systemd/system/minecraft.service << 'EOF'
[Unit]
Description=Minecraft Server
After=network.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server

# 起動コマンド(メモリ設定は環境に応じて調整)
ExecStart=/usr/bin/java -Xms6G -Xmx6G \
    -XX:+UseG1GC \
    -XX:+ParallelRefProcEnabled \
    -XX:MaxGCPauseMillis=200 \
    -XX:+UnlockExperimentalVMOptions \
    -XX:+DisableExplicitGC \
    -XX:+AlwaysPreTouch \
    -jar server.jar --nogui

# 停止時の処理
ExecStop=/bin/kill -SIGTERM $MAINPID
TimeoutStopSec=60

# 自動再起動
Restart=on-failure
RestartSec=10

# セキュリティ設定
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/opt/minecraft

[Install]
WantedBy=multi-user.target
EOF

5.2 サービスの有効化と管理

bash
# サービスを有効化(起動時に自動実行)
sudo systemctl daemon-reload
sudo systemctl enable minecraft.service

# サービスを開始
sudo systemctl start minecraft.service

# 状態確認
sudo systemctl status minecraft.service

# ログの確認
sudo journalctl -u minecraft -f

# 管理用コマンド
sudo systemctl stop minecraft     # 停止
sudo systemctl restart minecraft  # 再起動

5.3 管理スクリプトの作成

bash
# 便利な管理コマンドを作成
sudo tee /usr/local/bin/mc-console << 'EOF'
#!/bin/bash
# Minecraftコンソールに接続
sudo -u minecraft screen -r minecraft
EOF

sudo tee /usr/local/bin/mc-backup << 'EOF'
#!/bin/bash
# 手動バックアップ
systemctl stop minecraft
cd /opt/minecraft/server
tar -czf /opt/minecraft/backups/manual-$(date +%Y%m%d-%H%M%S).tar.gz world*
systemctl start minecraft
echo "バックアップ完了"
EOF

# 実行権限を付与
sudo chmod +x /usr/local/bin/mc-*

第6章:ネットワーク設定とポート開放

6.1 固定IPアドレスの設定

bash
# 現在のネットワーク設定を確認
ip addr show

# Netplanの設定を編集
sudo nano /etc/netplan/00-installer-config.yaml

以下のように設定:

yaml
network:
  version: 2
  ethernets:
    enp1s0:  # インターフェース名は環境により異なる
      addresses:
        - 192.168.1.100/24  # 希望の固定IP
      routes:
        - to: default
          via: 192.168.1.1   # ルーターのIP
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
bash
# 設定を適用
sudo netplan apply

6.2 ルーターでのポート開放

  1. ルーター管理画面にアクセス(通常は192.168.1.1)
  2. ポート転送/バーチャルサーバー設定を開く
  3. 以下を設定:
    • プロトコル: TCP/UDP
    • 外部ポート: 25565
    • 内部ポート: 25565
    • 内部IP: 192.168.1.100(固定したIP)

6.3 ダイナミックDNS(DDNS)の設定

bash
# Duck DNSを使用する例
# https://www.duckdns.org でアカウント作成後

# 更新スクリプトを作成
mkdir ~/duckdns
nano ~/duckdns/duck.sh
bash
#!/bin/bash
echo url="https://www.duckdns.org/update?domains=あなたのドメイン&token=あなたのトークン&ip=" | curl -k -o ~/duckdns/duck.log -K -
bash
# 実行権限を付与
chmod +x ~/duckdns/duck.sh

# cronで5分ごとに実行
crontab -e
# 追加: */5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

第7章:バックアップとメンテナンス

7.1 自動バックアップスクリプト

bash
# バックアップスクリプトを作成
sudo tee /opt/minecraft/backup.sh << 'EOF'
#!/bin/bash
# Minecraftワールド自動バックアップ

BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
DATE=$(date +%Y%m%d-%H%M%S)
KEEP_DAYS=7

# バックアップディレクトリ作成
mkdir -p $BACKUP_DIR

# サーバーに通知
screen -S minecraft -p 0 -X stuff "say バックアップを開始します...$(printf '\r')"
sleep 2

# 自動保存を一時停止
screen -S minecraft -p 0 -X stuff "save-off$(printf '\r')"
screen -S minecraft -p 0 -X stuff "save-all$(printf '\r')"
sleep 10

# バックアップ実行
cd $SERVER_DIR
tar -czf "$BACKUP_DIR/world-$DATE.tar.gz" world* *.json *.properties

# 自動保存を再開
screen -S minecraft -p 0 -X stuff "save-on$(printf '\r')"
screen -S minecraft -p 0 -X stuff "say バックアップ完了!$(printf '\r')"

# 古いバックアップを削除
find $BACKUP_DIR -name "world-*.tar.gz" -mtime +$KEEP_DAYS -delete

echo "$(date): バックアップ完了 - world-$DATE.tar.gz"
EOF

# 実行権限付与
sudo chmod +x /opt/minecraft/backup.sh
sudo chown minecraft:minecraft /opt/minecraft/backup.sh

7.2 定期メンテナンスの設定

bash
# cronでスケジュール設定
sudo crontab -u minecraft -e

# 以下を追加:
# 毎日午前4時にバックアップ
0 4 * * * /opt/minecraft/backup.sh >> /opt/minecraft/backup.log 2>&1

# 毎週日曜日午前5時にサーバー再起動
0 5 * * 0 systemctl restart minecraft

7.3 システム監視スクリプト

bash
# 監視スクリプトを作成
sudo tee /usr/local/bin/mc-monitor << 'EOF'
#!/bin/bash
# Minecraftサーバー監視

LOG="/var/log/minecraft-monitor.log"

# サーバープロセスチェック
if ! pgrep -f "minecraft" > /dev/null; then
    echo "$(date): サーバーダウンを検出、再起動します" >> $LOG
    systemctl restart minecraft
fi

# ディスク容量チェック
DISK_USAGE=$(df -h /opt/minecraft | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
    echo "$(date): 警告: ディスク使用率 ${DISK_USAGE}%" >> $LOG
fi

# メモリ使用率チェック
MEM_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ $MEM_USAGE -gt 90 ]; then
    echo "$(date): 警告: メモリ使用率 ${MEM_USAGE}%" >> $LOG
fi
EOF

sudo chmod +x /usr/local/bin/mc-monitor

# 5分ごとに実行
echo "*/5 * * * * /usr/local/bin/mc-monitor" | sudo crontab -

第8章:トラブルシューティング

8.1 よくある問題と解決方法

サーバーが起動しない

bash
# ログを確認
sudo journalctl -u minecraft -n 50

# Javaバージョンを確認
java -version

# 権限を確認
ls -la /opt/minecraft/server/

# 権限を修正
sudo chown -R minecraft:minecraft /opt/minecraft/

メモリ不足エラー

bash
# メモリ使用状況を確認
free -h
htop

# サービス設定でメモリ割り当てを調整
sudo nano /etc/systemd/system/minecraft.service
# Xms と Xmx の値を減らす(例:-Xms4G -Xmx4G)

sudo systemctl daemon-reload
sudo systemctl restart minecraft

接続できない

bash
# ポートが開いているか確認
sudo ss -tlnp | grep 25565

# ファイアウォールを確認
sudo ufw status

# 外部からの接続をテスト
# 別のPCから: telnet サーバーIP 25565

8.2 パフォーマンスチューニング

bash
# サーバーのチック速度を確認(ゲーム内)
/tps

# 20に近いほど良好。15以下は要対策

# server.propertiesで調整
view-distance=6          # さらに減らす
simulation-distance=4    # さらに減らす

8.3 ワールドデータの復旧

bash
# バックアップから復旧
sudo systemctl stop minecraft
cd /opt/minecraft/server
mv world world_corrupted
tar -xzf /opt/minecraft/backups/最新のバックアップ.tar.gz
sudo chown -R minecraft:minecraft world*
sudo systemctl start minecraft

第9章:セキュリティのベストプラクティス

9.1 定期的なセキュリティアップデート

bash
# 自動セキュリティアップデートを設定
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

# 手動でセキュリティアップデートを確認
sudo apt update
sudo apt list --upgradable

9.2 ホワイトリストの設定

bash
# サーバーコンソールで実行
whitelist on
whitelist add プレイヤー名

# または whitelist.json を直接編集
nano /opt/minecraft/server/whitelist.json

9.3 オペレーター権限の管理

bash
# 管理者権限を付与
op プレイヤー名

# ops.json で権限レベルを設定
# レベル4: 全権限
# レベル3: ほとんどのコマンド
# レベル2: ゲームモード変更など
# レベル1: バイパス権限のみ

まとめ

このガイドに従うことで、Intel N100搭載のミニPCで安定したMinecraftサーバーを構築できます。

重要なポイント

  • セキュリティ: SSH認証、ファイアウォール、Fail2banで多層防御
  • パフォーマンス: Intel N100に最適化された設定で快適なプレイ環境
  • 安定性: Systemdによる自動起動と監視で24時間稼働
  • データ保護: 定期的な自動バックアップで安心

定期メンテナンスチェックリスト

  • システムアップデート(週1回)
  • バックアップの確認(週1回)
  • ログファイルの確認(月1回)
  • ディスク容量の確認(月1回)
  • Minecraftサーバーのアップデート(新バージョンリリース時)

楽しいMinecraftライフをお過ごしください!

Content is user-generated and unverified.
    Ubuntu 24.04 LTS: Complete Minecraft Java Edition Server Setup Guide | Claude