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?

More than 5 years have passed since last update.

Ubuntu 18.04 + systemd-nspawn + Forge で Minecraft Forgeサーバ

Posted at

Minecraft Forgeサーバを systemd-nspawn でコンテナ化する。

# ------------------------------------------------
# systemd-nspawn 設定 (コンテナ作成まで)
# ------------------------------------------------

    #------------------------------------------------
    # ubuntu 18.04 ホストで systemd-nspawn インストール
    #------------------------------------------------
    uname -vr

        5.3.0-26-generic #28~18.04.1-Ubuntu SMP Wed Dec 18 16:40:14 UTC 2019

    sudo apt install debootstrap systemd-container

    #------------------------------------------------
    # ubuntu 18.04 コンテナの用意
    #------------------------------------------------
    sudo debootstrap --arch amd64 bionic /var/lib/machines/minecraft http://archive.ubuntu.com/ubuntu
    
    #------------------------------------------------
    # ubuntu 18.04 コンテナの sources.list の修正
    #------------------------------------------------
    sudo cp -av /var/lib/machines/minecraft/etc/apt/sources.list{,.orig}
    egrep -v '^#|^$' /etc/apt/sources.list | sudo tee -a /var/lib/machines/minecraft/etc/apt/sources.list

    #------------------------------------------------
    # ubuntu 18.04 コンテナ を起動してユーザーを追加
    #------------------------------------------------
    sudo systemd-nspawn -D /var/lib/machines/minecraft
    passwd
    useradd -m -r minecraft
    passwd minecraft
    gpasswd -a minecraft sudo

    #------------------------------------------------
    # rootログインを許可させる場合は 
    # ubuntu 18.04 コンテナ の /etc/securetty に pts/0 を追記
    #------------------------------------------------
    cp -av /etc/securetty{,.orig}
    (echo ''
     echo 'pts/0') >> /etc/securetty
    diff -u /etc/securetty.orig /etc/securetty
    
        --- /etc/securetty.orig	2020-01-19 23:38:14.927697596 +0900
        +++ /etc/securetty	2020-01-19 23:40:20.372110886 +0900
        @@ -410,3 +410,7 @@
         ttySAC1
         ttySAC2
         ttySAC3
        +
        +pts/0

    #------------------------------------------------
    # ubuntu 18.04 コンテナの resolved.conf を修正
    #------------------------------------------------
    cp -av /etc/systemd/resolved.conf{,.orig}
    diff -u /etc/systemd/resolved.conf.orig /etc/systemd/resolved.conf

        --- /etc/systemd/resolved.conf.orig	2018-04-21 01:55:56.000000000 +0900
        +++ /etc/systemd/resolved.conf	2020-01-20 00:54:57.436523023 +0900
        @@ -12,7 +12,7 @@
         # See resolved.conf(5) for details
         [Resolve]
        -#DNS=
        +DNS=8.8.8.8, 8.8.4.4
         #FallbackDNS=
         #Domains=
         #LLMNR=no

    #------------------------------------------------
    # ubuntu 18.04 コンテナからログアウトする
    #------------------------------------------------
    exit

    #------------------------------------------------
    # ubuntu 18.04 コンテナを boot する
    #------------------------------------------------
    sudo systemd-nspawn -b -D /var/lib/machines/minecraft

    #------------------------------------------------
    # ubuntu 18.04 コンテナのホスト名変更
    #------------------------------------------------
    sudo hostnamectl set-hostname minecraft-server
    sudo cp -av /etc/hosts{,.orig}
    sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

    #------------------------------------------------
    # ubuntu 18.04 コンテナで使うものをインストール
    #------------------------------------------------
    sudo apt update
    sudo apt upgrade
    sudo apt install bind9-host wget psmisc vim lsof

    #------------------------------------------------
    # ubuntu 18.04 コンテナに OpenJDK 8 をインストール
    #------------------------------------------------
    sudo apt install software-properties-common
    add-apt-repository ppa:openjdk-r/ppa
    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt install openjdk-8-jdk

    #------------------------------------------------
    # Ctrl+] を3回連打して ubuntu 18.04 コンテナ 終了させる
    #------------------------------------------------
    Ctrl+]
    Ctrl+]
    Ctrl+]

    #------------------------------------------------
    #  ユニットファイルの作成
    #------------------------------------------------
    sudo systemctl enable machines.target
    sudo systemctl enable systemd-nspawn@devenv.service
    (echo '[Service]'
     echo 'ExecStart='
     echo 'ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --settings=override --machine=%i'
    ) | sudo SYSTEMD_EDITOR=tee systemctl edit systemd-nspawn@minecraft.service

        #------------------------------------------------
        # ユニットファイルはこのようになる
        #------------------------------------------------
        #マスタ
        /lib/systemd/system/systemd-nspawn@.service
        
        # systemctl enable systemd-nspawn@devenv.service
        /etc/systemd/system/machines.target.wants/systemd-nspawn@minecraft.service
        
        # systemctl edit systemd-nspawn@minecraft.service
        /etc/systemd/system/systemd-nspawn@minecraft.service.d/override.conf

    #------------------------------------------------
    # 起動してログインしてみる
    #------------------------------------------------
    sudo machinectl start minecraft
    sudo machinectl list

        MACHINE   CLASS     SERVICE        OS     VERSION ADDRESSES
        minecraft container systemd-nspawn ubuntu 18.04   -
        
        1 machines listed.

    sudo machinectl login minecraft

        # プロンプトがでたらminecraftユーザーでログインしてみる

    #------------------------------------------------
    # 時刻合わせ
    #------------------------------------------------
    sudo timedatectl set-timezone Asia/Tokyo
    sudo sed -i.orig 's/#NTP=/NTP=ntp.nict.jp/g' /etc/systemd/timesyncd.conf

        diff -u /etc/systemd/timesyncd.conf.orig /etc/systemd/timesyncd.conf
        --- /etc/systemd/timesyncd.conf.orig	2018-04-20 16:55:56.000000000 +0000
        +++ /etc/systemd/timesyncd.conf	2020-01-19 18:44:36.395375786 +0000
        @@ -12,7 +12,7 @@
         # See timesyncd.conf(5) for details.
        
         [Time]
        -#NTP=
        +NTP=ntp.nict.jp
         #FallbackNTP=ntp.ubuntu.com
         #RootDistanceMaxSec=5
         #PollIntervalMinSec=32

    systemctl -l status systemd-timesyncd

# ------------------------------------------------
# Minecraft Forgeサーバ設定 (コンテナへMinecraft Server導入まで)
# ------------------------------------------------
    #------------------------------------------------
    # 最新版をダウンロード
    #------------------------------------------------
    mkdir -p /home/minecraft/minecraft_server
    cd /home/minecraft/minecraft_server
    wget -O minecraft_server.1.14.4.jar https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar

    #------------------------------------------------
    # いったん起動させる
    #------------------------------------------------
    java -Xmx1024M -Xms1024M -jar minecraft_server.1.14.4.jar nogui

    #------------------------------------------------
    # 以下の状態になる
    #------------------------------------------------
    ls -l

    total 35132
    -rw-rw-r-- 1 minecraft minecraft      181 Jan 19 16:46 eula.txt
    drwxrwxr-x 2 minecraft minecraft     4096 Jan 19 16:46 logs
    -rw-rw-r-- 1 minecraft minecraft 35958734 Jul 19  2019 minecraft_server.1.14.4.jar
    -rw-rw-r-- 1 minecraft minecraft      940 Jan 19 16:46 server.properties

    #------------------------------------------------
    # eula を true にして再度起動し
    # 無事に起動したら ctrl + c で終了させる
    #------------------------------------------------
    sed -i 's/eula=false/eula=true/' eula.txt
    java -Xmx1024M -Xms1024M -jar minecraft_server.1.14.4.jar nogui

    #------------------------------------------------
    # 起動ファイルの作成
    #------------------------------------------------
    (echo '#!/bin/bash'
     echo '/usr/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.1.14.4.jar nogui'
    ) > /home/minecraft/minecraft_server/startup.sh
    chmod 755 /home/minecraft/minecraft_server/startup.sh

        #------------------------------------------------
        # /home/minecraft/minecraft_server/startup.sh
        #------------------------------------------------

        #!/bin/bash
        /usr/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.1.14.4.jar nogui

    #------------------------------------------------
    # unitファイルの作成
    #------------------------------------------------
    sudo vi /etc/systemd/system/minecraft_server.service

        #------------------------------------------------
        # /etc/systemd/system/minecraft_server.service
        #------------------------------------------------
        [Unit]
        Description=Minecraft Server
        After=network-online.target
    
        [Service]
        ExecStart=/bin/bash /home/minecraft/minecraft_server/startup.sh
        WorkingDirectory=/home/minecraft/minecraft_server
        Restart=always
        User=minecraft
        Group=minecraft
    
        [Install]
        WantedBy=multi-user.target

    #------------------------------------------------
    # minecraft server を systemctl で起動させる
    #------------------------------------------------
    sudo systemctl daemon-reload
    sudo systemctl enable minecraft_server
    sudo systemctl start minecraft_server
    sudo systemctl status minecraft_server

        #------------------------------------------------
        # systemctl status minecraft_server
        #------------------------------------------------
        ● minecraft_server.service - Minecraft Server
           Loaded: loaded (/etc/systemd/system/minecraft_server.service; enabled; vendor preset: enabled)
           Active: active (running) since Sun 2020-01-19 16:56:37 UTC; 5s ago
         Main PID: 9206 (bash)
           CGroup: /system.slice/minecraft_server.service
                   ├─9206 /bin/bash /home/minecraft/minecraft_server/startup.sh
                   └─9207 /usr/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.1.14.4.jar nogui
    
        Jan 19 16:56:40 minecraft-server bash[9206]: [16:56:40] [Server thread/INFO]: Generating keypair
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Starting Minecraft server on *:25565
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Using epoll channel type
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Preparing level "world"
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Reloading ResourceManager: Default
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Loaded 6 recipes
        Jan 19 16:56:41 minecraft-server bash[9206]: [16:56:41] [Server thread/INFO]: Loaded 811 advancements
        Jan 19 16:56:42 minecraft-server bash[9206]: [16:56:42] [Server thread/INFO]: Preparing start region for dimension minecraft:ov
        Jan 19 16:56:42 minecraft-server bash[9206]: [16:56:42] [Server thread/INFO]: Preparing spawn area: 0%
        Jan 19 16:56:42 minecraft-server bash[9206]: [16:56:42] [Server thread/INFO]: Preparing spawn area: 0%

    #------------------------------------------------
    # minecraft server が 25565番ポートで起動していることを確認
    #------------------------------------------------
    ss -ant | grep 25565

        LISTEN    0        128                                                 *:25565                                                         *:*
    lsof -i:25565

        COMMAND  PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
        java    9207 minecraft   98u  IPv6 212425      0t0  TCP *:25565 (LISTEN)

# ------------------------------------------------
# Minecraft Forge の導入
# ------------------------------------------------

    #------------------------------------------------
    # forge用のディレクトリを作成
    #------------------------------------------------
    sudo systemctl stop minecraft_server
    cp -a /home/minecraft/minecraft_server /home/minecraft/forge_server
    cd /home/minecraft/forge_server

    #------------------------------------------------
    # Macのブラウザから installer.jar をダウンロードする
    #------------------------------------------------
    https://files.minecraftforge.net/


    #------------------------------------------------
    # Mac の ~/Downloads/で簡易Webサーバを立てる
    #------------------------------------------------
    ls ~/Downloads/

        forge-1.14.4-28.1.0-installer.jar

    cd ~/Downloads/ && python3 -m http.server 9999

    #------------------------------------------------
    # ubuntu 18.04 コンテナから Mac の installer.jar をダウンロードする
    #------------------------------------------------

    wget 192.168.1.57:9999/forge-1.14.4-28.1.0-installer.jar

    #------------------------------------------------
    # ubuntu 18.04 コンテナ で installer.jar を実行
    #------------------------------------------------
    java -jar forge-1.14.4-28.1.0-installer.jar nogui --installServer

    #------------------------------------------------
    # ubuntu 18.04 コンテナ で forge-1.14.4-28.1.0.jar を実行
    #------------------------------------------------
    java -Xmx1024M -Xms1024M -jar forge-1.14.4-28.1.0.jar nogui

    #------------------------------------------------
    # 起動ファイルの修正
    #------------------------------------------------
    cat /home/minecraft/forge_server/startup.sh

        #!/bin/bash
        /usr/bin/java -Xmx1024M -Xms1024M -jar forge-1.14.4-28.1.0.jar nogui

    #------------------------------------------------
    # Minecraft Forge を systemctl で起動させる
    #------------------------------------------------
    sudo systemctl daemon-reload
    sudo systemctl start minecraft_server
    sudo systemctl status minecraft_server

# ------------------------------------------------
# modの導入
# ------------------------------------------------

    #------------------------------------------------
    # Macのブラウザから OptiFine をダウンロードする
    #------------------------------------------------
    http://optifine.net/downloads

    #------------------------------------------------
    # Mac の ~/Downloads/で簡易Webサーバを立てる
    #------------------------------------------------
    ls ~/Downloads/

        OptiFine_1.14.4_HD_U_F5.jar
    
    cd ~/Downloads/ && python3 -m http.server 9999
    
    #------------------------------------------------
    # OptiFine_1.14.4_HD_U_F5.jar をダウンロードする
    #------------------------------------------------
    cd /home/minecraft/forge_server/mods
    wget 192.168.1.57:9999/OptiFine_1.14.4_HD_U_F5.jar

    #------------------------------------------------
    # 再起動する
    #------------------------------------------------
    sudo systemctl stop minecraft_server
    sudo systemctl start minecraft_server
    
# ------------------------------------------------
# クライアントから接続する
# ------------------------------------------------
問題なく接続できればOK

# ------------------------------------------------
# 参考
# ------------------------------------------------
https://qiita.com/hatayan1126/items/500dc025d41142bd6f84
https://minecraft.server-memo.net/forge_server_install/
https://blog.3qe.us/entry/2017/11/18/200617
https://www.minecraftforge.net/forum/topic/77611-forge-universal-error-%EF%BC%9Ano-main-manifest-attribute/
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?