Giter VIP home page Giter VIP logo

screeps-server-docker's Introduction

Screeps:World in Docker

从零开始用Docker搭建Screeps:World私人服务器

Background

网上已经有了很多关于用docker搭建Screeps:World私服的案例,但是“纸上得来终觉浅,绝知此事要躬行”。看得多了之后也决定自己试试。

Get Started

Dependencies

  1. 稳定的梯子。不管是拉取docker镜像还是获取Steam API Key都需要梯子,而且这不光是对PC的要求,也是对手机端的要求,Steam API Key的获取还需要手机验证。
  2. 系统:带WSL2的windows系统。因为是在Docker里跑,所以具体是什么系统没有很大关系。但一般都在windows下玩Steam,所以我用的windows系统。
  3. Docker Desktop,更新到最新版本即可,目前是4.26.1版本。
  4. Steam,Screeps:World Client。

Build

  • 如果可以访问dockerhub,可以直接拉取构建完成的镜像:

    docker push miniball/screeps-server:latest
  • 或者也可以从头开始构建。

    基础镜像是官方的debian镜像,debian:buster-slim,在此基础上先搭建基本的node环境,只要有国内镜像源加速应该就可以构建。在node-10目录下运行:

    docker build -t <image name>:<tag> .

    根据构建的node镜像名称,修改Dockerfile中第一行的镜像名。再切换到screeps-server目录下进行构建

    docker build -t <image name>:<tag> .

Run

创建docker-compose.yaml文件,根据docker-compose.yaml.example修改一下即可。注意将其中标记有TODO的位置。

Server在运行的时候,相关的文件是挂载到镜像上的,这样可以把数据,log都保存在本地。Container释放之后还能保留数据。

配置好docker-compose.yaml,创建server和db所需的文件夹后就可以运行啦。

docker-compose up -d

-d选项是为了让server在后台运行。

在docker desktop中可以看到正在运行的container的log,第一次启动可能需要比较长的时间,因为需要下载安装之类的。之后启动就比较快了,看到类似这么几个process起来了就好了。

server log

第一次启动docker后,需要启用mongoDB。同样在docker desktop中找到Exec的Tab,执行命令:

npx screeps cli

在出现的命令行界面中依次输入以下命令来启用MongoDB:

mongo.importDB()
system.resetAllData()

会出现如下结果:

import mongoDB

接着停止并删除container,再重新启动即可,至此server就搭建完成啦。

Others

如果想添加其它mod,可以直接在mods.json文件中改,然后安装相应的mod。而我为了让server轻量一些,就只选择了screepsmod-mongoscreepsmod-auth这两个我认为是必要的mod。前者可以避免很多奇怪的bug,而后者则是出于以下两个目的。

Upload Code

有了screepsmod-auth这个mod后,用户可以设置密码,同时也支持从本地上传代码了,用client里的代码编辑器比较痛苦。我在本地用的是cargo-screeps,要传代码到私服的时候需要注意设置用户名,密码,ssl和port。

Steamless Client

还有一个痛点是从steam启动screeps的client需要好久,所以就有了这个可以脱离steam的client:screeps-steamless-client。虽然不用启动steam了,但是它并不是完全脱离steam,还是需要事先在steam上下载好screeps client到本地。但总体来说还是比用steam方便很多。

Tips

  1. 在windows下写shell脚本注意文件的结尾换行符是LF还是CRLF
  2. 如果无法通过steam client登录server,可能是Steam API Key没有被验证,就是网不好,可以看server的logs/benkend.log
  3. 代码无法上传,可能是被错误地代理了,可以用wireshark抓包找一下问题。

screeps-server-docker's People

Contributors

qiujiandong avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.