3570 字
18 分钟
🚀你的专属游戏语音中心:在 Ubuntu 上搭建 Minecraft 与 Teamspeak 服务器!

准备好和你的小伙伴们一起在方块世界里探险,并在清晰的语音频道中畅聊了吗?这份指南将手把手教你如何在 Ubuntu 系统上搭建专属的 Minecraft 服务器和 Teamspeak 语音服务器,让你成为游戏社区的焦点!


🧱 第一章:Minecraft 服务器,启动!#

搭建你自己的 Minecraft 服务器,意味着你拥有完全的控制权,可以定制属于你们的独特游戏体验。

🔄 1.1 系统准备:打好基础,事半功倍!#

在开始大展拳脚之前,我们得先给系统做个“热身运动”,确保所有“工具”都已就位。

Terminal window
# 首先,更新系统,让你的Ubuntu保持最新状态,就像给手机升级系统一样!
sudo apt update && sudo apt upgrade -y
# 接着,安装一些必要的“基石”软件,它们能帮助我们顺利构建和下载各种组件。
sudo apt install git build-essential wget bzip2 -y

小提示: 如果你当前不是 root 用户,记得在命令前加上 sudo,或者直接切换到 root 用户。这样,你就有足够的权限来执行这些重要的操作了!

☕ 1.2 Java 环境:Minecraft 的“动力源”!#

Minecraft 服务器是用 Java 编写的,所以我们需要为它准备一个高效的 Java 运行环境(JRE)。

Terminal window
# 访问 Adoptium 官网(https://adoptium.net/zh-CN/temurin/releases/),
# 选择最新、最适合你系统的 Java 21 LTS 版本(Linux x64 JRE 包,通常50MB左右)。
# 这里提供一个下载链接,但建议你优先访问官网获取最新版:
wget https://file.nyamuchi.com/resource/OpenJDK21U-jre_x64_linux_hotspot_21.0.7_6.tar.gz
# 把它“搬家”到系统深处,一个安全且常用的地方:
sudo mv OpenJDK*.tar.gz /usr/local/ && cd /usr/local
# 然后,像拆开一个精美的礼物盒一样,解压它:
sudo tar xzf OpenJDK*.tar.gz
# 为了方便,我们给它创建一个“快捷方式”(软连接),让系统能轻松找到它:
sudo ln -sf $(sudo ls -d /usr/local/jdk-*)/bin/java /usr/local/bin/jre21
# 检查一下“快捷方式”是否创建成功,就像看看你做的菜摆盘是否漂亮:
ls -l /usr/local/bin/jre21

🛠️ 1.3 mcrcon 工具:服务器的“遥控器”!#

mcrcon 是一个非常实用的工具,它能让你在命令行中直接与 Minecraft 服务器进行交互,发送指令,就像拥有一个秘密的管理员面板!

Terminal window
# 从 GitHub 克隆 mcrcon 的“蓝图”:
# 如果遇到下载困难,可以尝试配置代理,或者使用 GitHub 加速服务。
# git config --global https.proxy http://127.0.0.1:7890 # 自行替换代理地址
sudo git clone https://github.com/Tiiffi/mcrcon.git /usr/local/mcrcon
cd /usr/local/mcrcon
# 按照“蓝图”进行“组装”:
sudo make
# 再次创建一个“快捷方式”,方便我们随时随地使用这个“遥控器”:
sudo ln -sf /usr/local/mcrcon/mcrcon /usr/local/bin/mcrcon
# 验证一下,看看它是不是能正常工作:
mcrcon -v
# 如果你遇到 GitHub 访问问题,别担心!这里提供一个预构建的版本,让你直接“拿来即用”:
# sudo wget https://file.nyamuchi.com/resource/mcrcon -O /usr/local/bin/mcrcon
# mcrcon -v # 同样地,验证一下

👤 1.4 用户与服务:给 Minecraft 一个“专属房间”!#

为了安全和管理方便,我们最好为 Minecraft 服务器创建一个专门的用户,并将其配置为系统服务,让它能够自动启动和停止。

Terminal window
# 创建一个名叫“minecraft”的系统用户,就像给服务器一个专属的“管家”:
sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
# 切换到“minecraft”用户,接下来的操作都在它的“地盘”进行:
su - minecraft
# 为服务器创建一些必要的文件夹,整理得井井有条:
mkdir -p ~/{tools,server}
# 下载 Minecraft 服务器的核心文件,这可是服务器的“心脏”!
# (当前版本通常可以在Minecraft官网下载,这里提供一个示例链接)
wget https://file.nyamuchi.com/resource/server.jar -O ~/server/server.jar
# 进入服务器文件夹,准备启动!
cd ~/server
# 第一次运行服务器,它会生成一些配置文件,包括一个必须同意的许可协议。
# 启动命令中 `-Xmx` 和 `-Xms` 分别设置了服务器的最大和初始内存,根据你的内存大小调整。
jre21 -Xmx2048M -Xms1024M -jar server.jar nogui
# 你会看到一些日志输出,当它停下来时,你需要同意 EULA 协议。
# 别担心,我们用一条命令就能搞定:把 `eula.txt` 里的 `false` 改成 `true`!
sed -i 's/false/true/g' ~/server/eula.txt
# 接下来,我们“装修”一下服务器的配置文件 `server.properties`:
# 设置 RCON 密码(务必替换成你自己的安全密码!),启用 RCON 服务,
# 调整游戏难度为“困难”,以及禁用 PvP(防止玩家间互相伤害)。
# **重要:请务必将“修改密码”替换为你的实际密码!**
sed -i -e 's/^rcon\.password=.*/rcon.password=你的专属RCON密码/' \
-e 's/^enable-rcon=.*/enable-rcon=true/' \
-e 's/^difficulty=.*/difficulty=hard/' \
-e 's/^pvp=.*/pvp=false/' ~/server/server.properties
# 工作完成,切换回原来的用户:
exit

现在,我们要把 Minecraft 服务器变成一个“系统服务”,这样它就能在后台默默运行,而且还能随系统启动!

Terminal window
# 创建一个服务配置文件,就像给它一张“工作证”:
sudo vim /etc/systemd/system/mcs.service

vim 编辑器中,粘贴以下内容(记得替换 ExecStop 中的 RCON 密码!):

[Unit]
Description=Minecraft Server # 服务描述:一个Minecraft服务器!
After=network-online.target # 等待网络就绪后才启动
[Service]
User=minecraft # 以“minecraft”用户身份运行
WorkingDirectory=/opt/minecraft/server # 工作目录
ExecStart=jre21 -Xmx2048M -Xms1024M -jar server.jar nogui # 启动命令
ExecStop=mcrcon -H 127.0.0.1 -P 25575 -p 你的专属RCON密码 stop # 停止命令(注意替换密码!)
Restart=on-failure # 如果服务崩溃,自动重启
[Install]
WantedBy=multi-user.target # 在多用户模式下启用

保存并退出 vim(按 Esc 键,然后输入 :wq 回车)。

Terminal window
# 刷新系统服务配置,让它“认识”新的服务:
sudo systemctl daemon-reload
# 启动 Minecraft 服务器!激动人心的时刻!
sudo systemctl start mcs
# 检查服务器状态,看看它是否运行良好:
sudo systemctl status mcs
# 设置开机自启动,让你的服务器永不掉线(除非你手动关闭它):
sudo systemctl enable mcs

💾 1.5 自动备份:服务器数据的“守护神”!#

Minecraft 服务器的存档是你的宝贵财富,定期备份是保护它们的最佳方式。我们将把备份放在一个独立的数据盘上,更安全也更灵活。

1.5.1 挂载数据盘:给备份文件找个“新家”!#

首先,我们需要找到你的数据盘,并把它“挂载”到系统上。

Terminal window
# 查看硬盘信息,寻找那个还没有被挂载的“陌生人”(通常是 vdb 或 sdb):
lsblk -f

在输出中,你会看到类似 vdbsdb 这样的硬盘,后面没有 MOUNTPOINTS,那很可能就是你的数据盘。

root@ser763811247085:~# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
loop0 squashfs 4.0 0 100% /snap/core20/1434
loop1 squashfs 4.0 0 100% /snap/lxd/22923
loop2 squashfs 4.0 0 100% /snap/snapd/15534
sr0 iso9660 cidata 2025-07-13-18-43-24-00
vda
├─vda1 ext4 1.0 cloudimg-rootfs 2a6b8daa-1d70-43b6-84e1-8d987d9f1411 32.3G 16% /
├─vda14
└─vda15 vfat FAT32 UEFI E0AB-332A 99.1M 5% /boot/efi
vdb # <- 没错,就是它!
└─vdb1 ext4 1.0 c782839c-6ce1-49e8-9b81-c0c4c4999c5b

现在,我们给它创建一个“落脚点”,并暂时性地把它挂载上去:

Terminal window
# 创建一个挂载点,就像给新家腾出空间:
sudo mkdir /mnt/data
# 临时挂载磁盘,让它能被系统识别:
sudo mount /dev/vdb1 /mnt/data

1.5.2 设置开机自动挂载:让“新家”永远在线!#

为了避免每次重启服务器都要手动挂载,我们需要把它配置为开机自动挂载。

首先,获取数据盘的“身份证号”(UUID):

Terminal window
# 获取 /dev/vdb1 的 UUID,这就像它的唯一标识码:
sudo blkid /dev/vdb1
# 输出示例:
# /dev/vdb1: UUID="c782839c-6ce1-49e8-9b81-c0c4c4999c5b" TYPE="ext4"

然后,编辑 /etc/fstab 文件,把这个信息写入其中:

Terminal window
# 用你喜欢的编辑器打开 /etc/fstab 文件
sudo vim /etc/fstab

在文件末尾添加一行(务必替换成你实际的 UUID 和挂载路径!):

UUID=你的数据盘UUID /mnt/data ext4 defaults 0 0

保存并退出 vim

1.5.3 配置 Minecraft 用户权限:让“管家”能自由进出!#

为了让 Minecraft 用户有权限在备份目录中操作,我们需要设置正确的权限。

Terminal window
# 在数据盘上创建备份文件夹:
sudo mkdir /mnt/data/backups
# 把备份文件夹的“钥匙”交给 Minecraft 用户:
sudo chown -R minecraft:minecraft /mnt/data/backups
# 设置权限,让 Minecraft 用户拥有读写执行的权限:
sudo chmod -R 770 /mnt/data/backups

1.5.4 配置备份脚本:让备份“自动运行”!#

现在,我们来编写一个智能备份脚本,让它每天自动为你的服务器存档。

Terminal window
# 切换到 Minecraft 用户,在它的工具目录创建脚本文件:
su - minecraft

编辑备份脚本文件:

Terminal window
vim /opt/minecraft/tools/backup.sh

粘贴以下内容(同样,请将“修改密码”替换为你的 RCON 密码!):

#!/bin/bash
# 定义 rcon 函数,方便我们发送命令给 Minecraft 服务器
function rcon {
mcrcon -H 127.0.0.1 -P 25575 -p 你的专属RCON密码 "$1" # 再次提醒:替换密码!
}
# 暂停服务器保存,确保备份的数据完整无损
rcon "save-off"
# 强制服务器保存所有数据到硬盘
rcon "save-all"
# 进入 Minecraft 根目录,然后打包整个服务器文件夹到备份目录
cd /opt/minecraft && tar -cpzf /mnt/data/backups/server-$(date +%F-%H-%M).tar.gz ./server/
# 恢复服务器自动保存
rcon "save-on"
## 删除旧的备份,保持磁盘空间整洁,只保留7天内的备份
find /mnt/data/backups/ -type f -mtime +7 -name '*.gz' -delete

保存并退出 vim

让脚本拥有执行权限:

Terminal window
chmod +x /opt/minecraft/tools/backup.sh

最后,我们设置一个定时任务(cron job),让它每天自动执行备份脚本:

Terminal window
# 创建定时任务,它会打开一个编辑界面
crontab -e
# 第一次运行可能会让你选择一个文本编辑器,选你喜欢的就好。

在文件末尾添加一行,表示每天晚上 11 点(23:00)运行备份脚本:

0 23 * * * /opt/minecraft/tools/backup.sh

保存并退出 crontab 编辑器。


🖥️ 1.6 服务器管理:轻松“遥控”你的世界!#

通过 mcrcon 工具,你可以随时随地向你的 Minecraft 服务器发送指令。

Terminal window
# 启动 mcrcon 命令行界面,就像打开了一个服务器控制台:
mcrcon -H 127.0.0.1 -P 25575 -p 你的专属RCON密码 -t
# 成功登录后,你就可以在 ">" 提示符后输入各种 Minecraft 命令了!
Logged in. Type "Q" to quit!
> say Hello, everyone! # 试着在游戏里说句话!
> save-all # 随时手动保存
> stop # 停止服务器

🎙️ 第二章:Teamspeak 语音服务器,畅聊无阻!#

除了游戏,语音沟通也是团队协作的重要一环。Teamspeak 服务器以其出色的语音质量和低延迟而闻名。


👤 2.1 用户与目录:给 Teamspeak 找个“安静角落”!#

和 Minecraft 类似,我们也为 Teamspeak 创建一个专属用户和目录,确保它的独立性和安全性。

Terminal window
# 创建一个名为“teamspeak”的系统用户:
sudo useradd -r -m -U -d /opt/teamspeak -s /bin/bash teamspeak
# 切换到“teamspeak”用户:
su - teamspeak

现在,下载 Teamspeak 服务器文件:

Terminal window
# 访问 Teamspeak 官网(files.teamspeak-services.com/releases/server/),
# 下载最新稳定版本的 Linux AMD64 服务器文件。
# 这里提供一个示例链接,建议你访问官网获取最新版:
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2
# 解压文件,并把解压后的文件夹重命名为“app”,方便管理:
tar xjf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
mv teamspeak3-server_linux_amd64 app
# 同意 Teamspeak 的许可协议。这是一个非常重要的步骤!
touch .ts3server_license_accepted

⚙️ 2.2 服务端配置:定制你的语音大厅!#

Teamspeak 服务器的配置相对简单,主要在 ts3server.ini 文件中进行。

Terminal window
vim /opt/teamspeak/app/ts3server.ini

粘贴以下内容(记得替换 serveradmin_password 为你的管理员密码!):

/opt/teamspeak/app/ts3server.ini
licensepath= # 许可文件路径,通常留空即可
query_protocols=ssh # 允许SSH查询协议
query_timeout=300
query_ssh_rsa_host_key=ssh_host_rsa_key
query_ip_allowlist=query_ip_allowlist.txt # IP白名单文件
query_ip_blocklist=query_ip_blocklist.txt # IP黑名单文件
dbplugin=ts3db_sqlite3 # 使用SQLite数据库
dbpluginparameter=ts3db.ini # 数据库配置文件
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite
dbconnections=10
dbclientkeepdays=30s
logpath=logs # 日志文件路径
logquerycommands=0
logappend=0
serverquerydocs_path=serverquerydocs/
filetransfer_port=30033 # 文件传输端口
default_voice_port=9987 # 默认语音端口
query_ssh_port=10022 # SSH查询端口
serveradmin_password=你的Teamspeak管理员密码 # **重要:替换成你自己的管理员密码!**

如果你希望使用 MySQL/MariaDB 数据库而不是默认的 SQLite,可以编辑 ts3db.ini,但对于大多数个人服务器来说,SQLite 已经足够。

/opt/teamspeak/app/ts3db.ini
[config]
host=''
port='3306'
username=''
password=''
database=''
socket=
wait_until_ready='30'

保存并退出 vim

🚀 2.3 系统服务配置:让 Teamspeak 自动“开门迎客”!#

和 Minecraft 一样,我们将把 Teamspeak 也配置为一个系统服务。

首先,启动一次 Teamspeak 服务器进行测试,它会生成一些必要的管理员信息(包括初始管理员令牌),请务必复制并保存这些信息!

Terminal window
# 启动测试,获取管理员信息。注意,这里会输出重要的令牌,请务必复制!
./ts3server_startscript.sh start inifile=ts3server.ini
# 看到令牌后,按 Ctrl + C 停止服务器

现在,创建 Teamspeak 的服务配置文件:

Terminal window
sudo vim /etc/systemd/system/teamspeak.service

粘贴以下内容:

/etc/systemd/system/teamspeak.service
[Unit]
Description=Teamspeak, The most superior online voice communication solution. # 描述
After=network-online.target # 等待网络就绪
[Service]
User=teamspeak # 以“teamspeak”用户身份运行
WorkingDirectory=/opt/teamspeak/app/ # 工作目录
ExecStart=/opt/teamspeak/app/ts3server_startscript.sh start inifile=ts3server.ini # 启动命令
ExecStop=/opt/teamspeak/app/ts3server_startscript.sh stop inifile=ts3server.ini # 停止命令
PIDFile=/opt/teamspeak/app/ts3server.pid # PID 文件路径
Type=forking # 服务类型
[Install]
WantedBy=multi-user.target # 在多用户模式下启用

保存并退出 vim

最后,启动 Teamspeak 服务并设置开机自启:

Terminal window
# 刷新系统服务配置:
sudo systemctl daemon-reload
# 启动 Teamspeak 服务器:
sudo systemctl start teamspeak
# 检查服务状态,确保它运行正常:
sudo systemctl status teamspeak
# 设置开机自启动,让你的语音服务器永远在线:
sudo systemctl enable teamspeak

恭喜你!现在你的 Ubuntu 服务器已经成功搭建了 Minecraft 和 Teamspeak 语音服务器。快去邀请你的朋友们一起加入,开启全新的游戏和语音体验吧!

别忘了:

  • 防火墙设置: 确保你的服务器防火墙(如 ufw)开放了 Minecraft (默认 25565/TCP) 和 Teamspeak (默认 9987/UDP, 30033/TCP, 10022/TCP) 所需的端口。
  • 公网 IP: 如果你的服务器在内网,可能还需要进行端口转发才能让外部玩家连接。

如果你在搭建过程中遇到任何问题,或者有其他有趣的玩法想尝试,欢迎随时提问!

🚀你的专属游戏语音中心:在 Ubuntu 上搭建 Minecraft 与 Teamspeak 服务器!
https://nyamuchi.com/posts/project1/
作者
La02^
发布于
2025-07-13
许可协议
CC BY-NC-SA 4.0