hsiaoshun/noname

By hsiaoshun

Updated 3 months ago

三国杀(无名版)Web服务和联机服务一起集成。联机IP即当前服务器IP

Image
Integration & delivery
10

10K+

hsiaoshun/noname repository overview

本镜像(开源地址 https://github.com/xiaochun-z/noname/ )是基于原地址( https://github.com/libccy/noname )的master分支所作,是基于原来基础上的docker化。 主要解决部署难的问题,使用此镜像可一键部署此你的服务器(或你家里局域网的服务器,以供家人娱乐)。 联机服务一并包含在内,需要联机时,输入当前服务器的IP即可。

例如,你当前在 192.168.2.5 部署本镜像,可以遵循下列步骤。

  1. 在服务器上,即192.168.2.5上安装docker相关服务,docker服务安装方式此处不再赘述。
  2. 运行命令
docker run -d --name sgs -p 80:80 -p 8080:8082 --restart unless-stopped hsiaoshun/noname:latest
  1. 访问网址:http://192.168.2.5 (再次提醒,此处假定这是服务器IP,你的docker服务所在IP大概率不是这个。)
  2. 开始单机游戏或联机游戏。联机时输入 192.168.2.5 ,此联机IP跟当前服务器IP相同。
  3. ServiceWorker需要https,需要支持https才能活得完全支持,需自行签名证书,确保能访问 https://192.168.2.5 而不是 http://192.168.2.5 (IP只是举例,你的可能是192.168.0.117 / 192.168.1.135 等等,视你网络环境而定),支持https后,网络联机可以使用 wss://192.168.2.5:[port]

与traefik集成

sgs.ent.shenhe.org替换成你自己的域名并解析到局域网的IP地址,例如192.168.2.6。 下面的例子中,输入联机地址填写wss://sgs.ent.shenhe.org/ws

name: basic-service

services:
  reverse-proxy:
    image: docker.io/traefik:latest
    container_name: traefik
    command:
      - --api.insecure=true
      - --providers.docker=true
      - --providers.docker.exposedByDefault=false
      - --providers.docker.network=traefik-net # 确保与下方 networks key 一致
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --api.dashboard=false
      - --entrypoints.websecure.http.tls=true
      - --providers.file.directory=/etc/traefik/dynamic
      - --providers.file.watch=true
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - path/to/docker/all/traefik/certs:/etc/certs/:ro # 放置你的证书位置
      - path/to/docker/all/traefik/dynamic:/etc/traefik/dynamic:ro # 文件内容参考后面
    restart: unless-stopped
    networks:
      - traefik-net

  sgs:
    container_name: sgs
    image: hsiaoshun/noname:latest
    restart: unless-stopped
    labels:
      - traefik.enable=true
      # Web 路由
      - traefik.http.routers.sgs-web.rule=Host(`sgs.ent.shenhe.org`) && PathPrefix(`/`)
      - traefik.http.routers.sgs-web.entrypoints=websecure
      - traefik.http.routers.sgs-web.service=sgs-web-svc
      - traefik.http.services.sgs-web-svc.loadbalancer.server.port=80
      
      # WebSocket 路由
      - traefik.http.routers.sgs-websocket.rule=Host(`sgs.ent.shenhe.org`) && PathPrefix(`/ws`)
      - traefik.http.routers.sgs-websocket.entrypoints=websecure
      - traefik.http.routers.sgs-websocket.service=sgs-websocket-svc
      - traefik.http.routers.sgs-websocket.middlewares=strip-ws@docker
      # Sticky Cookie 配置 (服务名需匹配 sgs-websocket-svc)
      - traefik.http.services.sgs-websocket-svc.loadbalancer.server.port=8082
      - traefik.http.services.sgs-websocket-svc.loadbalancer.sticky.cookie.name=__sgs_sticky
      - traefik.http.services.sgs-websocket-svc.loadbalancer.sticky.cookie.secure=true
      - traefik.http.services.sgs-websocket-svc.loadbalancer.sticky.cookie.httponly=true
      
      # 中间件定义
      - traefik.http.middlewares.strip-ws.stripprefix.prefixes=/ws
    networks:
      - traefik-net

networks:
  traefik-net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.5.1.0/24
          gateway: 10.5.1.1

你可以使用自签名https证书,或通过let's encrypt获取。

traefik 的 dynamic文件内容

# path/to/docker/all/traefik/dynamic/dynamic.yml
tls:
  certificates:
    - certFile: "/etc/certs/ent.shenhe.crt"
      keyFile: "/etc/certs/ent.shenhe.key"

  stores:
    default:
      defaultCertificate:
        certFile: "/etc/certs/ent.shenhe.crt"
        keyFile: "/etc/certs/ent.shenhe.key"
http:
  middlewares:
    redirect-to-https:
      redirectscheme:
        scheme: https
        permanent: true

log:
  level: ERROR # TRACE, DEBUG, INFO, WARN, ERROR, FATAL

Tag summary

Content type

Image

Digest

sha256:434de1781

Size

1.2 GB

Last updated

3 months ago

docker pull hsiaoshun/noname