{{ site.site_title }}

加密安全对话

{{ authMode === 'login' ? '登录账号' : '注册账号' }}

{{ authMode === 'login' ? '使用邮箱或用户名登录。' : '使用邮箱验证码注册后即可生成加密对话链接。' }}

{{ usernameCheck.message }}

选择头像

{{ message }}

加密链接

进入加密对话

输入访问信息后即可进入当前会话。页面不会保留可读聊天记录,适合临时协作和私密沟通。

{{ nicknameLockNotice }}

{{ message }}

{{ groupWorkspaceEyebrow() }}

{{ groupWorkspaceTitle() }}

{{ directParticipantCountLabel() }}

{{ mobileChatStatusText() }}

当前群聊正在{{ activeGroupCallTypeLabel() }} {{ activeGroupCallStatusLine() }}
聊天信息 {{ currentLink.title || '群聊信息' }}

群成员 {{ groupMembers.length }}

{{ currentLink.title || '当前群聊' }}

{{ (groupMemberState && Number(groupMemberState.group_member_limit || 0)) || '不限' }}

在这里查看群成员,并继续处理群成员管理操作。聊天主界面会保持更专注的阅读体验。

{{ groupMemberDisplayLabel(m) }}{{ groupMemberRemark(m) }} {{ memberRoleLabel(m) }} · {{ memberStatusLabel(m) }} {{ groupMemberIpLabel(m) }}
正在引用 {{ activeQuote.sender_name }}
{{ voiceRecorder.sending ? '发送中...' : voiceRecorderDurationLabel() }}
取消
发送
{{ voiceRecorder.dragCancel ? '松开 取消' : '松开 发送' }}
{{ privateChatDisplayLabel(chat) }}{{ privateChatRemark(chat) }}
正在引用 {{ activeQuote.sender_name }}

后台管理

统计信息

{{ adminStatsBusy ? '正在刷新统计数据' : ('最近 ' + (admin.statistics?.range || admin.statisticsRange || 30) + ' 天') }} 生成时间:{{ admin.statistics?.ops?.generated_at || '-' }}
{{ card.label }} {{ card.bytes ? formatStatBytes(card.value) : formatStatNumber(card.value) }} {{ card.hint }}

ECharts 未加载,统计数据仍可查看,但图表无法渲染。

增长与活跃趋势注册、登录、链接、消息、附件
运维与审计趋势风控、审计、队列失败
链接类型加密私聊 / 加密群聊
游客访问允许游客 / 仅注册用户
链接状态活跃、关闭、销毁
内容保留策略默认清空、自定义清空、永久、退出清空
会话类型私聊会话、群聊主会话、群内私聊
会话状态活跃 / 待整理
消息类型文本、附件、系统
发送者类型用户、游客、管理员、系统
附件类型图片、音频、视频、文件
附件处理转码与预览状态
附件预览生成中、就绪、失败
附件大小按文件大小区间
消息小时热力按星期与小时聚合
群成员类型群主、注册用户、游客
群成员状态活跃、禁言、离开、移除
队列状态附件处理任务
风控类型注册与登录限制
小黑屋状态封禁、释放、过期
审计动作管理员操作分布
消息最多的链接Top 10
创建加密聊天最多的用户Top 10
附件体积最大的链接Top 10
{{ block.title }}{{ block.subtitle }}
暂无数据
{{ index + 1 }} {{ row.label || '未命名' }} {{ block.bytes ? formatStatBytes(row.value) : formatStatNumber(row.value) }}

站点设置

基础信息

服务器性能方案

{{ serverPerformanceProfileSummary() }}

{{ selectedServerPerformanceProfile()?.label || '中配档' }}
{{ profile.label }} {{ profile.server }}

{{ profile.summary }}

通话
{{ profile.call_capacity }}
转码
{{ profile.transcode_capacity }}
优势 {{ (profile.advantages || []).join(' / ') }}
影响 {{ (profile.risks || []).join(' / ') }}
移动端 {{ admin.settingsForm.call_mobile_video_fps }}fps / {{ formatCallBitrate(admin.settingsForm.call_mobile_video_bitrate) }} 桌面端 {{ admin.settingsForm.call_desktop_video_fps }}fps / {{ formatCallBitrate(admin.settingsForm.call_desktop_video_bitrate) }} 附件 {{ admin.settingsForm.attachment_max_mb }}MB / Worker {{ admin.settingsForm.media_worker_batch_limit }}

用于访客身份、群聊设备识别、注册/登录风控浏览器验证 cookie 的保留时间。

用户断线或离开后,超过该时间会释放单聊/群聊设备会话占用。

站点级单个附件上传上限;实际还会受用户配置模板和 PHP 上传上限共同限制。

非视频附件不超过该大小会加密存储;超过该大小但仍在上传上限内的附件将明文存储。

{{ site.php_upload_limit_label || 'PHP 上传上限信息暂不可用' }}

{{ uploadLimitWarning() }}

禁止上传的附件后缀

可逐行填写,也可用逗号、空格或分号分隔;留空则不限制附件后缀。移动端语音录制仍只允许浏览器录音音频格式,并交由 FFmpeg 转为 MP3。

音视频内联播放格式

{{ formatGroupLabel(group) }}

未列入禁止后缀的音视频格式可勾选为“对话内直接播放”;未勾选时仍可作为普通附件上传。

表情包启用

{{ pack.name }}

勾选后会在加密私聊、加密群聊、群私聊和后台实时会话的表情面板中生效;全部取消时表情面板将不再打开。

{{ ffmpegPlatformNote() }}

如果服务器禁用了 `exec`,系统会跳过 FFmpeg/FFprobe 媒体处理流程;附件仍可上传,但自动转码、压缩和视频封面能力会受限。语音消息可能停留在转码中或转码失败状态,无法保证统一 MP3 播放体验。

媒体转码性能

高性能档默认使用更快的 H.264 转码参数,并优先对已兼容的 H.264/AAC 视频做保留或快速 remux,以换取更高吞吐。

视频通话优先级

启用后,消息写入会额外发布到 Redis 频道;若 Redis 不可用,系统会自动回退数据库事件总线,不影响聊天可用性。

仅在已启动 `storage/bin/sse-server.php`,且 Nginx 已把 `/sse/` 代理到该服务后开启;未开启时前端会直接使用 PHP-FPM SSE,避免多一次失败连接。

开启后,QQ/微信内置浏览器访问首页、登录入口、用户中心和对话链接时,会显示“请使用浏览器打开”的提示页;后台、API 和静态资源不受影响。

{{ swooleSseStatus.message || (swooleSseStatus.ok ? 'Swoole SSE 正常' : 'Swoole SSE 异常') }} {{ swooleSseStatus.host || '127.0.0.1' }}:{{ swooleSseStatus.port || 9502 }}

{{ item.ok ? '通过' : '异常' }}:{{ item.name }},{{ item.detail }}

本机服务通过后,请在浏览器访问当前域名下的 `{{ swooleSseStatus.public_health_path || '/sse/health' }}`;如果返回 `ok=true`,说明宝塔 Nginx `/sse/` 代理也已生效。

后台新增或编辑用户时可选择这些模板;固定天数会按服务器当前时间或用户现有未过期时间顺延。

环境配置

数据库与环境状态

{{ adminDiagnostics.ok ? '状态正常' : '存在异常' }}
运行环境 {{ adminDiagnostics.checks?.length || 0 }} 项

{{ item.name }}:{{ item.detail }}

上传功能 {{ adminDiagnostics.upload_ok ? '可正常使用' : '存在兼容风险' }}

{{ item.name }}:{{ item.detail }}

实时与队列 {{ adminDiagnostics.realtime_mode_label || (adminDiagnostics.queue_ok ? '可正常使用' : '需要关注') }}

{{ item.name }}:{{ item.detail }}

Worker 运行痕迹 {{ adminDiagnostics.worker_trace && Object.keys(adminDiagnostics.worker_trace).length ? '已检测到最近一次运行痕迹' : '未检测到当前站点目录下的运行痕迹' }}
{{ adminDiagnostics.worker_trace && Object.keys(adminDiagnostics.worker_trace).length ? '已发现' : '未发现' }}

未发现任何 `storage/attachment-worker*.trace.json` 运行痕迹,说明当前站点目录下的 worker 尚未启动,或启动到了别的项目目录。

{{ adminDiagnostics.worker_trace.written_at || '-' }}
{{ adminDiagnostics.worker_trace.trace_path || '-' }}
{{ adminDiagnostics.worker_trace.event || '-' }} / {{ adminDiagnostics.worker_trace.mode || '-' }}
{{ adminDiagnostics.worker_trace.cwd || '-' }}
{{ adminDiagnostics.worker_trace.script_path || '-' }}
{{ adminDiagnostics.worker_trace.php_binary || '-' }}
{{ Array.isArray(adminDiagnostics.worker_trace.argv) ? adminDiagnostics.worker_trace.argv.join(' ') : '-' }}
PID {{ adminDiagnostics.worker_trace.pid || '-' }} · round {{ adminDiagnostics.worker_trace.round ?? '-' }} · processed {{ adminDiagnostics.worker_trace.processed_total ?? '-' }}

上方"启动参数"显示的是最近一次 worker 实际运行痕迹;如果这是旧进程留下的记录,可能与下面的建议启动命令不同。

建议启动命令 {{ platformWorkerTitle() }}
{{ field.value || '-' }}
配置步骤

{{ index + 1 }}. {{ step }}

媒体处理测试结果

{{ adminDiagnostics.media_test?.ok ? '最近一次测试通过' : '最近一次测试有失败项' }}

最后测试时间:{{ adminDiagnostics.media_test?.tested_at || '-' }}

FFmpeg:{{ adminDiagnostics.media_test?.ffmpeg ? '可用' : '失败' }}
MP4 转码:{{ adminDiagnostics.media_test?.mp4_ok ? '成功' : '失败' }}
Remux:{{ adminDiagnostics.media_test?.remux_ok ? '成功' : '失败' }}
MP3 转码:{{ adminDiagnostics.media_test?.mp3_ok ? '成功' : '失败' }}
WebP 转码:{{ adminDiagnostics.media_test?.webp_ok ? '成功' : '失败' }}
Exit Code:{{ adminDiagnostics.media_test?.exit_code ?? '-' }}

跳过项:{{ adminDiagnostics.media_test.skipped.join(';') }}

失败明细

{{ item.sample || '未知样本' }}:{{ item.error || `${item.final_mime_type || '-'} / .${item.final_extension || '-'}` }}

LiveKit 通话 {{ adminDiagnostics.livekit?.summary || (adminDiagnostics.livekit_ok ? '可正常发起通话' : '配置异常') }}

语音通话:{{ adminDiagnostics.livekit?.voice_ok ? '可发起' : '不可发起' }}

视频通话:{{ adminDiagnostics.livekit?.video_ok ? '服务端可发起' : '不可发起' }}

配置来源:{{ adminDiagnostics.livekit?.source || '服务器环境变量' }}

LiveKit URL:{{ adminDiagnostics.livekit?.url || '未配置' }}

{{ item.name }}:{{ item.detail }}

{{ adminDiagnostics.livekit?.hint || '配置 LIVEKIT_URL、LIVEKIT_API_KEY、LIVEKIT_API_SECRET 后可检测通话能力。' }}

数据库配置 {{ adminDiagnostics.configured?.database || '未加载' }}

主机:{{ adminDiagnostics.configured?.host || '-' }}:{{ adminDiagnostics.configured?.port || '-' }}

账号:{{ adminDiagnostics.configured?.username || '-' }}

锁文件:{{ adminDiagnostics.locked ? '已写入' : '未锁定' }}

连接状态 {{ adminDiagnostics.connected?.database || '未连接' }}

MySQL:{{ adminDiagnostics.connected?.mysql_hostname || '-' }}

当前账号:{{ adminDiagnostics.connected?.current_user || '-' }}

表数量:{{ adminDiagnostics.connected?.table_count ?? 0 }}

表统计
{{ t.name }} {{ t.rows === null ? '无法统计' : (t.rows_mode === 'estimated' ? `约 ${t.rows} 行` : `${t.rows} 行`) }}

暂无表统计数据。

{{ adminDiagnostics.error }}

环境诊断信息不可用。请确认 SECURE_CHAT_SHOW_ADMIN_DIAGNOSTICS 已启用。

邮箱配置

SMTP 发信

用户

{{ admin.userPagination.total || 0 }} 项 第 {{ admin.userPagination.page }} 页,共 {{ adminUserPageCount() }} 页
头像 邮箱 来源 使用状态 状态 注册 IP 登录 IP 加密私聊 群聊 群成员 操作
暂无匹配用户
@{{ u.username }} {{ u.created_at || '-' }} {{ u.display_name || '-' }} {{ adminUserRoleLabel(u.role) }} {{ u.email || '未绑定' }} {{ u.source_label || '普通注册' }} {{ u.usage_status || '未使用' }} {{ adminUserStatusLabel(u) }} {{ adminUserExpiryLabel(u) }} {{ u.register_ip || '-' }} {{ u.last_login_at || '-' }} {{ u.last_login_ip || '-' }} {{ u.active_direct_link_count || 0 }} · {{ userDirectConversationModeLabel(u) }} {{ u.active_group_link_count || 0 }} {{ u.group_member_count || 0 }}

用户配置

配置模板

模板名称 默认 绑定用户 创建权限 内容有效期 私聊链接 群聊链接 群聊容量 附件上限 通话权限 群聊限流 操作
暂无配置模板
{{ tpl.name }}

{{ tpl.description }}

{{ tpl.is_default ? '默认' : '普通' }} {{ tpl.user_count || 0 }} {{ tpl.can_create_links ? '允许创建' : '禁止创建' }} · {{ tpl.can_create_group_links ? '允许群聊' : '禁止群聊' }} · {{ tpl.can_edit_links ? '允许编辑' : '禁止编辑' }} {{ tpl.can_choose_retention_policy ? '用户可选' : '固定永久' }} {{ tpl.direct_link_limit || 0 }} · {{ userDirectConversationModeLabel({ permission_summary: tpl }) }} {{ tpl.group_link_limit || 0 }} {{ tpl.group_member_limit || 0 }} {{ tpl.direct_attachment_max_mb || 0 }}MB / {{ tpl.group_attachment_max_mb || 0 }}MB {{ userConfigTemplateCallPermissionLabel(tpl) }} {{ tpl.rate_limit_count }}/{{ tpl.rate_limit_window_seconds }}秒 · {{ tpl.rate_limit_violation_limit }}次禁言{{ tpl.rate_limit_mute_minutes }}分

后台管理

风控事件记录

暂无风控事件记录
第 {{ admin.securityPagination.page }} 页 / 共 {{ admin.securityPagination.total }} 条

后台管理

附件任务队列

待处理{{ admin.attachmentJobSummary.pending || 0 }}
处理中{{ admin.attachmentJobSummary.processing || 0 }}
失败{{ admin.attachmentJobSummary.failed || 0 }}
已取消{{ admin.attachmentJobSummary.cancelled || 0 }}
坏附件扫描 主文件缺失 {{ admin.attachmentIntegrity?.missing_storage_count || 0 }} · 预览缺失 {{ admin.attachmentIntegrity?.missing_thumbnail_count || 0 }}

可自动修复:{{ admin.attachmentIntegrity?.repairable_count || 0 }} 个

{{ item.original_name }} {{ item.storage_missing ? '主文件缺失' : '预览缺失' }} · {{ item.repairable ? '可修复' : '不可修复' }}
{{ item.reason }}
队列状态分布
{{ item.label }} {{ item.value }}
暂无附件任务
第 {{ admin.attachmentJobPagination.page }} 页 / 共 {{ admin.attachmentJobPagination.total }} 条

后台管理

小黑屋

暂无小黑屋记录
第 {{ admin.blackroomPagination.page }} 页 / 共 {{ admin.blackroomPagination.total }} 条
{{ callDurationLabel() }}
正在等待成员加入 通话时长会在有人进入房间后开始计时
{{ member.name }}
{{ callState.cameraUnavailableMessage || '未检测到摄像头,当前以语音方式加入视频通话' }}

{{ incomingCall.caller?.nickname || '未知用户' }}

{{ incomingCall.callType === 'video' ? '视频通话' : '语音通话' }}

页面加载失败

当前网络不稳定或页面资源没有成功加载,请刷新后重试。