このガイドでは、Intel N100搭載のミニPCにUbuntu 24.04 LTSをインストールし、5〜6人向けのMinecraft Java Editionサーバーを24時間稼働させる方法を解説します。Linux初心者の方でも理解できるよう、各コマンドの意味と実行内容を丁寧に説明していきます。
# 1. Etcherをダウンロード
# https://etcher.balena.io/ からダウンロード
# 2. Ubuntu Server 24.04 LTSをダウンロード
# https://ubuntu.com/download/server から最新版をダウンロード
# 3. Etcherで書き込み
# - Etcherを起動
# - ISOファイルを選択
# - USBドライブを選択
# - "Flash"をクリック# 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. 言語選択
→ "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"インストール完了後、再起動してログインします:
# システムの更新
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# SSH設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# SSH設定の編集
sudo nano /etc/ssh/sshd_config以下の設定を追加・変更します:
# ポート番号を変更(セキュリティ向上のため)
Port 2222
# rootログインを無効化
PermitRootLogin no
# パスワード認証を一時的に有効(後で無効化)
PasswordAuthentication yes
# 認証試行回数を制限
MaxAuthTries 3
# ログイン猶予時間
LoginGraceTime 30
# 空のパスワードを禁止
PermitEmptyPasswords no設定を適用:
# SSH設定をテスト
sudo sshd -t
# 問題なければSSHを再起動
sudo systemctl restart sshmacOSで以下を実行:
# SSHキーペアを生成(まだ作成していない場合)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 公開鍵をサーバーに転送
ssh-copy-id -p 2222 ユーザー名@サーバーのIPアドレス
# 接続テスト
ssh -p 2222 ユーザー名@サーバーのIPアドレスキー認証が動作したら、パスワード認証を無効化:
# サーバー側で実行
sudo nano /etc/ssh/sshd_config
# 以下に変更
PasswordAuthentication no
# SSHを再起動
sudo systemctl restart ssh# 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# Fail2banをインストール
sudo apt install -y fail2ban
# 設定ファイルを作成
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# SSH用の設定を編集
sudo nano /etc/fail2ban/jail.local以下の設定を追加:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 10m
bantime = 1w# Fail2banを起動
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 状態確認
sudo fail2ban-client status sshd最新のMinecraft(1.20.5以降)はJava 21が必要です:
# Java 21をインストール
sudo apt update
sudo apt install -y openjdk-21-jre-headless
# バージョン確認
java -version
# 出力例:openjdk version "21.0.x"セキュリティのため専用ユーザーを作成:
# 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/minecraftPaperは公式サーバーより高性能です:
# 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.txtserver.propertiesを編集:
nano server.properties5〜6人向けの推奨設定:
# 基本設定
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 # リモートコンソール無効最適化されたJVMフラグを使用:
# 起動スクリプトを作成
nano ~/start.sh以下の内容を記述:
#!/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# 実行権限を付与
chmod +x ~/start.sh
# テスト起動
./start.sh
# Ctrl+Cで停止24時間稼働のため、パフォーマンスモードに固定:
# 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# 現在のメモリ状況を確認
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# 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# サービスファイルを作成
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# サービスを有効化(起動時に自動実行)
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 # 再起動# 便利な管理コマンドを作成
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-*# 現在のネットワーク設定を確認
ip addr show
# Netplanの設定を編集
sudo nano /etc/netplan/00-installer-config.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]# 設定を適用
sudo netplan apply# Duck DNSを使用する例
# https://www.duckdns.org でアカウント作成後
# 更新スクリプトを作成
mkdir ~/duckdns
nano ~/duckdns/duck.sh#!/bin/bash
echo url="https://www.duckdns.org/update?domains=あなたのドメイン&token=あなたのトークン&ip=" | curl -k -o ~/duckdns/duck.log -K -# 実行権限を付与
chmod +x ~/duckdns/duck.sh
# cronで5分ごとに実行
crontab -e
# 追加: */5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1# バックアップスクリプトを作成
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# 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# 監視スクリプトを作成
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 -# ログを確認
sudo journalctl -u minecraft -n 50
# Javaバージョンを確認
java -version
# 権限を確認
ls -la /opt/minecraft/server/
# 権限を修正
sudo chown -R minecraft:minecraft /opt/minecraft/# メモリ使用状況を確認
free -h
htop
# サービス設定でメモリ割り当てを調整
sudo nano /etc/systemd/system/minecraft.service
# Xms と Xmx の値を減らす(例:-Xms4G -Xmx4G)
sudo systemctl daemon-reload
sudo systemctl restart minecraft# ポートが開いているか確認
sudo ss -tlnp | grep 25565
# ファイアウォールを確認
sudo ufw status
# 外部からの接続をテスト
# 別のPCから: telnet サーバーIP 25565# サーバーのチック速度を確認(ゲーム内)
/tps
# 20に近いほど良好。15以下は要対策
# server.propertiesで調整
view-distance=6 # さらに減らす
simulation-distance=4 # さらに減らす# バックアップから復旧
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# 自動セキュリティアップデートを設定
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# 手動でセキュリティアップデートを確認
sudo apt update
sudo apt list --upgradable# サーバーコンソールで実行
whitelist on
whitelist add プレイヤー名
# または whitelist.json を直接編集
nano /opt/minecraft/server/whitelist.json# 管理者権限を付与
op プレイヤー名
# ops.json で権限レベルを設定
# レベル4: 全権限
# レベル3: ほとんどのコマンド
# レベル2: ゲームモード変更など
# レベル1: バイパス権限のみこのガイドに従うことで、Intel N100搭載のミニPCで安定したMinecraftサーバーを構築できます。
楽しいMinecraftライフをお過ごしください!