树莓派快速部署《人生重开模拟器》

树莓派快速部署《人生重开模拟器》

前文章介绍了DuckDNS配合SWAG可以快速建站。本次继续实践如何在SWAG中部署Web服务。最近比较好玩的基于Nodejs开发的简易好玩的《人生重开模拟器》网页游戏很火,我们就来看怎么快速部署这个游戏。

理论上本方法不只适合树莓派,也适合其他平台。精力和设备有限没有在其他平台测试。

玩法1:局域网单独运行《人生重开模拟器》

我已经打好了这个游戏的docker镜像包。适合树莓派,也适合Windows和Linux,因为我amd64和arm的32和64都打包了,可以在Docker Hub上找到。运行起来非常简单,直接在已经安装了docker软件的系统下运行

docker run -p 8080:8080 --name liferestart -d jmujmu/life_restart

如果发现8080占用,灵活更改即可。正常启动后打开http://localhost:8080/view/index.html 即可开玩。

Screenshot-2021-09-15-at-23-24-18-Life-Restart

到目前为止不喜欢折腾,满足自己要求直接开玩的同学到这里就可以了。将IP替换成局域网IP,也能在局域网范围内传播游玩,适合学校办公室等场合。

玩法2:公网运行《人生重开模拟器》

这里提供完整的docker-compose.yml文件,个别部分修改好,执行了再说。如有不明之处,可阅读前文的DuckDNS+GoDNS+SWAG组合搭建

version: "2.1"
services:
  liferestart:
    image: jmujmu/life_restart:latest
    container_name: liferestart
    restart: unless-stopped
    ports:
      - 8080:8080
  duckdns:
    image: timothyye/godns:latest
    container_name: godns
    volumes:
      - /mnt/nas/docker/duckdns/config.json:/config.json
    restart: always
  swag:
    image: ghcr.io/linuxserver/swag
    container_name: duckdns-swag
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - URL=jmu.duckdns.org
      - SUBDOMAINS=wildcard
      - VALIDATION=duckdns
      - DUCKDNSTOKEN=xxxx
      #- CERTPROVIDER= #optional
      #- DNSPLUGIN=cloudflare #optional
      - PROPAGATION= #optional
      - EMAIL= #optional
      - ONLY_SUBDOMAINS=false #optional
      - EXTRA_DOMAINS= #optional
      - STAGING=false #optional
      - MAXMINDDB_LICENSE_KEY= #optional
    volumes:
      - /mnt/nas/docker/duckdns/config:/config
    ports:
      - 9943:443
      - 9980:80 #optional
    restart: unless-stopped

保存后在当前目录执行docker-compose up -d

动手编写《人生重开模拟器》的proxy-confs

直接将此配置命名liferestart.subdomain.conf位保存到/config/nginx/proxy-confs/下。
liferestart.subdomain.conf, 注意修改<ip>成真实内网ip和端口

这里使用IP,而不是host的原因是,liferestart的代码package.json中,webpack并没有设置host,也没有允许所有host。为了保持其原样,没有使用host。

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name liferestart.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        #include /config/nginx/proxy.conf;
        #include /config/nginx/resolver.conf;

        set $upstream_app <ip>;
        set $upstream_port 8080;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

确认文件正确,保存后。 重启SWAG服务就会生效。

docker restart duckdns-swag

到此为止,所要做的工作就全部完成了。访问路径形如https://liferestart.jmu.duckdns.org:9433/view/index.html, 分享给小伙伴一起来玩耍吧!


(扩展阅读)关于SWAG的proxy-confs

我们详细来看一看SWAG。SWAG只要正确运行,就会自动生成config/目录下所有文件。除了前文说过的,已经默认暴露了config/www的静态目录,可以直接提供如WordPress等服务外,还支持基于Nginx的灵活路由功能。它认为网站是以一个个服务(service)路由出去的,如plex,seafile,nextcloud等等,包含两种方式:

SWAG还贴心的默认配好了常见服务的路由配置,在/config/nginx/proxy-confs/目录下,有200之多。

.
├── README.md
├── _template.subdomain.conf.sample
├── _template.subfolder.conf.sample
├── adguard.subdomain.conf.sample
├── adminer.subfolder.conf.sample
├── adminmongo.subdomain.conf.sample
├── airsonic.subdomain.conf.sample
├── airsonic.subfolder.conf.sample
├── archisteamfarm.subdomain.conf.sample
├── aria2-with-webui.subdomain.conf.sample
...
0 directories, 222 files

这里面包含了,*.subfolder.conf*.subdomain.conf,如要使用,把相应文件结尾的.sample删掉即可。
详情更多可参考/config/nginx/proxy-confs/README.md,这些样例文件都在Linuxserver Github维护。这200多个文件中,基本上囊括了适合自部署(self-hosted)的几乎所有服务,linuxserver团队还是很厉害的。相信熟悉nginx的网友一看就懂,也不用听我啰嗦,可以方便地进行接下来的服务部署了。更多信息访问SWAG官网

完。