本地ubuntu主机搭建我的世界服务器并免费开启公网映射 结合MESM面板 chmlfrp 保姆级教学

news2024/11/26 18:30:21

本地ubuntu主机搭建我的世界forge服务器并免费开启公网映射 结合MESM面板 chmlfrp

这是一篇很完成的从ssh命令->配置java环境->安装MCS->部署服务器->开启公网映射的我的世界保姆级开服教程,可以慢慢食用ଘ(੭ˊ꒳ˋ)੭ 。

为什么选择forge服务器进行开服?

Minecraft我的世界服务端核心介绍 - MC开服教程1 - 哔哩哔哩 (bilibili.com)

第1步:安装SSH服务器

首先,你需要在Ubuntu系统上安装SSH服务器软件包。打开终端(可以使用快捷键Ctrl + Alt + T)并输入以下命令来安装openssh-server:

sudo apt update
sudo apt install openssh-server

安装完成后,SSH服务会自动启动。你可以使用以下命令来检查SSH服务的状态:

sudo systemctl status ssh

修改配置文件,允许用root访问:

sudo nano /etc/ssh/sshd_config

如果没有下面字段请在文件直接添加,前面不要加井号:

PermitRootLogin yes 

没有nano就安装nano:

apt install nano

保存文件并退出编辑器后,重启SSH服务使更改生效:

sudo systemctl restart ssh

在windows电脑可以在终端用ssh进行连接,或者说用vsc的ssh插件进行连接(推荐),或者其他的ssh方式。

ssh root@ip地址

问题

vsc远程连接造成的rg进程占满服务器资源。

在这里插入图片描述

解决方案为:打开设置,搜索 search.followSymlinks,将远程工作区对应设置置为 False 即可。

在这里插入图片描述

在这里插入图片描述

第2步:配置java环境

第一种方法(推荐)

第一种方法通过系统包进行配置(推荐,测试环境为ubuntu24.04)

安装java8和Java17

通过ubuntu的java管理工具,这两个环境可以随时切换:

sudo apt install openjdk-8-jdk
sudo apt install openjdk-17-jdk

安装好之后:

root@sumengxian-OptiPlex-3050:~# java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu224.04)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu224.04, mixed mode, sharing)

通过命令切换java环境:

root@sumengxian-OptiPlex-3050:~# sudo update-alternatives --config java2 个候选项可用于替换 java (提供 /usr/bin/java)。

  选择       路径                                          优先级  状态
------------------------------------------------------------
* 0            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      自动模式
  1            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      手动模式
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

可以看到,这里不仅可以选择环境,还返回了java的位置,之后可以更加方便指定java版本来启动游戏。

第二种方法

通过从官网下载java包来进行环境配置,下面以java17为例子:

cd /usr/local	#跳转到 /usr/local 目录
mkdir java		#创建名为 java 的目录
  
# 下载 java17 压缩包
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
# 解压
tar -xzvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java/

注:如果输入某条指令时显示 command not found,则说明未安装该指令所需的程序,需要自行安装。

如输入 wget 指令时报如上错误,则说明没有安装 wget(不过这种基础指令一般都会随系统一同安装)

解压后,配置环境变量:

nano /etc/profile	# 编辑 profile 文件

在文件的最后新增如下几行:

 # 注意!下面指令中,你的文件夹名不一定是jdk-17.0.9,把它替换为你解压出来的文件夹的实际名称
 export JAVA_HOME=/usr/local/java/jdk-17.0.9		
 export CLASSPATH=.:$JAVA_HOME/lib/
 export PATH=.:$JAVA_HOME/bin:$PATH
  1. 然后输入以下命令,重载该文件:

    source /etc/profile
    
  2. 最后检查 Java 是否安装成功:

    java -version
    

    如果出现类似响应,则说明安装成功:

    openjdk 17.0.12 2024-07-16
    OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu224.04)
    OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu224.04, mixed mode, sharing)
    

第3步安装MCSManager 面板

官网地址:MCSManager | 开源免费,分布式,一键部署,支持 Minecraft 和 Steam游戏服务器的控制面板

输入MCSManager 面板的安装命令:

wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash

耐心等待,安装完成后如下图:

在这里插入图片描述

可以看到连接端口是23333,在http://ip地址:23333 可以访问到登录页面。

设置开机启动:

systemctl enable mcsm-{daemon,web}.service

启动面板:

systemctl start mcsm-{daemon,web}.service

停止面板:

systemctl stop mcsm-{daemon,web}.service

重启面板:

systemctl restart mcsm-{daemon,web}.service

在这里插入图片描述

在这里插入图片描述

第4步 部署我的世界服务器

1.下载 Forge

进入官网:https://files.minecraftforge.net/net/minecraftforge/forge/

在这里插入图片描述

下载自己对应想要的服务器核心

2.上传服务器核心并运行

在这里插入图片描述

将以下代码复制进去,并上传服务器核心:

java -server -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -jar ${ProgramName} --installServer

在这里插入图片描述

上传完成之后进入到控制台,应用实例设置->高级设置,复制工作路径:

在这里插入图片描述

在终端输入命令进入到对应的文件夹:

cd /opt/mcsmanager/daemon/data/InstanceData/35d13bef7aa940bba204fea21e9ea3c3

再执行刚刚复制的命令:

java -server -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -jar forge-1.20.1-47.3.0-installer.jar --installServer

执行完成之后,如果是低版本的服务器核心的话,启动命令应该是:

java -server -Xms1024M -Xmx4096M -jar forge-server.jar nogui

xms为最小内存,xmx是允许使用的最大内存

而在高版本中,执行安装完成之后会自动生成run.sh和run.bat,所以启动命令应该为:

bash run.sh

在这里插入图片描述

如果要服务器允许的内存占用大小,可以修改我的世界服务端根目录下的user_jvm_args.txt文件:

# Xmx and Xms set the maximum and minimum RAM usage, respectively.
# They can take any number, followed by an M or a G.
# M means Megabyte, G means Gigabyte.
# For example, to set the maximum to 3GB: -Xmx3G
# To set the minimum to 2.5GB: -Xms2500M

# A good default for a modded server is 4GB.
# Uncomment the next line to set it.
-Xms1024M	# 最小占用内存,这里我设为1024M
-Xmx7168M	# 最大占用内存,这里我设为7168M

run.sh 启动命令应该类似于这样,我加了nogui:

#!/usr/bin/env sh
# Forge requires a configured set of both JVM and program arguments.
# Add custom JVM arguments to the user_jvm_args.txt
# Add custom program arguments {such as nogui} to this file in the next line before the "$@" or
#  pass them to this script directly
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.20.1-47.3.0/unix_args.txt nogui "$@"

此时就可以点击开始启动我的世界服务器了:
在这里插入图片描述

启动之后发现停止了,是因为我们要修改一个文件,服务端配置->eula.txt->编辑设置为是 之后点保存:

在这里插入图片描述

此时再启动服务器就启动成功了,访问端口号默认是25565,可以自行修改。

3.设置定期任务

为了防止服务器崩溃,我们可以设定一些定期计划来重启服务器和清除一些实体,下面是参考:

在这里插入图片描述

4.mod安装

可以在这个我的世界网站中寻找资源:模组检索 - MC百科|最大的Minecraft中文MOD百科 (mcmod.cn)

其中有些mod没有提供下载,可以到对应的mod官网进行下载:
在这里插入图片描述

第5步 配置公网映射,使得服务器能够从外网访问

1.配置隧道

ChmlFrp | Panel v2 - 免费,高速,稳定,不限流量的端口映射工具。

ChmlFrp是一款不限流量,免费高速目稳定的端口映射工具,为您提供免费的内网穿透功能。可以用于MC联机,远程桌面,远程共享,游戏联机等任何需要用到公网IP的地方。

这个端口映射的方法优点是直接可以通过公网ip来访问服务器,缺点是免费的端口比较少,最多可以开五个我的世界服务器(其实也蛮多了)。至于为什么不选择zeroiter方案,是因为我学校的校园网无法设置路由器为全锥形nat,导致隧道无法打通。

首先在官网中创建自己的账号,在隧道列表中选择自己合适的节点进行配置:

在这里插入图片描述

比如说这样配置就可以从公网61687端口访问到我们的服务器:

在这里插入图片描述

在这里插入图片描述

2.安装frp

找到自己的对应的安装包进行下载:

wget https://www.chmlfrp.cn/dw/ChmlFrp-0.51.2_240715_linux_amd64.tar.gz

在这里插入图片描述

下载之后进行解压:

tar -xzvf ChmlFrp-0.51.2_240715_linux_amd64.tar.gz

解压之后打开里面的frpc.ini进行配置,在网页->配置文件中生成的文本复制替换掉原来的文本:

在这里插入图片描述

在这里插入图片描述

保存frpc.ini之后,为了让端口映射,每次开机都会自动启动,所以我们要配置一下开机自启动

创建文件,并编辑文件:

nano /lib/systemd/system/frpc.service

填入以下内容:

[Unit]
#服务描述
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#执行命令 这里对应是你自己的文件地址,不要搞错
ExecStart=/home/frpc/frpc -c /home/frpc/frpc.ini

[Install]
WantedBy=multi-user.target

编辑完,保存了之后,开启frpc:

sudo systemctl start frpc

设置开机自启动:

sudo systemctl enable frpc

当修改配置文件的时候,需要重启服务:

sudo systemctl restart frpc

查看服务是否启动成功:

root@sumengxian-OptiPlex-3050:/# sudo systemctl status frpc
● frpc.service - frpc service
     Loaded: loaded (/usr/lib/systemd/system/frpc.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-10-11 16:35:48 CST; 8h ago
   Main PID: 5958 (frpc)
      Tasks: 7 (limit: 9306)
     Memory: 18.2M (peak: 20.5M)
        CPU: 6.714s
     CGroup: /system.slice/frpc.service
             └─5958 /home/frpc/frpc -c /home/frpc/frpc.ini

此时就可以在刚刚配置好的公网ip和端口来访问自己的我的世界服务器了。

参考文章:

Linux下开机自动启动FRP - 爱吃猪的罐头鱼 - 博客园 (cnblogs.com)

Minecraft 1.20.1 Forge服务器保姆级搭建教程 (使用mcsm面板 | 两种启动方式)_mcsmanager panel怎么加mod-CSDN博客

Ubuntu中安装和配置SSH的完全指南_ubuntu ssh配置-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前车之鉴】坑啊~ RestHighLevelClient 超时时间偶尔失效问题解决方案

文章目录 show me code缘起原因分析 几点建议 结论&#xff1a;实际你的配置是生效的&#xff0c;只不过效果不明显而已&#xff0c;通过下面的配置放大直观效果。 show me code 核心代码 public static void main(String[] args) {RestClientBuilder builder RestClient.bu…

【M2TR】M2TR: Multi-modal Multi-scale Transformers for Deepfake Detection

文章目录 M2TR: Multi-modal Multi-scale Transformers for Deepfake Detectionkey points研究贡献方法多尺度变压器频率过滤器跨模态融合损失函数SR-DF数据集实验总结M2TR: Multi-modal Multi-scale Transformers for Deepfake Detection 会议/期刊:ICMR ’22 作者: key …

深入理解栈(Stack)(纯小白进)

目录&#xff1a; 一、栈是什么&#xff1f;1. 栈的概念2.栈的结构选择 二、栈的实现1. 栈结构体的定义2. 栈的初始化3. 栈的销毁4. 入栈5.出栈6. 取栈顶元素7. 栈中元素的个数8. 判断栈是否为空 总结 一、栈是什么&#xff1f; 1. 栈的概念 栈&#xff08;Stack&#xff09;…

游戏开发指南:使用 UOS C# 云函数快速构建与部署服务端逻辑实战教学

零基础的服务端小白&#xff0c;现在也可以使用 Unity 结合 C# 来轻松搞定游戏服务端啦&#xff01; 在本篇文章中&#xff0c;我们将以游戏中的“抽卡”功能为例&#xff0c;展示如何使用 Unity Online Services&#xff08;UOS&#xff09;提供的强大 C# 云函数服务&#xf…

Elasticsearch(二)集成Spring Boot 基本的API操作

目录 一、集成Spring Boot 1、创建项目 2、pom文件 查看springboot集成的依赖 3、增加es的config类 二、索引相关API 1、创建索引 2、获取索引&#xff0c;判断其是否存在 3、删除索引 三、文档相关API 1、添加文档 2、获取文档&#xff0c;判断是否存在 3、获取文档…

Java后端面试----某团一面

美团一面 1.介绍一下你的第一个项目 这个就不多说了&#xff0c;主要是根据自己的简历上面的项目进行一个简短的概括使用的技术栈和什么背景解决了什么问题等等。 2.线程安全的类有哪些&#xff0c;平时有使用过哪些&#xff0c;主要解决什么问题 在Java中线程安全的类比如…

对后端返回的日期属性进行格式化(扩展 Spring MVC 的消息转换器)

格式化之前 格式化之后&#xff1a; 解决方式 方式一 在属性中加上注解&#xff0c;对日期进行格式化 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//JsonFormat(pattern &quo…

echarts按需引入解决项目大小问题

背景&#xff1a; 按需加载缩减项目大小&#xff0c;提升项目性能和可用性 实现&#xff1a; 创建echarts.js main.js进行配置 页面中引用 效果 全量导入 按需加载&#xff1a;

Chrome清除nslookup解析记录 - 强制http访问 - 如何禁止chrome 强制跳转https

步骤&#xff1a; 地址栏输入 chrome://net-internals/#hsts在Delete domain 栏的输入框中输入要http访问的域名&#xff0c;然后点击“delete”按钮最后在Query domain 栏中搜索刚才输入的域名&#xff0c;点击“query”按钮后如果提示“Not found”即可&#xff01; 办法来自…

Linux系统:apt upgrade与apt update 命令的作用

一.sudo apt update命令 sudo apt update命令的主要作用是更新本地软件包列表。‌ 它不会下载或安装新的软件包&#xff0c;而是更新本地系统中软件包的列表&#xff0c;以反映远程存储库中的最新可用软件包信息。这确保了软件包管理器&#xff08;APT&#xff09;具有最新的软…

第十六周周报:单发的目标检测系列

目录 摘要 Abstract 一、SSD 1.1 模型结构 1.2 代码 二、YOLO 三、Termius 总结 摘要 本周主要学习单阶段的目标检测算法&#xff0c;如SSD、YOLO模型。详细学习了每个模型的原理&#xff0c;以及SSD和YOLO模型之间的异同。在本篇博客中将展示SSD的PyTorch实现代码&am…

Django使用uwsgi和nginx进行手动部署

在Django项目中使用uWSGI和Nginx进行部署是一种常见的生产环境配置。以下是一个详细的步骤指南&#xff0c;帮助你完成这个过程。 前提条件 有一个已经开发好的Django项目。服务器已安装Python、pip、Nginx和uWSGI。有一个有效的域名(可选&#xff0c;但推荐)。 步骤一&#xf…

CPU指令融合技术概述

什么是指令融合&#xff1f; 某些指令&#xff0c;例如add $3,$2,0, 只会使用rd/rs两个字段&#xff0c;但是这条指令却占用了全部32个bit, 这样会使得代码密度不高&#xff0c;指令域的有效利用率不高&#xff1b;这样&#xff0c;在实现某些功能的情况下&#xff0c;会使得CP…

Java创建线程池和线程池的七个核心参数

线程池的工作流程是&#xff1a;当一个任务被提交到线程池时&#xff0c;线程池会根据当前的线程数量和工作队列的状态来决定如何处理这个任务。如果当前运行的线程数量小于corePoolSize&#xff0c;则创建新线程执行任务&#xff1b;如果大于等于corePoolSize&#xff0c;则将…

毕设开源 大数据电影数据分析与可视化系统(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 &#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

完全免费安卓远程安卓方案:FRP+ADB甲壳虫方案,远程手机不是问题。

引言 在当今这个数字化时代&#xff0c;无论是在个人项目还是商业应用中&#xff0c;能够从公网访问到内网设备的能力变得越来越重要&#xff0c;尤其是安卓终端设备&#xff0c;在必要的情况下&#xff0c;从安卓远程到安卓进行紧急指导救援是未来一种重要的趋势. 通过合理的…

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…

3种常用的缓存读写策略详解

在详解3种常用的缓存读写之前&#xff0c;我们先要了解什么事缓存读写。 缓存读写是指在使用缓存技术时&#xff0c;对数据进行读取和更新的操作过程。缓存是一种用于提高系统性能和可扩展性的技术&#xff0c;通过减少对慢速存储&#xff08;如数据库&#xff09;的访问次数&…

CAN总线仲裁机制

文章目录 1、什么是CAN总线仲裁&#xff1f;2、仲裁机制3、仲裁过程 1、什么是CAN总线仲裁&#xff1f; CAN总线上的每个节点都能监测到总线上发送的数据&#xff0c;当总线空闲时每个节点都能够进行报文发送&#xff0c;多个节点同时发送报文时&#xff0c;最终由哪个节点来进…

中间件有哪些分类?

中间件的分类 中间件是位于操作系统和应用程序之间的软件&#xff0c;它提供了一系列服务来简化分布式系统中的应用程序开发和集成。中间件可以根据其功能和用途被分为不同的类别。以下是中间件的一些主要分类&#xff1a; 1. 通信处理&#xff08;消息&#xff09;中间件&am…