如何用树莓派搭建一个低能耗的Minecraft服务器

本文由 极客范 - 孔垂瑾 翻译自 Jason Fitzpatrick。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

img_52615174c6f5b
我们已经有教程教你怎么在windows/OSX盒子上搭建自己的方块世界Minecraft服务器了,但是如果我们需要更轻量级,更省电,而且要一直在线,朋友们随时可以上来玩的服务器呢?下文介绍了如何用树莓派搭建低能耗的Minecraft服务器,你可以全天不间断地开着,每天的电费大概只要一个便士。

为什么要折腾这个?

这个教程分为两个部分:搭建你自己的Minecraft服务器,以及在树莓派上搭建Minecraft服务器。为什么要自己搭Minecraft服务器呢?因为在自己的服务器上玩Minecraft,不是随便谁都可以做的。你可以让服务器一直运行,当你不玩的时候,你的朋友和家人还可以加入到游戏中,继续建造你的世界。你可以尝试修改游戏参数,制作mod,而且还能让你体验一把GM的感觉,这在公共服务器里可是做不到的,而且也不用花很多钱去租远程主机来做服务器。

对于Minecraft狂热粉丝而言,搭建Minecraft服务器已经很有吸引力了。但是在树莓派上搭则会更有吸引力。小小的树莓派耗电非常少,你可以不间断地开着服务器,一年的电费也不过几块钱而已。只要一个树莓派,一张SD卡,花上一点时间设置一下,就能有一台全天候的Minecraft服务器,月运行费用只不过一条口香糖的价格。

需要的东西

这篇教程需要一些硬件和软件;除了树莓派和SD卡之外的东西都是免费的。

  • 1个树莓派(512MB的版本比较好)
  • 1张4GB的SD卡

教程假设你已经熟悉了树莓派的环境,而且已经安装了Debian衍生的Raspbian。如果你的树莓派还没跑起来,可以参考:HTG树莓派起步教程

针对Minecraft服务器优化Raspbian

img_526413d1c9cb0
和我们之间分享过的那些可以同时运行的项目不大一样(例如,树莓派的性能足以同时用作天气/电子邮件提醒器和一台谷歌云打印机),对于小小的树莓派而言,运行Minecraft服务器是一项非常耗费系统资源的任务,我们强烈推荐树莓派上只运行这一项任务。Minecraft看上去只有些方块,似乎不太耗资源。但事实上在简单的外表下有着非常复杂游戏核心,要耗费很多处理能力的。

所以我们接下来要修改配置文件以及其他一些设置,针对Minecraft服务器来优化Rasbian。第一步要做的是进入Raspi-Config,进行几项微调,如果你已经安装了Raspi-Config,那么进入终端,输入”sudo raspi-config”来运行。

第一项,也是最重要的一项是进行超频。我们要把处理能力设置得尽可能高一些,以保证Minecraft流畅运行。在Raspi-Config中,选择第七项”超频”。
img_5264147f46bb7

关于超频,虽然能听到些很吓人的警告,但事实上超频是树莓派基金会官方支持的,自从2012年年末,设置菜单中就有了超频选项。进入超频菜单后,选择“Turbo 1000MhHz”。然后你又会看到这个级别的超频可能出现的危险的提示信息(有可能损坏SD卡,但事实上对硬件不会有危险)。点击OK,等待设备重启。

然后,记得启动后登陆到命令提示符,而不是桌面。选择第三项”启动“,选择”命令提示符“。

返回到Raspi-Config菜单,选择第八项”高级选项“。这里有两个关键的更改,还有一个是可选的。先说关键的更改,选择A3 “内存分配”。

将分配给GPU的内存调到16MB(默认是64MB)。我们的Minecraft服务器运行的时候不需要图形界面,所以分配给GPU的内存有最低值就可以了。

改完GPU内存后,返回到主菜单。选择”高级选项“,然后选择A4 “SSH”。在子菜单中,开启SSH。一般来说没什么理由给这台Pi一直连着显示器和键盘,开启SSH我们就可以从有网络的任何地方来远程控制这台机器了。

最后(这项是可选的),回到“高级选项”菜单,选择A2 ”主机名“。在这里可以把主机名从”raspberrypi“改成一个更适合Minecraft服务器的名字,而且可以根据个人爱好加一些修饰,例如creepertown, minecraft4life或者miner-box。这些都是挺适合minecraft服务器的名字。

Raspbian的设置就这么多。按Tab到主屏幕的底端,选择”Finish”来重启。在重启后,可以用SSH来登录到树莓派的终端,也可以继续用连接到树莓派上的键盘(我们强烈推荐用SSH,因为SSH可以更容易地复制粘贴命令)。如果你之前从来没用过SSH,可以看这篇介绍如何使用PuTTy访问树莓派的文章。

在树莓派上安装Java

img_526415c98e7a3

Minecraft服务器需要Java运行环境,所以我们应该在刚刚改过配置的树莓派上安装Java。用SSH登录到树莓派上,在命令提示符下输入下面的命令,给java的安装创建一个目录:
sudo mkdir /java/

然后下载最新版的Java。在本文写作时,最新版本是OCT 2013,链接和文件名会显示出版本信息。在你下载的时候,应该在Java下载页检查一下有没有更新版本的Linux ARMv6/7 Java,如果有请使用最新版本。

在命令提示符下输入:

sudo wget --no-check-certificate http://www.java.net/download/jdk8/archive/b111/binaries/jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

下载完成后,输入:

sudo tar zxvf jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz -C /opt/

豆知识:/opt/这个目录名是早期Unix设计的残留物,/opt/目录是在操作系统安装完成后,用来安装可选(optional)软件的,也就是Unix世界的/Program Files/(译者:个人感觉/Program Files更类似于/usr)。

在文件解压完成后,输入:

sudo /opt/jdk1.8.0/bin/java -version

这个命令会显示Java安装包的版本号,例如:
java version “1.8.0-ea”
Java(TM) SE Runtime Environment (build 1.8.0-ea-b111)
Java HotSpot(TM) Client VM (build 25.0-b53, mixed mode)

如果没有出现上面的信息(如果你用的是更新版本的安装包,版本号可能有所不同),试试再解压一次。如果你看到了上面的信息,输入下面的命令,删掉不要的东西。

sudo rm jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

到这里,Java就安装好了,我们可以开始安装Minecraft服务器了!

Minecraft服务器的安装和配置

现在Minecraft服务器安装所需要的基础都有了,到了安装服务器自身的时候了。我们这里使用SpigotMC,一个轻量化而且稳定的Minecraft服务器版本,在树莓派上运行得很好。

首先,用下面的命令下载一份代码:

sudo wget http://ci.md-5.net/job/Spigot/lastSuccessfulBuild/artifact/Spigot-Server/target/spigot.jar

这个链接可以一直用,因为它指向的是Spigot最新的稳定版,如果有任何问题,可以参考SpigotMC的下载页

下载完成后,输入下面的命令:

sudo /opt/jdk1.8.0/bin/java -Xms256M -Xmx496M -jar /home/pi/spigot.jar nogui

注意:如果你在用256MB的树莓派,把上面的256和496分别改成128和256。

接下来服务器会启动,屏幕上会出现一大堆东西。等上大概3-6分钟,程序会搭建服务器,生成地图。之后的启动会快很多,大概20-30秒。

注意:如果在配置或游戏过程中发生异常(例如新建的服务器里的人物一出来就会死掉),在命令行用“stop”就可以优雅地关掉服务器,然后你就可以重启服务器,找出问题在哪里。

在上面的流程完成后,你就可以坐在电脑旁普通地玩Minecraft,启动程序,选择多人游戏。你会看到自己建的服务器:
img_5264167b267ad

如果搜不到自己建的服务器,点击“添加”按钮然后手动输入你的树莓派的地址。

连接到服务器后,你能在服务器状态窗口中看到状态的改变:
img_52641cb0c4789

从服务器端显示的信息就能知道,我们已经进入游戏了。从客户端来看,也可以确定我们已经正常进入游戏了,但是游戏是在午夜的生存模式下:
img_52641b1dcb425

出生在死亡之夜,没有武器和房子,游戏是没办法进展的。不用担心,我们接下来要进行一些设置,没有时间继续打骷髅了。另外,如果你一开始就这么玩下去,会发现游戏会很不稳定。我们现在只是为了确定服务器能够启动,能正常运行,并且能连接到客户端。

现在我们已经确认服务器能正常运行,能连接到客户端(虽然还没什么可玩性),可以关掉服务器了。在服务器的控制台里输入”stop”,就可以把服务器关掉。

退回到命令提示符后,输入下面的命令:

sudo nano server.properties

设置文件打开,进行下列更改(可以直接复制粘贴过去,前面两行以#开头的不用复制):

#Minecraft server properties
#Thu Oct 17 22:53:51 UTC 2013
generator-settings=
#Default is true, toggle to false
allow-nether=false
level-name=world
enable-query=false
allow-flight=false
server-port=25565
level-type=DEFAULT
enable-rcon=false
force-gamemode=false
level-seed=
server-ip=
max-build-height=256
spawn-npcs=true
white-list=false
spawn-animals=true
texture-pack=
snooper-enabled=true
hardcore=false
online-mode=true
pvp=true
difficulty=1
player-idle-timeout=0
gamemode=0
#Default 20; you only need to lower this if you're running
#a public server and worried about loads.
max-players=20
spawn-monsters=true
#Default is 10, 3-5 ideal for Pi
view-distance=5
generate-structures=true
spawn-protection=16
motd=A Minecraft Server

用SSH连到树莓派上,在服务器状态窗口中,输入下面的命令,给自己管理员权限(于是就可以在游戏里用更强力的命令,不用退回到服务器状态窗口了)。

op [minecraft里的昵称]

现在游戏变得好一点了,但是在游戏真正变好玩之前,还需要一些设置。我们来装一些插件。

第一个要装的插件是NoSpawnChunks。首先访问NoSpawnChunks的网页,复制最新版的下载链接。本文写作时,最新版是v0.3。

回到命令提示符(树莓派的命令提示符,不是服务器的控制台——如果你的服务器还开着,可以把它关掉了),输入下面的命令:

cd /home/pi/plugins

sudo wget http://dev.bukkit.org/media/files/586/974/NoSpawnChunks.jar

然后访问ClearLag插件的页面,复制最新版的下载链接(本文写作时是2.6.0)。在命令提示符下输入下面的命令:

sudo wget http://dev.bukkit.org/media/files/743/213/Clearlag.jar

因为文件没有用.ZIP或者其他类似的东西来压缩,所以做到这一步就够了:插件已经放在插件目录里了。(记得以后如果要下载插件,文件名应该是xxx.jar,如果是压缩文件,就得在插件目录里解压缩)

重启服务器:

sudo /opt/jdk1.8.0/bin/java -Xms256M -Xmx496M -jar /home/pi/spigot.jar nogui

这次启动花费的时间会长一点(大概3-6分钟,比你期望中的30秒会长很多),因为这些插件会影响到世界地图,所以需要一些时间来进行更改。人物出生后,在服务器控制台中输入:

plugins

这个命令会列出当前正在运行的插件。你看到的信息应该是下面这个样子的:
img_526165ba35546

如果插件没有被载入,就要停掉然后重启服务器了。

确认插件已经载入之后,就可以加入游戏了。你会发现游戏变好玩了。另外,你会时不时看到插件的一些信息,表明它们正在活动,就像下面的图中信息一样:
img_5261658817a91
现在,Java装好了,服务器搭建好了,树莓派的配置也改好了,可以开始和朋友一起搭建世界了!



原文链接: Jason Fitzpatrick 翻译: 极客范 - 孔垂瑾

译文链接: http://www.geekfan.net/3809/

[ 转载请保留原文出处、译者和译文链接。]

读TAOCP,爱Lisp,用OS X的一名hacker 新浪微博:@rosynirvana

10 评论

  1. Epix  /  2013 年 11 月 19 日, 下午 12:23 回复

    想玩加装二十个mod的目测还是不行…

    Thumb up 0 Thumb down 0

  2. 上官岳  /  2013 年 12 月 18 日, 下午 3:12 回复

    使用putty控制树莓派的话怎么样才能关掉putty并且不影响树莓派任务的运行呢

    Thumb up 0 Thumb down 0

    • 阿染  /  2013 年 12 月 25 日, 下午 10:44 回复

      Tmux 或者 screen

      Thumb up 0 Thumb down 0

      • thn  /  2014 年 2 月 18 日, 下午 9:31 回复

        能具体说下怎么操作吗

        Thumb up 0 Thumb down 0

        • XavierYao  /  2014 年 3 月 28 日, 下午 4:40 回复

          在sh下输入 sudo apt-get install screen 安装screen
          输入screen 启动一个screen会话
          在会话里启动服务器,这样就可以在后台运行并且不会受ssh链接影响
          Ctrl-a-d 切出会话

          Thumb up 2 Thumb down 0

    • LittleDai  /  2014 年 6 月 9 日, 上午 9:45 回复

      起服务的命令之后紧跟一个&表示在后台运行就可以了

      Thumb up 0 Thumb down 0

  3. Rubyy  /  2014 年 1 月 9 日, 上午 8:18 回复

    rpi搭建MC服的确少见,而且据说view-distance小于10时会使刷怪减少很多
    but thx

    Thumb up 0 Thumb down 1

  4. 天羽  /  2014 年 1 月 12 日, 下午 3:15 回复

    为什么要装jdk8…..

    Thumb up 1 Thumb down 0

  5.   /  2014 年 5 月 17 日, 下午 6:56 回复

    这个跟最新的minecraft服务器在游戏性上有什么不同,比如删减了什么功能,怎么接入互联网?

    Thumb up 0 Thumb down 0

  6. 鸡——CHI  /  2015 年 6 月 26 日, 下午 9:53 回复

    输入sudo /opt/jdk1.8.0/bin/java -Xms256M -Xmx496M -jar /home/pi/spigot.jar nogui时出现Error: Invalid or corrupt jarfile /home/pi/spigot.jar怎么解决??

    Thumb up 3 Thumb down 0

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">