Sign inSign up

criogaid/noname-server

By criogaid

•Updated 11 days ago

无名杀服务器 Noname-Server

Image
0

2.5K

criogaid/noname-server repository overview

⁠无名杀联机服务器 / Noname Server⁠

🐳 基于上游原生 packages/server 源码构建的多架构无名杀联机 WebSocket 服务器。

本镜像直接从 libnoname/noname⁠ 的稳定 release 源码构建,提供联机大厅、房间管理和客户端消息中继服务。

本镜像由社区维护,并非 libnoname/noname 官方发布的容器镜像。服务器实现来自上游官方仓库,本项目只负责 Docker 封装和多架构自动发布。

⁠功能

  • 使用上游原生 packages/server⁠
  • 从精确的 release commit 构建,不跟踪不稳定的 main
  • 支持 linux/amd64、linux/arm64 和 linux/arm/v7
  • amd64、arm64 使用原生 GitHub runner 构建
  • ARMv7 在 ARM64 runner 上通过 QEMU 构建和验证
  • 以非 root node 用户运行
  • 内置 TCP 健康检查
  • 支持通过 PORT 环境变量修改监听端口
  • 每日自动检查新的稳定 Noname release
  • 版本镜像和 latest 通过三平台 immutable digest 校验后发布

⁠服务范围

该容器运行的是无名杀当前原生的联机 WebSocket 服务器,主要负责:

  • 联机大厅
  • 房间创建与加入
  • 玩家和房间列表
  • WebSocket 消息转发
  • 房主与其他客户端之间的消息中继
  • 心跳检测和连接清理

该镜像不包含:

  • 网页客户端
  • 游戏图片、音频等资源
  • Electron 客户端
  • 持久化房间或玩家数据

服务器状态保存在内存中,容器重启后现有房间和连接会消失,因此不需要挂载数据卷。

⁠端口说明

当前上游 packages/server 的默认端口是 8082。

旧版 criogaid/noname-server 使用已经废弃的 game/server.js,容器端口为 8080。升级到新版时必须将容器端口改为 8082。

⁠快速启动

docker run -d \
  --name noname-server \
  --restart unless-stopped \
  -p 8082:8082 \
  --security-opt no-new-privileges:true \
  --cap-drop ALL \
  criogaid/noname-server:latest

在无名杀客户端的联机地址中填写:

YOUR_SERVER_ADDRESS:8082

查看运行状态:

docker ps --filter name=noname-server
docker logs noname-server
docker inspect --format '{{.State.Health.Status}}' noname-server

启动成功后会看到:

Server listening on port 8082

⁠保留宿主机端口 8080

如果已有防火墙、域名或客户端仍使用宿主机端口 8080,可以只修改端口映射:

docker run -d \
  --name noname-server \
  --restart unless-stopped \
  -p 8080:8082 \
  --security-opt no-new-privileges:true \
  --cap-drop ALL \
  criogaid/noname-server:latest

此时客户端继续连接:

YOUR_SERVER_ADDRESS:8080

容器内部仍使用上游默认端口 8082。

⁠自定义监听端口

通过 PORT 环境变量同时修改容器监听端口和端口映射:

docker run -d \
  --name noname-server \
  --restart unless-stopped \
  -e PORT=9000 \
  -p 9000:9000 \
  --security-opt no-new-privileges:true \
  --cap-drop ALL \
  criogaid/noname-server:latest

⁠Docker Compose

services:
  noname-server:
    image: criogaid/noname-server:latest
    container_name: noname-server
    restart: unless-stopped
    ports:
      - "8082:8082"
    environment:
      PORT: "8082"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

启动服务:

docker compose up -d

查看状态和日志:

docker compose ps
docker compose logs -f noname-server

⁠反向代理

该服务使用 WebSocket。通过 Nginx、Caddy、Traefik 或其他反向代理公开服务时,必须启用 WebSocket Upgrade 转发。

Nginx 示例:

location / {
    proxy_pass http://127.0.0.1:8082;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果直接暴露 TCP 端口,则不需要配置 HTTP 反向代理。

⁠支持的平台

平台构建方式
linux/amd64原生 amd64 GitHub runner
linux/arm64原生 ARM64 GitHub runner
linux/arm/v7ARM64 runner + QEMU

Docker 会根据主机架构自动选择正确的镜像。

⁠镜像标签

  • latest:最新支持的稳定 Noname release
  • 1.x.x[.x...]:对应上游版本,移除 release tag 开头的 v

例如,上游 release v1.11.5.1 对应:

docker pull criogaid/noname-server:1.11.5.1

使用固定版本可以避免自动升级:

services:
  noname-server:
    image: criogaid/noname-server:1.11.5.1

⁠版本与构建来源

自动化流程只接受以下格式的稳定 release:

v1.11.5
v1.11.5.1
v1.10.17.4.1

类似 chromium91-client 的非服务器版本不会触发构建。

每个平台都会:

  1. 从 release 对应的精确 40 位 commit 获取 packages/server
  2. 使用上游提交的 pnpm lockfile安装依赖
  3. 构建并推送独立的 immutable digest
  4. 启动该 digest 并检查健康状态
  5. 验证非 root 用户、WebSocket roomlist 响应和正常停止
  6. 三个平台全部成功后合并版本标签和 latest

镜像 OCI labels 中包含上游 release tag、commit SHA、源码地址和许可证信息。

⁠更新

docker pull criogaid/noname-server:latest
docker rm -f noname-server

然后使用原来的 docker run 命令重新创建容器。

使用 Docker Compose 时:

docker compose pull
docker compose up -d

⁠源码与许可证

本项目按 GPL-3.0 发布。对应版本的构建定义、上游 release tag 和 commit SHA 均保存在公开仓库及镜像元数据中。

Tag summary

Content type

Image

Digest

sha256:227fa4a36…

Size

58 MB

Last updated

11 days ago

docker pull criogaid/noname-server