Sign inSign up

criogaid/noname-server

By criogaid

Updated 10 days ago

无名杀服务器 Noname-Server

Image
0

2.4K

criogaid/noname-server repository overview

无名杀联机服务器 / Noname Server

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

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

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

功能

  • 使用上游原生 packages/server
  • 从精确的 release commit 构建,不跟踪不稳定的 main
  • 支持 linux/amd64linux/arm64linux/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:91ce497ab

Size

55.1 MB

Last updated

10 days ago

docker pull criogaid/noname-server