0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Minecraft 統合版自動アップデートスクリプト

Last updated at Posted at 2025-10-25

Minecraft 統合版自動アップデートスクリプト

元々限定公開していたものを全体公開に変更しました。
構築自体は1年以上も前なので、どのサイト見ながら構築したのか忘れてしまった・・・
AIに食わすなりして、カスタマイズしてください。


そろそろ年末年始でMinecract統合版のサーバ需要が出てくる気がしたので作った。
※公式サイトはコロコロリンクが変わって探すのが大変なので、非公式Wikiからリンクを取得するように変更しました。

  • ファイル作成

    vi /opt/minecraft/auto-download.sh
    
  • auto-download.sh 記述内容

    #!/bin/bash
    
    SERVER_WIKI_URL="https://minecraft.wiki/w/Bedrock_Dedicated_Server"
    
    # CUIでHTMLからLinux版のダウンロードリンクを抽出し、最新のものを選択
    DOWNLOAD_URL=$(curl -s "${SERVER_WIKI_URL}" | grep -oP 'href="https://[^"]+/bin-linux/[^"]+\.      zip' | sed -e 's/href="//g' | sort -V | tail -n 1)
    
    # URLが存在するか確認
    if [ -z "$DOWNLOAD_URL" ]; then
        echo "ダウンロードURLが見つかりませんでした。サイトのHTML構造が変わった可能性があります。      "
        exit 1
    fi
    
    echo "ダウンロードを開始します: ${DOWNLOAD_URL}"
    
    # 抽出したURLを使ってダウンロード
    wget -P /usr/local/games/minecraft/zips "${DOWNLOAD_URL}"
    
    echo "ダウンロードが完了しました。"
    
  • ファイル作成

    vi /opt/minecraft/auto-update.sh
    
  • auto-update.sh 記述内容

    #!/bin/bash
    
    # ===============================
    # ダウンロードスクリプト実行
    # ===============================
    /opt/minecraft/auto-download.sh
    
    # ===============================
    # 変数宣言
    # ===============================
    MC_WORK_DIR="/usr/local/games/minecraft"
    MC_BKUP_DIR="${MC_WORK_DIR}/backups"
    MC_ZIP_DIR="${MC_WORK_DIR}/zips"
    MC_LOG_DIR="/var/log"
    LOG_FILE_NAME="$(date '+%Y%m%d')_minecraft_auto_status_CHK.log"
    MC_LOG_FILE="${MC_LOG_DIR}/${LOG_FILE_NAME}"
    
    # 最新のZIPファイル名を取得
    LATEST_ZIP_FILE=$(ls -1t "${MC_ZIP_DIR}"/*.zip | head -n 1)
    # 拡張子を除いたファイル名を取得
    MC_ZIP_FILE_NO_EXT=$(basename "${LATEST_ZIP_FILE}" .zip)
    # 解凍先ディレクトリ
    UNZIP_DIR="/tmp/${MC_ZIP_FILE_NO_EXT}"
    
    # ===============================
    # 解凍
    # ===============================
    mkdir -p "${UNZIP_DIR}"
    unzip -q "${LATEST_ZIP_FILE}" -d "${UNZIP_DIR}"
    
    # ===============================
    # アップデート作業
    # ===============================
    echo "+--- Server Update Start ---+" | sudo tee "${MC_LOG_FILE}"
    echo "+--- Server Status Check ---+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl status minecraft >> "${MC_LOG_FILE}"
    
    echo "+------- Server Stop -------+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl stop minecraft >> "${MC_LOG_FILE}"
    
    echo "+--- Server Status Check ---+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl status minecraft >> "${MC_LOG_FILE}"
    
    # ===============================
    # バックアップとデータ移行
    # ===============================
    # 現在のサーバーディレクトリをバックアップ
    # バックアップ先のディレクトリ名に日付を追加
    BKUP_SERVER_DIR="${MC_BKUP_DIR}/${MC_ZIP_FILE_NO_EXT}_$(date '+%Y%m%d')"
    sudo mkdir -p "${BKUP_SERVER_DIR}"
    sudo mv "${MC_WORK_DIR}/bedrock-server" "${BKUP_SERVER_DIR}"
    
    # 新しいサーバーを配置
    sudo mv "${UNZIP_DIR}" "${MC_WORK_DIR}/bedrock-server"
    
    # 必要なデータのリストア
    sudo cp -a "${BKUP_SERVER_DIR}/bedrock-server/worlds/" "${MC_WORK_DIR}/bedrock-server/"
    sudo cp -a "${BKUP_SERVER_DIR}/bedrock-server/server.properties" "${MC_WORK_DIR}/      bedrock-server/"
    sudo cp -a "${BKUP_SERVER_DIR}/bedrock-server/permissions.json" "${MC_WORK_DIR}/      bedrock-server/"
    sudo cp -a "${BKUP_SERVER_DIR}/bedrock-server/allowlist.json" "${MC_WORK_DIR}/bedrock-server/      "
    
    # ===============================
    # サーバ起動
    # ===============================
    echo "+--- Server Status Check ---+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl status minecraft >> "${MC_LOG_FILE}"
    
    echo "+------ Server Start -------+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl start minecraft >> "${MC_LOG_FILE}"
    
    echo "+--- Server Status Check ---+" | sudo tee -a "${MC_LOG_FILE}"
    sudo systemctl status minecraft >> "${MC_LOG_FILE}"
    
    echo "+---- Server Update End ----+" | sudo tee -a "${MC_LOG_FILE}"
    
    # ===============================
    # 一時ディレクトリのクリーンアップ
    # ===============================
    sudo rm -rf "${UNZIP_DIR}"
    
  • アクセス権限変更

    chmod 755 /opt/minecraft/auto-*
    
  • cron設定

    00 3 * * * /opt/minecraft/auto-update.sh > /var/log/minecraft/`date '+/%Y/%m/%d'`_auto_update.log
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?