草庐IT

搭建我的世界java版服务器,公网远程联机【内网穿透】

Cpolar Lisa 2023-04-03 原文

文章目录


本次教程将在windows本地搭建java版的MC服务器,并用cpolar内网穿透突破局域网限制,实现在公网环境下跟小伙伴远程联机,超简单配置,无需公网IP,也不用设置路由器。

如果你的服务器已经搭建成功,并可以正常在局域网内联机,可以直接跳到第三步,在本地配置cpolar内网穿透,创建隧道映射25565端口,实现异地远程联机。


1. 搭建我的世界服务器

本次教程以windows10系统为例,配置java环境,搭建服务器。

1.1 服务器安装java环境

  • 下载java17

https://www.oracle.com/java/technologies/downloads/#jdk17-windows

选择exe文件,下载完成后双击安装包一路默认安装即可。

java安装完成后,打开文件夹,找到java,将jdk安装路径复制下来,本例中为C:\Program Files\Java\jdk-17.0.5

在开始菜单栏搜索高级系统设置并打开系统属性,点击环境变量

点击新建一个系统环境变量

  • 变量名:JAVA_HOME
  • 变量值:JDK的安装路径,本例中为C:\Program Files\Java\jdk-17.0.5

在系统变量列表中,双击Path变量

点击右侧的新建,在变量名值前面加%JAVA_HOME%\bin,点击确认

校验是否成功:开始菜单栏搜索cmd,打开命令提示符,输入javac,出现以下内容则说明配置成功。

1.2 配置服务端

下载MC服务端,最新版的服务器端可以官网下载

https://www.minecraft.net/zh-hans/download/server/

下载完成后,在文件所在的文件夹新建一个文本文档

然后打开这个文本文档输入以下信息

java -Xms1G -Xmx2G -jar server.jar nogui
pause
  • Xmx1024M:给服务器分配的最大内存
  • Xms1024M:给服务器分配的最小内存
  • server.jar:服务端名字 请务必保证服务端名字和指令中的相同

然后保存这个文本文档并关闭,重命名把后缀改成.bat(windows默认看不到后缀,可以设置一下)

双击打开.bat文件,这时候你会看到一个命令窗口,过一会它会自动关闭,你会看到文件夹有多出来一些文件,找到eula.txt这个文件并打开

将eula=false改为eula=true,然后保存

打开server.properties文件,做如下改动:online-mode=false(关闭正版验证),其他改动可以按照自己的喜好。至此服务器已经配置完毕,服务器的设置详情都在server.properties。

重新点击.bat文件,即可打开服务器。

2. 测试局域网联机

打开我的世界启动器,点击进入游戏,选择多人游戏

点击添加服务器

  • 服务器名称
  • 服务器地址:填写本地ip地址+mc端口号(默认为25565),如127.0.0.1:25565

点击完成

选择刚刚创建的服务器后,点击加入服务器

连接成功,接下来测试在公网环境下远程联机。

3. 公网远程联机

上面我们实现了在局域网内的联机,接下来我们将突破局域网的限制,实现在公网环境下的远程联机,通过cpolar内网穿透,将内网端口映射到公网上,其会生成相应的公网地址,异地小伙伴就可以通过该公网地址远程联机一起玩了,不需要公网ip,也不用设置路由器,操作简单。

3.1 安装cpolar内网穿透

cpolar官网:https://www.cpolar.com/

3.1.1 windows系统

在官网下载下载适用于Windows平台的zip压缩包,解压后得到cpolar安装包,然后双击安装包一路默认安装即可。

3.1.2 linux系统(支持一键自动安装脚本)

  • cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

或cpolar短链接安装方式:(国外使用)

curl -sL https://git.io/cpolar | sudo bash
  • 查看版本号
cpolar version
  • token认证
    登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里
cpolar authtoken xxxxxxx
  • 简单穿透测试
cpolar http 8080

正常生成公网地址,按ctrl+c退出

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar
  • 查看服务状态,正常显示为active,即为已启动状态
sudo systemctl status cpolar

3.2 创建隧道映射内网端口

cpolar安装成功后,在浏览器上访问cpolar web UI管理界面(默认为本地9200端口),以【 http://本地ip地址:9200 】形式访问,如http://127.0.0.1:9200/,并使用cpolar账号登录

登录成功后,点击左侧的隧道管理——创建隧道:

  • 隧道名称:可自定义命名,注意不要与已有隧道名称重复
  • 协议:选择tcp协议
  • 本地地址:25565(我的世界默认端口号)
  • 端口类型:随机临时TCP端口
  • 地区:China vip

点击创建

隧道创建成功后,页面自动跳转至隧道列表页面,可以看到状态正常显示为active,为正常在线状态

点击左侧仪表盘的状态——在线隧道列表,可以看到刚刚创建成功的我的世界隧道已经有生成了相应的公网地址,我们将其复制下来,注意tcp://无需复制,本例中为3.tcp.vip.cpolar.cn:10786

3.3 测试公网远程联机

启动我的世界,可以直接添加一个新的服务器,或者编辑刚刚添加的本地服务器

在服务器地址栏,输入cpolar所生成的公网地址3.tcp.vip.cpolar.cn:10786,点击完成

加入服务器,公网远程联机成功

4. 配置固定TCP端口地址

需要注意的是,以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。为了方便小伙伴远程联机,我们接下来为其配置固定的TCP端口地址,该地址不会变化,方便小伙伴远程联机,而无需每天重复修改服务器地址。

4.1 保留一个固定tcp地址

登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为我的世界保留一个固定tcp地址:

  • 地区:选择China vip
  • 描述:即备注,可自定义

点击保留

地址保留成功后,系统会生成相应的固定公网地址,本例为5.tcp.vip.cpolar.cn:12637,将其复制下来

4.2 配置固定tcp地址

在浏览器上访问9200端口,http://127.0.0.1:9200/,登录cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我的世界隧道,点击右侧的编辑

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写保留成功的地址,本例为5.tcp.vip.cpolar.cn:12637

点击更新

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到我的世界隧道,可以看到公网地址已经更新成为了固定tcp地址。

测试使用固定公网TCP端口地址远程联机

公网远程联机成功!现在,该公网地址不会再随机变化了。

有关搭建我的世界java版服务器,公网远程联机【内网穿透】的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  7. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  8. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  9. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  10. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

随机推荐