FA
fandesfyf/terraria-server
A terraria-server tools,一个linux下一键配置和管理Terraria服务器的工具脚本
Terraria服务器管理工具
一个功能完整的Terraria服务器安装和配置管理工具,支持多世界管理、自动化部署和系统服务集成。
功能特性
- 🚀 一键安装 - 自动下载和配置Terraria服务器
- 📦 版本管理 - 检测已有安装时提示版本更新,更新前自动备份 Server 目录
- 🌍 多世界管理 - 支持创建、载入和管理多个世界
- 🔧 交互式配置 - 友好的菜单界面,简化配置过程
- 🔄 自动重载 - 支持配置文件热重载,无需重启服务器
- 🚦 自启动支持 - 集成systemd服务,支持开机自启动
- 📊 状态监控 - 实时查看世界运行状态
- 💾 自动备份 - 定期备份世界文件
- 🛡️ 防火墙配置 - 自动配置防火墙规则
系统要求
- Linux系统(Ubuntu/Debian/CentOS/Arch等)
- Bash 4.0+
- 普通用户权限(会在需要时请求sudo)
- 网络连接(用于下载服务器文件)
快速开始
1. 克隆仓库
git clone https://github.com/fandesfyf/terraria-server.git
cd terraria2. 安装服务器
./terraria_install.sh首次安装时脚本将会:
- 检测系统环境并安装必要依赖
- 下载Terraria服务器文件到
Server目录 - 创建完整的目录结构
- 生成管理脚本和配置模板
若已存在 Server 目录结构(曾安装过),脚本会提示“是否进行版本更新”;选择 y 后会在更新前自动将整个 Server 目录备份为 Server_backup_日期时间(位于仓库根目录),再继续执行更新。选择 n 或直接回车则退出,不修改现有安装。
3. 配置世界
./terraria_config.sh配置脚本提供以下功能:
- 创建新世界
- 载入已有世界
- 重载所有世界配置
- 管理世界状态
- 配置自启动服务
目录结构
terraria/
├── Server/ # 服务器主目录
│ ├── bin/ # Terraria服务器程序
│ │ └── terraria-server/ # 服务器可执行文件
│ ├── worlds/ # 世界文件和配置
│ │ ├── *.wld # 世界文件
│ │ └── *.config # 世界配置文件
│ ├── configs/ # 全局配置
│ │ ├── server_global.json # 服务器全局设置
│ │ ├── world_template.txt # 世界配置模板
│ │ └── terraria@.service # systemd服务模板
│ ├── logs/ # 日志文件
│ ├── scripts/ # 管理脚本
│ │ ├── start_*.sh # 世界启动脚本
│ │ ├── stop_*.sh # 世界停止脚本
│ │ └── backup_worlds.sh # 备份脚本
│ └── backups/ # 备份文件
├── terraria_install.sh # 安装脚本
├── terraria_config.sh # 配置脚本
└── README.md # 本文件
使用说明
创建新世界
- 运行配置脚本:
./terraria_config.sh - 选择菜单选项
1) 创建新世界 - 按提示输入世界配置:
- 世界名称
- 端口号(自动分配可用端口)
- 最大玩家数
- 服务器密码(可选)
- 世界大小(小/中/大)
- 难度(经典/专家/大师)
- 欢迎消息
载入已有世界
- 选择菜单选项
2) 载入已有世界 - 输入现有
.wld文件的完整路径 - 配置服务器参数
- 世界文件会自动复制到
Server/worlds目录
手动添加世界
你也可以手动添加世界:
- 将
.wld文件复制到Server/worlds/目录 - 复制
Server/configs/world_template.txt为Server/worlds/世界名.config - 编辑配置文件,修改相应参数
- 运行配置脚本,选择
3) 重载所有世界
管理世界
- 启动世界:配置脚本菜单 →
5) 启动/停止世界 - 查看状态:配置脚本菜单 →
4) 列出所有世界 - 连接控制台:
tmux attach-session -t terraria_世界名 - 分离控制台:在tmux中按
Ctrl+B然后按D
自启动配置
- 选择菜单选项
6) 配置自启动 - 可以选择:
- 配置所有世界自启动
- 配置单个世界自启动
- 禁用所有自启动
- 查看自启动状态
系统服务命令
配置自启动后,可以使用systemd命令管理服务:
# 启动服务
sudo systemctl start terraria@世界名
# 停止服务
sudo systemctl stop terraria@世界名
# 重启服务
sudo systemctl restart terraria@世界名
# 查看服务状态
sudo systemctl status terraria@世界名
# 查看服务日志
sudo journalctl -u terraria@世界名 -f配置文件说明
全局配置 (Server/configs/server_global.json)
{
"terraria_version": "1449",
"server_dir": "/path/to/Server",
"default_settings": {
"maxplayers": 8,
"difficulty": 0,
"world_size": 3,
"motd": "欢迎来到我的Terraria服务器!"
},
"port_range": {
"start": 7777,
"end": 7877
}
}世界配置 (Server/worlds/世界名.config)
world=/path/to/world.wld
autocreate=3
worldname=世界名
difficulty=0
maxplayers=8
port=7777
password=
motd=欢迎来到我的Terraria服务器!
worldpath=/path/to/worlds
banlist=/path/to/banlist
logpath=/path/to/log
secure=1
language=zh-Hans版本管理
- 版本获取:脚本会尝试从 Terraria 官方下载 API 获取最新专用服务器版本号;若网络不可用或获取失败,则使用脚本内默认版本(
TERRARIA_VERSION_DEFAULT="1449")。首次安装与“版本更新”都会优先使用最新版本。 - 单独检查更新:可执行
./check_terraria_update.sh查看当前已安装版本、官方最新版本及最新版直接下载链接,以及是否有可更新项;该脚本亦被terraria_install.sh引用。安装/更新时优先使用该直接链接下载。 - 指定版本:如需固定安装某版本,可修改
terraria_install.sh开头的TERRARIA_VERSION_DEFAULT,或在获取失败时该默认值会生效。 - 检测已有安装:当
Server目录已存在且包含bin/worlds/configs等子目录时,再次运行./terraria_install.sh会识别为已有安装。 - 版本更新流程:
- 脚本会显示当前版本(从
Server/configs/server_global.json读取)和可更新至的版本(从官方获取或使用默认)。 - 提示“是否进行版本更新?[y/N]”,需输入
y确认。 - 确认后先将整个
Server目录完整备份到仓库根目录,命名为Server_backup_YYYYMMDD_HHMMSS。 - 然后继续执行:创建/补全目录、下载 Terraria 服务器、更新全局配置与脚本等。
- 脚本会显示当前版本(从
- 备份位置:备份目录在仓库根目录下(与
Server同级),便于保留世界文件与配置;如需回滚,可将对应Server_backup_*改名为Server使用。
端口管理
- 默认端口范围:7777-7877
- 系统会自动分配可用端口
- 可通过系统设置修改端口范围
- 支持端口冲突检测
备份功能
- 自动备份脚本:
Server/scripts/backup_worlds.sh - 备份位置:
Server/backups/ - 保留最近10个备份
- 可通过配置脚本手动触发备份
防火墙配置
安装脚本会自动配置防火墙规则:
- UFW (Ubuntu/Debian):
sudo ufw allow 端口/tcp - firewalld (CentOS/RHEL):
sudo firewall-cmd --add-port=端口/tcp - iptables:
sudo iptables -A INPUT -p tcp --dport 端口 -j ACCEPT
故障排除
常见问题
-
端口被占用
- 使用配置脚本的系统设置检查端口状态
- 修改世界配置文件中的端口号
-
世界无法启动
- 检查世界文件是否存在:
ls -la Server/worlds/ - 查看错误日志:
tail -f Server/logs/世界名.log - 检查tmux会话:
tmux list-sessions
- 检查世界文件是否存在:
-
自启动失败
- 检查systemd服务状态:
sudo systemctl status terraria@世界名 - 查看服务日志:
sudo journalctl -u terraria@世界名
- 检查systemd服务状态:
-
权限问题
- 确保脚本有执行权限:
chmod +x *.sh - 检查目录权限:
ls -la Server/
- 确保脚本有执行权限:
日志查看
- 世界日志:
Server/logs/世界名.log - 系统日志:
sudo journalctl -u terraria@世界名 - tmux会话:
tmux attach-session -t terraria_世界名
重置配置
如果需要重置配置:
- 停止所有世界服务
- 删除
Server目录 - 重新运行安装脚本
若只想升级 Terraria 服务器版本而保留世界与配置,可直接再次运行 ./terraria_install.sh,在提示时选择进行版本更新;脚本会先备份 Server 再更新。
高级功能
批量操作
- 启动所有世界:通过配置脚本的自启动功能
- 停止所有世界:
sudo systemctl stop 'terraria@*' - 重载所有配置:配置脚本菜单选项3
自定义配置
你可以直接编辑配置文件来进行高级自定义:
- 编辑
Server/worlds/世界名.config - 运行配置脚本,选择"重载所有世界"
- 重启对应的世界服务
网络配置
如果服务器在NAT后面,需要配置端口转发:
- 路由器端口转发:外部端口 → 服务器IP:内部端口
- 防火墙规则:允许对应端口的TCP连接
- 确保服务器监听正确的端口
其他
- 远程组网:使用一些远程组网工具可以实现远程组网,然后好朋友们可以通过服务器IP加入游戏。
- 远程组网工具有很多,类似蒲公英、xedge之类的
- 推荐xedge,支持20个设备,玩Terraria一个月1gb流量,完全用不完
贡献
欢迎提交Issue和Pull Request来改进这个工具!
许可证
本项目采用MIT许可证。
更新日志
v2.1
- 版本管理:检测到已有 Server 目录结构时提示是否进行版本更新,等待用户确认
- 更新前自动将整个 Server 目录备份为
Server_backup_日期时间(位于仓库根目录) - 文档补充版本管理说明
v2.0
- 重构为模块化架构
- 添加完整的菜单系统
- 支持多世界管理
- 集成systemd服务
- 添加备份功能
- 改进错误处理
v1.0
- 基础安装和配置功能
- 单世界管理
- 简单的脚本生成