-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver_config.yml
More file actions
217 lines (176 loc) · 9.65 KB
/
Copy pathserver_config.yml
File metadata and controls
217 lines (176 loc) · 9.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# Phira-mp+ 服务端配置文件
# 所有选项均有默认值,可按需覆盖。
# 默认读取当前工作目录的 server_config.yml,也可通过 --config <FILE> 指定。
# 只有显式提供的命令行参数才覆盖同名 YAML 字段;RUST_LOG/NO_COLOR 只影响日志或终端显示。
# 完整说明见 docs/deployment.md。
# ---- 网络 ----
# TCP 监听端口(游戏客户端直连)
port: 12346
# PMP HTTP/SSE/WebSocket 端口。仅应位于受控网络,不直接暴露公网。
http_port: 12347
# HTTP/SSE 监听地址。默认 0.0.0.0(所有接口)。
# 生产环境中如通过反向代理访问,建议改为 127.0.0.1。
# http_bind_address: "0.0.0.0"
# 可信转发头兼容监听端口。该端口读取 X-Forwarded-For;它不是 HAProxy PROXY protocol v1/v2。
# 只能放在可信反向代理之后,禁止直接暴露给不可信客户端。设为 0 禁用。
# trusted_forwarded_http_port: 12344
# HAProxy PROXY protocol v1/v2 来源 CIDR 白名单。
# 启用后,从这些 CIDR 来源的连接会先读取 PROXY protocol 头部并用其中转发的
# 客户端地址替代 socket peer 地址进行认证与限速。
# 必须在可信网络内部署(如负载均衡器->后端服务器)。
#
# 示例:
# proxy_allow_cidr: "10.0.0.0/8"
# proxy_allow_cidr: "10.0.0.0/8,192.168.0.0/16"
# 设为空或注释掉即禁用。
# proxy_allow_cidr: "10.0.0.0/8"
# 认证完成前与在线会话容量。认证任务通过有界并发执行,避免慢认证阻塞 TCP accept。
max_sessions: 4096
max_pending_auth: 256
# SIGTERM/Ctrl+C 后,通知会话、插件事件、持久化 flush 与受监督任务退出共享的总时限。
graceful_shutdown_timeout_secs: 15
# ---- 认证 / Phira API ----
# 允许旁观的 Phira 用户 ID 列表
monitors:
- 2
# 全局 Phira API 端点。认证默认使用它;房间未设置覆盖时,查谱面、查成绩也使用它。
# 单个房间可用 `room set <房间ID> phira_api_endpoint <url>` 临时覆盖,设置后立即生效。
phira_api_endpoint: "https://phira.5wyxi.com"
# ---- 真实网络压测(高级) ----
# Real Benchmark 是显式真实网络测试,默认不推荐。
# Simulation 不需要 token,不访问 Phira。
# 如需使用 Real Benchmark,请看 docs/simulation.md。
# ---- 插件 / 数据 ----
# 插件目录路径(存放 .wasm 文件)
plugins_dir: plugins
# 扩展数据持久化 JSON 文件路径
# extensions_file: data/extensions.json
# PostgreSQL 数据库连接。留空时默认尝试 postgres://postgres:postgres@localhost:5432/phira_mp_plus,会自动建库。
database_url: ""
# runtime:
# persistence_queue_capacity: 4096
# # 数据库重试耗尽后的失败事件保全。设为 null 可禁用;禁用后若数据库最终失败,Supervisor 会进入 degraded。
# # dead-letter 是数据库最终失败保全;WAL 则覆盖进入内存队列前的崩溃窗口。
# persistence_dead_letter_path: data/persistence-dead-letter.jsonl
# persistence_wal_path: data/persistence-worker.wal.jsonl # fsync before queue admission; replayed on startup
# phira_http:
# timeout_ms: 5000
# max_retries: 3
# base_backoff_ms: 200
# max_backoff_ms: 3000
# circuit_breaker:
# enabled: true
# failure_threshold: 8
# open_duration_ms: 20000
# ---- 官方客户端兼容(PMP42) ----
# 官方 Phira 客户端为不可变兼容目标。PMP 必须复现官方 phira-mp 的可观察行为。
compatibility:
# 是否针对未修改的官方客户端启用兼容延迟。设为 false 可做差分/压测。
official_phira_client: true
# 请求型命令响应的最低服务端延迟(毫秒),从收到命令开始计时。
# 默认 0:官方客户端 rcall 在 send 后本地注册回调(微秒级),远快于
# 网络响应往返,无回调安装竞态。
minimum_response_latency_ms: 0
# 单条普通客户端命令的总业务 deadline(毫秒),覆盖 mailbox 发送与 reply
# 两个阶段。必须明显小于官方客户端约 7 秒的固定等待。
session_command_deadline_ms: 4500
# PMP45 P0-I: 权威提交后保留的响应/发送/flush 预算(毫秒)。总命令 deadline
# 拆分为 commit budget(= 总预算 - 本值)与 response budget(= 本值)。
# authoritative 提交必须在 commit deadline 前完成,留下本值时间用于最小响应
# 时延与 flush——避免「服务端已提交、客户端已超时」。范围 200..=2500ms,
# 且必须严格小于 session_command_deadline_ms。
commit_response_reserve_ms: 1000
# 认证绝对预算(毫秒)。认证流程(Phira API + 重试 + 退避 + WAL admission +
# 最低响应时延 + 响应 flush)共用该预算,必须早于官方客户端约 7 秒 deadline。
auth_deadline_ms: 5000
# PMP44 P0-G: 出站认证屏障(SessionOutboundGate)缓冲上限。认证握手期间
# 房间广播进入该缓冲;超过上限丢弃高频事件(或按 drop-oldest 策略处理)。
gate_max_pending_events: 256
gate_max_pending_bytes: 1048576
# 认证屏障最大持续时间(毫秒)。超过后强制关闭认证(fail-closed)。
gate_max_auth_duration_ms: 8000
# ProtocolHack 补偿消息延迟(毫秒)。省略时回退到 minimum_response_latency_ms
# (默认 0ms);设为 0 可做差分测试(与官方/无补偿时序对比)。
# 补偿消息(ChangeHost/ChangeState/持久房间/回放模拟)在官方响应 flush 后
# 按固定顺序调度,不阻塞 Room Actor。
# protocol_hack_delay_ms: 10
# ---- 功能开关 ----
# 是否启用聊天功能
chat_enabled: true
# 是否启用交互式 TUI/CLI 管理控制台
cli_enabled: true
# ---- 房间 / 公开展示 ----
# 隐藏房间不是全局配置项,而是房间状态:
# - 房间名以 "-" 开头时默认隐藏;
# - 隐藏房间不会出现在 Web API 与欢迎语 [active_rooms] 中;
# - 可通过 room hide/unhide、room set <id> hidden true|false、WIT/API 手动管理。
# 最大房间数(不设则无限制)
# max_rooms: 100
# 每房间最大玩家数(不设则使用默认 100)
# max_users_per_room: 100
# 每房间内存保留的最近游玩轮次上限(房间信息 rounds 展示用,默认 100)
# play_history_cache_size: 100
# ---- 限速 / 数据保留 ----
# 连接速率限制(每个窗口内允许的连接次数)
connection_rate_limit: 30
# 连接速率统计窗口(秒)
connection_rate_window: 10
# 每表保留策略(任意 PMP PostgreSQL 表)。time_col = 表的时间列(BIGINT 毫秒,必填);
# max_rows 超限清最旧行至 80%;days 超期删除。缺省该表不清理。
# 回放数据源 mp_round_player_data 保留需宽裕;遥测表可设小(只影响观测不影响回放)。
# table_retention:
# mp_events: { max_rows: 200000, days: 7, time_col: created_at }
# mp_room_snapshots: { max_rows: 50000, days: 7, time_col: created_at }
# mp_user_visits: { max_rows: 100000, days: 30, time_col: created_at }
# mp_runtime_telemetry_batches: { max_rows: 50000, days: 7, time_col: created_at }
# mp_runtime_telemetry_items: { max_rows: 100000, days: 7, time_col: created_at }
# mp_round_player_data: { days: 30, time_col: updated_at }
# mp_round_results: { days: 30, time_col: updated_at }
# mp_rounds: { days: 30, time_col: updated_at }
# ---- WASM 运行时限制 ----
# WASM 插件资源限制。一般无需修改;插件较大或事件较多时可按需调高。
# wasm_runtime:
# max_memory_mb: 64
# fuel_per_call: 10000000
# max_stack_bytes: 2097152
# http_timeout_secs: 10
# max_http_response_bytes: 2097152
# max_file_bytes: 4194304
# allow_private_network: false
# max_event_concurrency: 8 # 单个有序事件内并行执行的插件数
# event_queue_capacity: 2048
# call_timeout_ms: 2000
# init_timeout_ms: 10000
# ---- 自动更新 ----
# 自动更新默认关闭,需显式开启。开启后启动时与每隔 check_interval_secs 检查
# GitHub 最新 Release;检测到新版本且无在线玩家超过 min_idle_minutes 时,
# 自动下载匹配平台的资产、替换自身可执行文件并尝试重启。
# 也可通过 CLI `update auto on|off` 运行时开关。
# auto_update:
# enabled: false
# check_interval_secs: 3600
# min_idle_minutes: 10
# github_repo: "HyperSynapseNetwork/Phira-mp-plus"
# ---- 定制 / 管理 ----
# 服务器名称(显示在欢迎语等位置)
# server_name: "My Phira Server"
# 欢迎语(单文件配置)。缺省 = 内置国际化默认(随版本更新,按用户语言渲染)。
# messages 为 lang → 模板列表(占位符见 `welcome-config` 命令)。
# welcome:
# messages:
# zh-CN: ["欢迎 [user_name] 来到本服!当前在线 [player-count] 人。", "活跃房间:[active_rooms]"]
# en-US: ["Welcome [user_name]! [player-count] online.", "Active rooms: [active_rooms]"]
# show_time: true
# time_format: "%Y-%m-%d %H:%M"
# 游戏内管理员 Phira ID。管理员在创建房间弹窗输入 _<CLI命令> 时不会创建房间,
# 而是执行服务端 CLI 命令,并把输出通过聊天消息发回该客户端。
# 也可通过 CLI admin-id 或 WIT/host admin.* 动态维护。
admin_phira_ids: []
# 游玩时间排行榜过滤用户(不显示的 Phira ID,如测试站 Bot)。
# 全局过滤玩家(如测试站 Bot):不计游玩时长/排行榜/房间历史/领域事件,
# 只计入在线数与访问人次;自动更新空闲判定也剔除。已有数据启动时自动清除。
# filtered_player_ids: []
# ---- Sentry 错误监控 ----
# 将 sentry_dsn 设为有效的 Sentry DSN 以启用 panic/error 自动上报。
# 留空或注释掉即禁用。
sentry_dsn: "https://bfd3336a4f5ee99b6c99122476a335ba@o4511822631600128.ingest.de.sentry.io/4511822679048272"