Files
Piik/docs/operations/service-management.zh-CN.md
AAAandPedro Antonio c18502fd18 feat: improve microphone, chat and platform support
This release adds microphone processing controls and local chat controls, expands platform packages, and synchronizes the website and guides. It also fixes native H.264 input/format handling, signaling recovery, fresh STUN discovery, and UDP ownership during overlapping connections.

This is **v1.8.0**. Browser/Server v23, Native control v9 and capture v7 remain unchanged, with the existing 1440p ceiling. Additional resolutions, capability negotiation and Magicsock are separate follow-up work.

## Validation

- Full local Web check: 79 files / 1,317 tests, TypeScript and production build.
- Full Go checks, platform builds and Windows native capture regressions/probe.
- Native H.264 Host lifecycle, Browser-to-App fanout and App-exit recovery, and Native H.264 through embedded SFU: all passed with owned process/port/profile cleanup.
- Website build, documentation and repository hygiene passed. Existing UI acceptance covers narrow screens, both languages/themes, architecture downloads and all 23 film checks; final packaging and Go race checks run on the merged revision in CI.
- Physical macOS/Linux capture, representative public networks and unmatched field reports retain their documented evidence limits. No claim that every blur/disconnection report is resolved.

## Release notes

### 中文

这是一次功能与兼容性更新:麦克风和聊天增加了实用的小选项,App 与 Server 支持更多设备,同时修复了原生分享和连接恢复中的若干问题。现有 1.x 协议保持不变。

#### 新增与改进

- 浏览器麦克风新增「降噪与回声消除」开关,默认开启回声消除、降噪和自动增益;分享音乐或使用虚拟音频输入时,可按需关闭。
- 可调整弹幕字号和透明度,并将当前保留的聊天记录导出为 TXT。当前会话最多保留 1,000 条文字消息,刷新页面后清空;需要保存时请先导出。
- 新增 Intel Mac、Linux ARM64 App,以及 Linux ARM64 Server 和容器镜像。官网下载区可直接选择对应架构,并显示最新版本和发布时间。
- 更新官网演示、README 截图和中英文教程,明确浏览器分享也可选择窗口或屏幕;开始分享前显示房间号占位,保持底栏控件位置稳定。
- 官网新增直达问题排查的入口,补充浏览器 WebRTC 限制、校园网和 Windows 显卡相关的排查步骤。
- App 模式选择页显示免费开源说明、作者与贡献者署名,以及官方网站和源码链接。

#### 修复

- 修正部分 H.264 原生分享的格式兼容性校验,以及 Windows 编码器输入长度和输出缓冲区对齐问题。
- 清理已失效的重连任务和 Native 接收信令,避免旧连接继续影响当前会话。
- 修复 App 重连时可能复用过期公网地址的问题;重新探测使用当前地址,并处理探测丢包和过期响应,保留其他正常连接。
- 修复 App 新旧媒体连接重叠时共用端口造成的冲突,避免准备或撤销新连接打断仍在使用的画面;关闭连接时及时取消未完成的端口映射请求。
- 无站点密码时,连接恢复不再误引导用户输入站点密码。
- 房间失效或会话终止时,开播前后的原因提示统一显示在电视状态图标中,避免额外提示条。
- 修正 Linux 原生采集的时间戳与关键帧时间基准。感谢 Pedro Antonio 在 [#449](https://github.com/TNTcraftHIM/Piik/pull/449) 的贡献。

#### 使用说明

下载对应平台的完整压缩包,退出旧 App 后解压使用。Windows 继续提供 x64;macOS 提供 Apple 芯片与 Intel 版本,原生采集需要 macOS 13 或更新版本。Linux 提供 x64 与 ARM64,原生采集还需安装[系统组件](https://github.com/TNTcraftHIM/Piik/blob/main/native/capture/linux/README.md)。macOS 和 Linux 的实机覆盖仍有限,欢迎反馈。

### English

This update adds useful microphone and chat controls, brings Piik to more devices, and fixes several native-sharing and connection-recovery issues. The existing 1.x protocols remain unchanged.

#### New and improved

- Browser microphones now have a “Noise & echo reduction” toggle. Echo cancellation, noise suppression and automatic gain control are on by default; turn them off when appropriate for music or virtual audio inputs.
- Adjust chat-overlay text size and opacity, and export retained messages as TXT. The current session keeps up to 1,000 text messages and clears on page refresh; export first if you want to keep them.
- Added Intel Mac and Linux ARM64 App packages, plus Linux ARM64 Server and container images. The website provides architecture selectors and shows the latest release and publication date.
- Updated the website demonstration, README screenshots and bilingual guides, clarifying that browser capture can also select windows or screens. A room-code placeholder keeps the bottom bar stable before sharing starts.
- Added direct website links to troubleshooting, with steps for browser WebRTC restrictions, campus networks and Windows graphics issues.
- The App mode-selection page now shows its free and open-source status, author and contributor credit, and links to the official website and source.

#### Fixes

- Corrected H.264 format compatibility checks and Windows encoder input-length and output-buffer alignment handling.
- Retired stale reconnect tasks and Native receive signals so they cannot continue affecting the current session.
- Fixed App reconnection reusing an expired public address. Fresh discovery handles lost probes and stale responses while preserving other working connections.
- Fixed UDP socket conflicts between overlapping App media connections so preparing or canceling a replacement preserves the active picture. Closing a connection now cancels unfinished gateway mapping requests.
- Connection recovery on passwordless sites no longer incorrectly asks for a site passphrase.
- Expired-room and session-termination reasons now use the same TV status indicator before and during sharing, without an extra notice strip.
- Corrected Linux native capture timestamps and keyframe time bases. Thanks to Pedro Antonio for [#449](https://github.com/TNTcraftHIM/Piik/pull/449).

#### Updating

Download the complete archive for your platform, quit the old App, and extract the new package. Windows remains x64-only. macOS packages support Apple silicon and Intel; native capture requires macOS 13 or newer. Linux supports x64 and ARM64 and requires additional [system components](https://github.com/TNTcraftHIM/Piik/blob/main/native/capture/linux/README.md) for native capture. Physical-device coverage on macOS and Linux remains limited; feedback is welcome.

## Attribution

Co-authored-by: Pedro Antonio <wrenchwastaken@gmail.com>
2026-10-04 16:21:01 +08:00

5.3 KiB
Raw Permalink Blame History

服务管理

English · 简体中文 · 文档导航

首次安装请从部署指南开始。本页介绍 Linux 常驻服务与容器维护。

systemd

服务模板使用 piik 用户运行, 读取 /etc/piik/piik.env,启动 /opt/piik/current/piik-server。 请创建服务账号,将解压后的发布产物放在该路径,或让 current 指向对应发布目录。 将配置复制到 /etc/piik/piik.env,并设置 ROOM_DATABASE_PATH=/var/lib/piik/rooms.sqlite; 服务单元会创建这个状态目录。环境文件只应允许运维人员读取。

将模板安装为 /etc/systemd/system/piik.service,然后执行:

sudo systemctl daemon-reload
sudo systemctl enable --now piik
sudo systemctl status piik

HTTPS 代理与 Piik 在同一主机时,让 HTTP 继续绑定回环地址。 STUN 和可选的 SFU 使用各自的公网 UDP 监听器。已有 nginx 时,可修改 代理示例中的域名与证书路径后使用。

容器

安装步骤见 Docker Compose 配置。 镜像为 ghcr.io/tntcrafthim/piik,提供 latest 和对应产品版本标签(vMAJOR.MINOR.PATCH), Docker 会按主机架构选择 linux/amd64 或 linux/arm64。 在 .env 中设置 PIIK_IMAGE 可固定版本或镜像摘要。 更新需要手动执行;仅拉取镜像不会替换正在运行的容器。

运行时 Dockerfile封装已验证的 Server 压缩包, 包括网页界面、许可证声明和 REVISION。固定版本的 Distroless 非 root 基础镜像 包含 CA 证书,没有 shell 或包管理器。镜像的构建、检查和发布由 发布流程管理。

使用既有的生产配置。容器内保留 LISTEN_HOST=0.0.0.0, 并继续使用主机已有的 HTTPS/WebSocket 代理。使用 Docker 端口映射且启用 SFU 时, 将 SFU_PUBLIC_IP 设为外部可达的服务器 IPv4 地址;容器私网候选无法从互联网访问。 公布的 STUN 域名必须解析到服务器公网地址,UDP 必须能直接到达容器。

Compose 文件将 HTTP 绑定到主机回环地址, 公布标准 UDP 端口,并启用自动重启。公布端口不会开启对应服务,可选监听器由 .env 控制。 修改监听端口时,同时修改应用配置和端口映射。 请使用主机上的代理,或明确调整代理容器的网络配置;代理容器自己的 127.0.0.1 无法访问另一个容器内的 Piik。

镜像中的 /home/nonroot 属于 UID/GID 65532:65532,权限为 0700。 新的命名数据卷继承该目录;已有数据卷或绑定挂载需要事先允许该身份写入。 替换容器时保留这个数据卷。设置 ROOM_DATABASE_PATH=:memory: 可让房间权威状态只保存在内存中。 诊断保持手动开启,使用 /home/nonroot/logs;导出与保留 由运维人员负责。不要将应用文件挂载为可写。 启用诊断后,docker compose kill --signal=SIGUSR1 piik 会请求本地导出,不会停止容器; ZIP 保存在挂载的日志目录中。

从主机与公网代理检查 /healthz,再按运行验证检查已配置的 STUN/SFU UDP, 以及房间和媒体行为。镜像内没有基于 shell 的健康检查。 替换前保留旧镜像、环境配置与数据卷备份。在部署目录执行:

docker compose pull
docker compose stop
docker compose cp piik:/home/nonroot ./piik-data-backup
docker compose up -d
docker compose logs --tail=50 piik

每次使用新的备份目录。复制 SQLite 前先停止 Piik,确保数据库和日志文件一致。 单独保存 .env,并将配置和数据备份视为房间凭据加以保护。 保留同一个 Compose 项目与目录,以便继续使用原命名数据卷; docker compose down --volumes 会删除这些数据。 回滚时,恢复之前的镜像设置与兼容配置,再重新创建服务。 跨越存储格式边界前,先阅读发布说明。裸机部署脚本 release-server.sh 不管理容器。

运行验证

  • 本地和公网来源的 /healthz 都返回 {"status":"ok"}。
  • Piik 与 HTTPS 代理处于运行状态,重启次数符合预期,日志和资源使用有界; Piik 占有配置中的 STUN/SFU UDP 监听器。
  • 官方 Trickle ICE 示例能从配置的 STUN 服务取得普通 UDP srflx 候选,不出现 relay 候选。
  • Peer ICE 成功时,两个网络上的设备能在直连房间中显示媒体。
  • 启用 SFU 时,受限路由通过内嵌 SFU UDP 创建一个受管理的房主发布,且只接纳已授权订阅; Peer 后代节点继续使用普通 P2P。
  • 阻断全部 UDP 后,在有限时间内进入明确的失败状态。
  • 使用持久化模式时,重启 Piik 保留房间权威状态;浏览器会话和媒体从新进程状态重新连接。

代表性网络、移动端、音频、20 位观众和长时间运行的证据由 验证状态跟踪,不记录在本操作手册中。