Parlons Cloud Portal 手册
在手机上使用始终在线的账户,以及为自己和他人托管账户。
目录
- 1. Portal 的用途
- 2. 本手册使用的术语
- 3. 安装应用
- 4. 将应用与你的账户配对
- 5. 主屏幕
- 6. 聊天
- 7. 联系人
- 8. 钱包
- 9. 节点
- 10. 添加更多设备:所有者邀请
- 11. 为朋友托管:访客邀请
- 12. 节点工具:终端 IDE 和控制面板
- 13. 设置参考
- 14. 通知、通话和保持连接
- 15. 在其他 Parlons 应用中使用你的账户
- 16. 备份、恢复和迁移
- 17. 账户持有人故障排除
- 18. 你需要哪种主机?
- 19. 在自己的机器上运行一个账户:一行命令安装程序
- 20. 在 VPS 上运行一个账户:deploy-parlons-cloud.sh
- 21. 多个账户:parlons-tenants 服务
- 22. 创建、暂停和移除租户
- 23. 从服务器发出所有者邀请和访客邀请
- 24. 本地网页面板
- 25. 命令行参数参考
- 26. parlons 命令
- 27. 数据目录中的文件
- 28. 端口、防火墙、TLS 和反向代理
- 29. 升级和回滚
- 30. 日志
- 31. 运维人员安全须知
- 32. 运维人员故障排除
- 33. 术语表
你的 Parlons 账户,放在一台从不休眠的机器上保持在线,用手机来操作。
本手册涵盖:
- Parlons Cloud for Android(即“Portal”),版本 0.2.90(Android 软件包
com.eurobuddha.parlons.cloud,需要 Android 9 或更高版本)。 - Parlons Cloud,即 Portal 所连接的主机程序,版本 0.11.124(
parlons-cloud-0.11.124.jar)。它可以在你自己的机器上运行一个账户,也可以作为parlons-tenants服务同时运行多个账户(--tenants <dir>)。
两者都可以在发布页面下载:https://github.com/eurobuddha/maxima/releases。
| 程序 | 发布标签 | 要下载的文件 |
|---|---|---|
| Portal(Android) | portal-v0.2.90 | parlons-cloud-portal-0.2.90-release.apk |
| Parlons Cloud(主机) | cloud-v0.11.124 | parlons-cloud-0.11.124.jar |
parlons-cloud-0.11.124.jar 的 SHA-256 为:
0ae833429b641393f93b427695784b534e8a2a06a7194eba74e57aed4f19b231
A 部分面向通过 Portal 应用使用账户的人。B 部分面向托管账户的人。每项任务都有带编号的操作步骤。屏幕上显示的标签用粗体表示。需要输入的命令放在代码块中。
配套手册有 Parlons! 手册(完整版 Parlons! 应用)和 Parlons Node 手册(Parlons Node,即内置 Parlons 账户的完整 Minima 节点)。
1Portal 的用途
Parlons 账户是一个让你的身份保持在线的小程序。它保存你的联系人和聊天记录,在你的手机关机时接收消息,并让你配对的每台设备都看到同样的对话。它需要一台保持开机并能访问外网的机器。
Parlons Cloud Android 应用(本手册称之为 Portal)是通往这样一个账户的窗口。它自身不持有任何聊天身份。配对时,它只会创建自己的设备密钥,此后通过 Parlons 的端到端加密传输来操作账户。应用的第一个屏幕是这样说的:
你的身份、聊天和钱包都保存在你始终在线的节点上,每台设备都能访问。此手机作为安全客户端与节点配对。没有你的一次性配对码,任何人都无法配对,你也可以随时撤销此手机的访问权限。
谁会使用它
- 自己运行账户的人:账户运行在 Raspberry Pi、Mac mini、家用服务器或 VPS 上(B 部分第 19 和 20 节),并希望在 Android 手机上使用。
- 运行 Parlons Node 的人(内置 Parlons 的完整 Minima 节点)。Parlons Node 也运行一个 Parlons 账户,所以 Portal 以同样的方式与它配对。节点所有者在应用中还有额外的工具(第 12 节)。
- 拥有托管账户的人。由别人运行一台主机,让许多账户保持在线,每人一个(B 部分第 21 节)。主机运维人员会给你一个邀请,你用它与自己的账户配对。
在 iPhone 上,Parlons 应用承担同样的工作;它用同样的邀请与同类账户配对。Android 上的完整版 Parlons! 应用则不同:它把身份保存在手机本身,不与账户配对(第 15 节)。
什么是账户,什么是租户
| 术语 | 含义 |
|---|---|
| 账户 | 一个 Parlons 身份(24 个单词),连同它的联系人、聊天、已配对设备、设置,通常还有一个钱包。它运行在 parlons-cloud、Parlons Node 或桌面节点应用中。 |
| 所有者账户 | 属于运行这台机器的人的账户。在 Parlons Node 上,它就是节点自己的身份。 |
| 租户 | 多账户主机中的一个账户。每个租户是一个文件夹 <dir>/<name>/,结构与单个账户相同。每个租户都有自己的身份、设备、联系人、聊天和备份。 |
| 托管账户(访客) | 为朋友创建的租户的日常叫法。访客无法访问所有者的账户、所有者的 Minima 终端或托管控制功能。 |
| 仅聊天账号 | 由所有者账户的内置托管功能创建的访客账户(Parlons Node、minimaCore Desktop、minimaDesk,或启用了托管的独立 parlons-cloud)。它只有聊天、通话和文件功能;钱包、节点终端、NFT 托管和主机管理均已关闭。 |
主机能做什么,不能做什么
- 它无法读取传输中的你的消息,也无法读取任何其他人的消息:设备之间的一切都经过端到端加密。
- 它可以读取存储在那台机器上的内容。你的账户在那里保存聊天记录和密钥,因此运维人员对它们的访问权限,与你在自己机器上的权限相同。选择主机时,要像选择替你保管信箱的人那样慎重。或者自己运行(B 部分)。
2本手册使用的术语
完整的术语表在末尾(第 33 节)。下面是马上就会用到的几个词:
- 地址:你账户的永久地址。它以
MAX#开头,长达几百个字符,永远不变。可以把它分享出去,别人靠它联系你。本手册从不缩短地址,你也不应该缩短:务必完整复制。 - 配对码:一次性代码,格式为
ABCD-EFGH-JKLM(三组,每组四个字符)。只能使用一次。生成新的配对码会替换旧的。 - 邀请:地址和配对码合在一行:先是地址,然后是
?code=,最后是配对码。扫描一个邀请二维码即可配对一部手机。 - 设备:与账户配对的任何东西(一部手机、终端中的
parlons命令、主机自己的网页面板)。每台设备都有自己的密钥,可以单独撤销,而不会改变账户的身份。
A 部分:通过 Portal 应用使用账户
3安装应用
如何安装应用
- 在你的 Android 手机上打开 https://github.com/eurobuddha/maxima/releases,找到标签为
portal-v0.2.90的发布版本。 - 下载其中附带的 APK:
parlons-cloud-portal-0.2.90-release.apk。 - 打开下载的文件。如果 Android 提示,请允许你的浏览器或文件管理器安装应用,然后点按安装。
- 打开 Parlons Cloud。第一个屏幕的标题是在云端运行 Parlons。接着按第 4 节进行配对。
应用需要 Android 9 或更高版本。它会在首次需要时请求以下权限:相机(扫描二维码、视频通话、拍照)、麦克风(语音消息和通话)、通知,以及后台运行。
如何更新应用
- 从发布页面下载更新的
parlons-cloud-portal-<version>-release.apk。 - 打开它并点按安装。Android 会覆盖安装旧版本。
- 打开 Parlons Cloud。你的配对会保留,应用直接打开你的账户。
如何卸载应用
应用不使用 Android 的云端备份,因此卸载会删除此手机的设备密钥。账户本身不受影响。
- 在另一台已配对的设备上,打开节点 → 已配对设备,点按此手机旁边的撤销(第 9 节)。
- 在 Android 的应用设置中卸载 Parlons Cloud。
- 以后要再次使用这部手机,请安装应用,并用新的配对码进行配对(第 10 节)。
4将应用与你的账户配对
你需要从以下某处获得一个邀请(或一个地址加一个配对码):
| 你的账户运行在哪里 | 邀请从哪里来 |
|---|---|
| 你自己的电脑,用一行命令安装程序安装 | 安装结束时以文本和二维码形式打印出来(第 19 节)。之后可在那台电脑上运行 parlons invite 或 parlons newcode。 |
你自己的 VPS,用 deploy-parlons-cloud.sh 安装 | 由部署脚本打印出来(第 20 节)。 |
| Parlons Node | 在服务器上运行 sudo parlons-pair --admin(第 23 节)。 |
| 托管账户 | 由主机运维人员给你,或由所有者通过显示邀请展示给你(第 11 节)。 |
| 你已在另一台设备上使用的账户 | 在那台设备上:节点 → 配对我的其他设备(第 10 节)。 |
如何用邀请配对
- 打开 Parlons Cloud。第一个屏幕的标题是在云端运行 Parlons。
- 选择以下一种方式:
- 点按扫描配对二维码,用相机对准邀请二维码。应用会填好两个字段,并显示地址和配对码已扫描。
- 或者把完整的邀请粘贴到标有账号地址或配对邀请的字段中。点按连接并配对时,配对码部分会被拆分到配对码字段中。
- 或者只把地址粘贴到第一个字段,再在配对码中输入配对码(例如
ABCD-EFGH-JKLM)。
- 点按连接并配对。
- 状态行先显示正在连接网络…,然后显示已找到账号,正在配对…。
- 配对码有效时,应用会直接打开你的账户。该配对码随即作废。不需要其他设备批准。
应用会记住你输入的地址,所以一次尝试失败后不必重新输入。
如何在没有配对码的情况下配对
当你有地址但没有配对码时使用此方法。必须由另一台已配对的设备批准这部手机。
- 把完整的
MAX#地址粘贴到账号地址或配对邀请中。 - 配对码留空。
- 点按连接并配对。账户会把这部手机放入等待列表。应用显示:
已请求配对。请在已配对的设备上批准,然后重新打开。
随后显示此设备的密钥。
- 在一台已配对的设备上批准这部新手机。可以用以下任一方式:
- 在 Portal 中:节点 → 等待批准,然后点按密钥旁边的批准。
- 在装有
parlons命令的终端中:parlons approve <key> - 在网页面板中:设备,然后点按等待批准下的批准。
- 回到新手机上,重新打开 Parlons Cloud,再次点按连接并配对。
如果配对失败
| 消息 | 含义 | 怎么办 |
|---|---|---|
| 无法连接:…,并附有 请确认账号在线且地址正确。 | 账户已停止、没有网络,或者刚刚启动。 | 检查地址是否完整。请运行账户的人确认它正在运行(第 17 节)。再试一次。 |
| 配对失败:… | 配对码错误、已被使用,或已被更新的配对码替换。 | 获取一个新邀请,重新配对。 |
| 请输入或扫描您的账号地址 | 地址字段为空。 | 粘贴或扫描地址。 |
如何阅读服务器设置说明
- 在第一个屏幕上,点按初次使用?设置账号服务器 ▸。会展开一段简短说明,介绍如何运行你自己的账户服务器。其中显示部署命令以及完整指南的位置(仓库中的
cloud/SETUP.md)。 - 点按任一灰色框即可复制其中的文本。应用显示已复制。
- 点按设置账号服务器 ▾,将说明重新收起。
本手册的 B 部分更详细地介绍了同样的内容。
如何更改应用的语言
- 打开语言列表:
- 在第一个屏幕上,点按顶部的更改语言。
- 配对后,打开更多 → 设置,点按最上方的按钮,按钮上写着 English · 简体中文 · Русский · Українська。
- 点按你想要的语言。列表关闭,应用切换语言。此选择仅对这台设备生效。
5主屏幕
配对后,应用打开时有四个标签页:聊天、联系人、钱包和节点。左右滑动或点按即可切换。
顶部栏
- Parlons Cloud 和应用版本。
- 状态胶囊显示应用能否连接你的账户:
- 绿色,在线 · N 个主机(有未读消息时显示 N 条新消息):账户可以连接;
- 正在连接…:应用仍在尝试;
- 红色,无法连接:账户没有响应。
- 搜索用于搜索账户中的消息、联系人和群组。搜索在账户上进行,因此覆盖账户中存储的所有内容,而不仅是这部手机看到过的内容。
- 主题按 浅色 → 深色 → 系统 循环切换。会有一条简短消息确认新的选择。
- 更多打开账户菜单:
| 项目 | 作用 |
|---|---|
| 设置 | 打开设置屏幕(第 13 节)。 |
| 设置账户名称 | 跳转到“节点”标签页,并要求输入新的账户名称。 |
| 复制账户地址 | 复制完整的 MAX# 地址。 |
| 节点状态 | 跳转到“节点”标签页。 |
| 取消此设备的配对 | 询问取消此设备的配对?,然后在此手机上忘记该账户。 |
如何搜索账户
- 点按顶部栏中的搜索。
- 在搜索消息…中输入内容。结果显示在联系人和群组和消息下。没有匹配结果。 表示没有搜到任何内容。
- 点按某个结果即可打开对应聊天。点按返回退出搜索。
如何更改主题
- 点按顶部栏中的主题。每点按一次就切换到下一个选项:浅色、深色、系统。
- 一条简短消息(例如 主题:深色)会确认你的选择。
如何复制账户地址
- 点按更多 → 复制账户地址。
- 应用显示账户地址已复制。剪贴板中是完整的
MAX#地址。
如何取消此手机的配对
- 点按更多 → 取消此设备的配对。
- 取消此设备的配对?对话框会说明此手机将不再操作你的云端账户。
- 点按取消配对。应用返回第一个屏幕。
- 在另一台已配对的设备上,撤销此手机的条目(第 9 节)。在你撤销之前,账户仍将它列为已配对设备。
取消此设备的配对只会清除此手机上的配对。你的账户及其身份仍保留在节点上。其他设备照常工作,你也可以用新的配对码重新配对这部手机。
6聊天
聊天标签页列出你的对话,最新的排在最前,并显示未读数量。
还没有聊天时,标签页显示:还没有聊天。在“联系人”标签页添加联系人,然后发送消息。
如何打开或查找聊天
- 打开聊天标签页。
- 要缩小列表范围,可在顶部的搜索字段中输入名称的一部分。
- 点按聊天即可打开。
如何创建群组
你需要先至少有一个联系人。否则应用会显示 请先添加联系人,才能创建群组。
- 在聊天标签页上,点按新建群组按钮。
- 在群组名称中输入名称。
- 至少勾选一位成员。
- 点按创建。应用显示群组已创建,群组出现在列表中。
如果在没有名称或没有成员的情况下点按创建,应用会显示 请为群组命名并至少选择一位成员。
如何将聊天标为已读或清空聊天
- 在聊天标签页上,长按该聊天。
- 点按标为已读(有未读消息时显示)。应用显示已标为已读。
- 或者点按清空消息。会出现清空此聊天?对话框。点按清除确认。应用显示聊天已清空。
清空只会从你的账户中删除消息。它不会撤回消息,也不会退出群组,并且无法撤销。
聊天内部
副标题显示位于你的云账号:消息保存在账户上,这个屏幕只是查看它们的窗口。
如何发送消息
- 在底部的消息字段中输入内容。
- 点按发送按钮(有文字时它会显示一个箭头)。
如何发送语音消息
- 让消息字段保持为空。发送按钮会显示一个麦克风。
- 点按麦克风。语音消息对话框打开,显示计时器和最大时长。
- 开始说话。
- 点按发送发送,或点按取消丢弃。录音太短,请再录一会儿表示录音太短。
你也可以从添加附件 → 语音消息开始录制语音消息。
如何发送照片或文件
- 点按添加附件。
- 选择一项:
- 照片图库:选择一张照片。发送照片对话框可让你添加说明…。点按发送。
- 私密文件:打开 Android 的文件选择器。选择文件,即可将其发送到此聊天中。
- 文件传输:打开此聊天中的文件传输列表。
- 如果要拍一张新照片,请点按消息字段旁边的相机按钮。
如何呼叫联系人
- 打开一个一对一聊天。
- 点按聊天顶部栏中的语音通话或视频通话。
- 应用首次请求时,允许使用麦克风(视频通话还需允许相机)。
- 通话中可使用静音、扬声器、翻转(切换摄像头)和挂断。
通话仅支持一对一。接听来电见第 14 节。
如何查看联系人或群组详情
- 点按聊天顶部栏中的信息按钮。
- 对于联系人,对话框显示对方的软件、上次在线时间、公钥、地址和收款地址。复制密钥会完整复制密钥。
- 对于群组,群组对话框列出成员。如果你是群组管理员,点按编辑成员,勾选或取消勾选联系人,然后点按保存。应用显示群组已更新。
如何对单条消息进行操作
- 长按该消息。
- 选择一项:
- 复制消息(照片上为复制说明,分享的地址上为复制联系人地址)。
- 图片上的保存照片或分享照片。已保存到照片表示保存成功。
- 付款上的复制交易 ID。
- 详情打开消息详情:发送和到达的时间、状态(正在发送…、已发送(中继已接收)、已送达、已读、发送失败),以及付款的交易 ID。
勾号的含义与所有 Parlons 应用相同:
| 标记 | 含义 |
|---|---|
| ⋯ | 排队中,尚未交给主机 |
| ✓ | 已发送:有主机接收了它 |
| ✓✓ | 已送达:收件人自己的设备已确认 |
| 蓝色 ✓✓ | 已读 |
| ✗ | 失败:没有主机愿意接收;它留在发件箱中 |
如何重新发送未送达的消息
如果你的账户在它知道的所有地址上都联系不到对方,失败的消息会显示 ✗。
- 点按失败的消息。消息未送达对话框会说明你的节点无法联系到该联系人。
- 点按重新连接(或点按暂不操作保持原样)。应用显示正在重新连接…,并向目录查询对方的当前地址。
- 已找到最新地址,即将重新发送表示失败的消息会自动重新发送。地址未变,对方可能暂时离线表示对方可能离线;消息在发件箱中等待。
在聊天中向联系人付款
- 在一对一聊天中,点按添加附件 → 发送付款。向 name 发送付款对话框显示 从你的云账号钱包付款。
- 选择 Minima 或 MxUSD。MxUSD 是 Minima 上与美元挂钩的代币,代币 ID 为
0x7D39745FBD29049BE29850B55A18BF550E4D442F930F86266E34193D89042A90。 - 输入金额(字段显示为金额(MINIMA)或金额(MxUSD)),如有需要,再填写备注(可选)。
- 点按发送。应用显示正在你的节点上构建付款…。
付款在运行你账户的机器上构建和签名,而不是在手机上。仅聊天账号无法付款(第 8 节)。
如果某笔付款显示 ⚠ 尚未确认,再次付款前请检查余额,请先查看“钱包”标签页,再决定是否重新发送。
MxUSD 需要最新的主机。发送 MxUSD 付款前,Portal 0.2.90 会询问账户的主机是否支持该代币 ID。无法证明支持的主机会忽略代币 ID,转而支付同样数量的 MINIMA,因此应用会拒绝发送并显示:
付款失败:此账户的主机版本过旧,无法发送 MxUSD — 请更新(Parlons Node 0.2.135+、Parlons Cloud 0.11.121+、minimaCore Desktop 0.18.21+)
不会发送任何东西。请运行主机的人将其更新到上述某个版本,然后再试。Minima 付款不受影响。
7联系人
联系人标签页分为三部分。
您的账号地址。完整的 MAX# 地址,带有复制、显示二维码和分享地址。分享此地址,让他人联系您。此地址在您所有设备上都相同。 账户仍在连接时,它显示(正在解析…)。
你的联系人。标题为联系人 · N,列表上方有搜索联系人。点按联系人可查看其详情:软件、上次在线(或当前在线)、公钥、对方的地址,以及对方发布了的话还有收款地址(MINIMA)。在那里:
- 消息打开聊天。
- 更多提供重命名、立即重新连接和移除联系人(步骤见下文)。
添加联系人。在添加联系人下有一个字段和扫描二维码。
如何分享你的地址
- 打开联系人。
- 在您的账号地址下,点按以下任一项:
- 复制:应用显示地址已复制。把它粘贴到发给对方的消息中。
- 显示二维码:让对方扫描你屏幕上的二维码。
- 分享地址:打开 Android 的分享面板。选择一个应用发送。
如何添加联系人
- 打开联系人,滚动到添加联系人。
- 把对方的地址填入字段。选择以下一种方式:
- 粘贴完整地址。它以
MAX#开头,或以Mx开头并以@host:port结尾。 - 点按扫描二维码,用相机对准对方的地址二维码。
- 粘贴完整地址。它以
- 点按添加。应用先显示正在添加…,然后显示联系人已添加。
添加联系人是一次握手:你的账户向对方的地址介绍自己,对方回复自己的地址。如果添加失败,应用会显示无法添加:…以及原因,例如 该账号目前无法连接,请确认对方在线,或重新扫描其地址。如果文本根本不是地址,它会显示 这似乎不是 Parlons 地址,应以 Mx… 或 MAX#… 开头。
如何重命名联系人
- 打开联系人,点按该联系人。
- 点按更多 → 重命名。
- 在重命名联系人中,把新名称输入此联系人的名称。
- 点按重命名。应用显示已重命名。这个名称只在你的账户中使用。
如何重新连接联系人
- 打开联系人,点按该联系人。
- 点按更多 → 立即重新连接。应用显示正在重新连接…。
- 已找到新地址,已重新连接表示找到了对方的新地址。地址未变,对方可能暂时离线表示没有任何变化。
如何移除联系人
- 打开联系人,点按该联系人。
- 点按更多 → 移除联系人。
- 对话框询问移除 name?并说明:对方仍保留您的地址,也仍可向您发送消息。此操作仅将其从您的联系人列表中移除。
- 点按移除。应用显示已移除。
8钱包
钱包标签页显示的内容取决于你所配对的账户类型。
仅聊天账号
标签页显示仅聊天账号:此托管账号包含聊天、通话和文件功能。钱包和主机控制功能已禁用。 这里没有其他操作。
Parlons Cloud 账户(自己的服务器,或 parlons-tenants 主机上的租户)
账户有自己的钱包。它的密钥由账户的助记词派生,保存在运行账户的机器上。签名也在那里进行。
标签页显示:
- 总余额:MINIMA · 你的账号钱包,以及 可发送 N · 密钥保存在你的云节点上。
- 收款地址:账户的 Minima 地址,带有复制和显示二维码。
- 该地址持有的代币,每种都附有代币 ID。
- 签名密钥:已使用 N / M 次签名。每个密钥只能签名固定的次数。
- 发送、将钱包转移到此手机…和历史记录。
如何收款
- 打开钱包。
- 在收款地址下,点按复制(应用显示地址已复制)或显示二维码。
- 把完整地址发给付款人,或让对方扫描二维码。
如何复制代币 ID
- 打开钱包,在代币下找到该代币。
- 点按它。应用显示代币 ID 已复制。剪贴板中是完整的代币 ID。
如何发送 Minima 或 MxUSD
- 打开钱包,点按发送。
- 在 Mx… 或 0x… 地址中输入收款人,或点按扫描二维码扫描。
- 选择 Minima 或 MxUSD。
- 输入金额(金额(MINIMA)或金额(MxUSD)),然后点按继续。
- 阅读确认信息发送 amount token?。它会显示完整地址,并说明 此操作将签署并广播真实交易,无法撤销。
- 点按签名并发送。状态依次显示正在你的节点上签名…、正在通过 … 广播、已发送。
如果失败,应用会显示发送失败:…以及原因。如果是在无法证明支持该代币 ID 的主机上发送 MxUSD,原因是 此账户的主机版本过旧,无法发送 MxUSD — 请更新(Parlons Node 0.2.135+、Parlons Cloud 0.11.121+、minimaCore Desktop 0.18.21+)。不会发送任何东西;请主机的运维人员更新主机(第 6 节)。
如何查看过去的付款
- 打开钱包,滚动到历史记录。这里列出此手机在配对期间看到的付款(发出和收到的付款),最新的排在最前。
- 点按一笔付款。对话框显示金额、对方、时间、备注和交易 ID。
- 点按复制交易 ID,复制完整的交易 ID。
如何设置已用签名计数
只有当这个助记词在另一台设备上签过交易时才需要这样做。计数只能调高。设置得过低可能会重复使用一次性密钥,导致密钥泄露。
- 打开钱包,在签名密钥下点按设置已用签名次数…。
- 在新的已用次数(> current)中输入新的次数,然后点按继续。
- 阅读调高至 N?。它会提醒你此操作无法撤销。
- 点按调高计数。应用先显示正在更新计数…,然后显示计数已调高。
如何将钱包转移到此手机
将钱包转移到此手机…会把全部可发送资金转到一个助记词保存在此手机上(Minima Core 应用中)的钱包。你的云端身份保持不变。服务器会保留对新地址的只读观察。
- 先安装 Minima Core:更多 → 设置 → 此手机上的 Minima Core → 获取 Minima Core。没有安装时,应用会显示需要 Minima Core。
- 在 Minima Core 中,打开 钱包 → 收款,复制你的地址。
- 在 Parlons Cloud 中,打开钱包,点按将钱包转移到此手机…。
- 把地址粘贴到 Minima Core 中的 Mx… 地址中,然后点按继续。
- 阅读转移全部 amount MINIMA?。它会显示完整地址,并说明云端随后将以只读方式观察该地址。
- 点按转移全部资金并分离钱包。所有可发送资金将通过一笔交易转到该地址。
如果应用显示 目前没有可发送资金,请先同步或等待确认,请稍候再试。
Parlons Node 账户
节点自己的 Minima 钱包就是账户的钱包。
- 余额 · 整个钱包:MINIMA · 节点钱包所有地址中的可发送金额,以及已确认、已锁定和未确认的金额,还有节点持有的其他代币。
- 打开钱包打开完整钱包:带代币图标的余额、NFT 图库、发送(快速发送或币控制)、带二维码的收款、所有币、链上历史记录和铸造。一切都在你的节点上运行并在那里签名。
- 将钱包重新同步到新助记词…会把节点的钱包换到一个新的 24 词助记词。
如何打开完整的节点钱包
- 打开钱包。
- 点按打开钱包。完整钱包打开,有自己的标签页,分别用于余额、发送、收款、币、历史记录和铸造。
如何将节点钱包重新同步到新助记词
当节点的签名密钥已用完,或你想要一个新的助记词时使用此功能。你的身份、已配对设备和联系人保持不变。旧助记词上的资金仍归旧助记词所有,所以请先把它们转走。
- 打开钱包,点按将钱包重新同步到新助记词…。
- 在 24 个单词,以空格分隔中输入新的助记词。如果不是 24 个单词,会显示 必须输入 24 个单词。
- 点按重新同步。应用显示 重新同步已开始,节点约一分钟后重启;账号保持不变,钱包地址将更新。
- 等待大约一分钟。应用会自动重新连接。
如果标签页之后显示 上次重新同步未成功,钱包未更改,后面会附上原因。旧钱包仍在使用中。
只读观察地址
如果账户没有自己的钱包地址,标签页会提供只读钱包。用于付款的密钥始终保留在你的设备上;节点只能查看,无法付款。
- 打开钱包。
- 在 Mx… 收款地址中输入一个
Mx…地址。 - 点按设置观察地址。应用先显示正在设置…,然后显示观察地址已设置。
- 标签页现在以只读方式显示该地址的余额。
9节点
节点标签页是账户的控制室。下拉或重新进入该标签页即可刷新。
从上到下依次为:
- 您的名称。你在联系人列表中显示的名字,所有设备上都一样。点按编辑,输入新名称(例如 eurobuddha)并保存。显示给您的联系人,并立即向所有联系人重新发布。
- 状态。持续运行 — 在线(或节点无法连接),以及运行时间、已连接中继和邮箱已保留。在较旧的主机上,卡片会显示 将节点更新至 parlons-cloud 0.4.1 或更高版本,以查看完整状态。
- VPS 节点的优势。提醒你账户为你做了什么:持续运行、一个账户,所有设备,以及它是否是中继(您正在充当中继,并显示网状网络节点数,或中继已关闭)。
- 永久地址。卡片显示 地址永不改变,可通过它联系您使用的任何设备。 以及复制和显示二维码。
- 托管账户(仅当此账户管理一台主机时显示):管理托管账户(第 11 节)。
- 节点工具和传输与主机(仅当主机提供节点控制台时显示,Parlons Node 会提供):打开终端 IDE和打开控制面板(第 12 节)。
- 已配对设备(N)。每台可以操作该账户的设备。这部手机标记为此设备;其他设备显示已配对。点按撤销可切断某台设备。它将失去对你账户的访问权限。你的身份不会改变,其他设备照常工作。此操作无法撤销(对方需要新的配对码才能重新配对)。 主机自己的网页面板也作为本地设备列在这里;撤销它会把面板锁在外面。
- 等待批准(N)。在没有配对码的情况下请求配对的设备(有设备请求配对)。只有在你认得这个密钥时才点按批准。
- 配对我的其他设备(第 10 节),并附有设备配对含义的提示。
如果账户没有响应,标签页会显示无法连接您的节点。以及原因。
如何设置你的账户名称
- 打开节点,或点按更多 → 设置账户名称。
- 在您的名称下,点按编辑。
- 输入新名称(例如 eurobuddha)。对话框显示:显示给您的联系人,并立即向所有联系人重新发布。
- 点按设置。应用显示名称已设置 — 正在通知联系人…。
如何复制或显示你的永久地址
- 打开节点,找到永久地址。
- 点按复制复制完整的
MAX#地址,或点按显示二维码以二维码形式显示。
如何撤销已配对设备
- 打开节点,滚动到已配对设备(N)。
- 找到该设备。这部手机标记为此设备。
- 点按撤销。
- 阅读撤销此设备的访问权限?,然后点按撤销。应用显示已撤销。
设备会立即失去访问权限。你的身份不会改变,其他设备照常工作。设备要重新加入,需要新的配对码。撤销主机自己的网页面板会把面板锁在外面(第 24 节)。
如何批准请求配对的设备
- 打开节点,滚动到等待批准(N)。每个条目显示有设备请求配对以及它的密钥。
- 把这个密钥与新设备上显示的密钥进行比对(第 4 节“如何在没有配对码的情况下配对”)。
- 只有在密钥一致时才点按批准。应用显示已批准。
10添加更多设备:所有者邀请
配对一台设备会赋予它对此账户的完全控制权:它的聊天、联系人,以及(如有)它的钱包。设备邀请只能分享给应当控制此账户的人。 要邀请朋友,请另行创建一个托管账户(第 11 节)。
从 Portal 操作
- 打开节点,点按配对我的其他设备。
- 接下来的情况取决于主机:
- 没有管理员密码服务的主机(
parlons-tenants主机上的租户,或访客账户):立即生成一个新的配对码。 - 有管理员密码服务的主机(独立的
parlons-cloud账户、Parlons Node 0.2.118 或更高版本,以及桌面节点应用):应用会询问邀请设备。输入管理员密码,以授予其他设备对此所有者账户和 Minima 终端的访问权限。留空则可为朋友创建独立的托管账户。- 输入管理员密码并点按继续,即可生成所有者邀请。
- 留空并点按继续,则会打开托管账户管理(如果尚未设置托管,则显示此服务器尚未启用托管)。
- 没有管理员密码服务的主机(
- 应用显示新配对码已生成,以及一次性配对码和完整邀请。点按复制邀请,或点按二维码将其显示为二维码,供新设备扫描。
密码在服务器上验证,从不保存在手机上。密码错误时绝不会发出配对码。输错一次后,请等几秒再试(请等待几秒后再尝试输入管理员密码)。如果还没有设置管理员密码,服务器会回复 请在主机应用的 Parlons“设备”页面设置管理员密码。命令行服务器请运行:sudo parlons-pair --set-admin-password(第 23 节说明了如何在各类主机上设置)。
没有管理员密码:改为批准
你随时都可以不用任何配对码来添加设备。批准不需要管理员密码。
- 在新设备上,让配对码字段留空进行配对(第 4 节“如何在没有配对码的情况下配对”)。
- 在一台已配对的设备上,打开节点 → 等待批准(N)。
- 点按新设备密钥旁边的批准。
- 在新设备上,再次点按连接并配对。
从服务器操作
见第 23 节:在 Parlons Node 上运行 sudo parlons-pair --admin,在用一行命令安装程序安装的账户上运行 parlons newcode,或在任何带面板的主机上使用网页面板的设备 → 新建配对码。
如何切断丢失或已更换的手机
撤销不会改变你身份的任何方面。
- 在任何其他已配对的设备上,打开节点 → 已配对设备(N)。
- 找到丢失的手机,点按撤销,再点按撤销确认。
或者,在装有 parlons 命令的终端中:
- 列出设备及其完整密钥:
parlons devices - 按完整密钥撤销丢失的手机:
parlons revoke <key>
11为朋友托管:访客邀请
如果你的账户管理一台主机,“节点”标签页会显示托管账户卡片:在此服务器上为朋友托管账户。每个人都有独立的账户和邀请,无法访问您的账户或 Minima 终端。 所有者就是用这个功能为不打算自己运行服务器的人创建账户。
这里会出现两种主机:
| 主机 | 访客获得什么 | 由谁设置 |
|---|---|---|
Parlons Node、minimaCore Desktop、minimaDesk 或独立 parlons-cloud 账户中的内置聊天托管 | 仅聊天账号:聊天、通话和文件。没有钱包、终端或主机控制功能。最多十个账户。 | 所有者在应用或主机面板中启用。 |
连接到 Parlons Node 的 parlons-tenants 服务(--manage-from-node,第 21 节) | 完整的租户账户,有自己的聊天和钱包。他们无法控制所有者账户或节点。 | 由服务器运维人员安装。 |
如何为朋友托管账户
- 打开节点 → 管理托管账户。会出现一个列表,标题为托管账户(N/limit),或显示托管服务离线。
- 仅限内置托管:第一次使用时,点按托管选项 → 启用托管。启用托管?对话框说明:您的电脑将存储访客账户的密钥和消息,必须保持运行。请先在主机应用的 Parlons“设备”页面中设置管理员密码。 点按启用。设置管理员密码之前无法启用托管(第 23 节)。几秒后点按刷新(托管服务正在启动。请稍等几秒后刷新。)。
- 点按创建账户。在为朋友托管账户下输入账户名称(例如 alice),然后点按创建。名称为 1 到 64 个字母、数字、点、下划线或连字符,必须以字母或数字开头。
- 反复点按刷新,直到账户显示运行中。它的状态会从正在启动变为运行中(如果启动失败,则显示正在重试)。
- 点按该账户,然后点按显示邀请。name 的邀请对话框显示完整邀请。此邀请可将设备配对到 name 的账户。使用前请勿公开。 点按复制邀请并私下发送,或让对方扫描。
- 你的朋友安装 Parlons Cloud(Android)或 Parlons(iPhone),扫描或粘贴邀请,然后点按连接并配对。有效的配对码会立即完成配对。他们的邀请无法访问你的账户。
如何暂停或恢复托管账户
- 打开节点 → 管理托管账户。
- 点按该账户。
- 点按暂停账户。暂停 name?对话框显示 此账户将离线,其身份和聊天记录将保留。 点按暂停。
- 要恢复,点按该账户,然后点按恢复账户。恢复 name?对话框显示 此账户将在服务器上重新连接。 点按恢复。
- 点按刷新查看新状态。
如何停止内置托管
- 打开节点 → 管理托管账户。
- 点按托管选项 → 停止托管。
- 停止托管?对话框显示 所有访客账户将离线。其身份和聊天记录将保留。 点按停止。
要重新开始,请按照“如何为朋友托管账户”的第 2 步操作。
上限也计入已暂停的账户。达到上限后,再创建会失败,并显示 Hosting limit reached (10 accounts)(或主机使用的其他上限)。
访客可以管理自己的账户,并配对自己的其他设备。他们也可以随时备份整个账户,离开去另一台主机(第 16 节)。
12节点工具:终端 IDE 和控制面板
这两张卡片只有在账户运行于提供节点控制台的主机上时才会出现,也就是 Parlons Node。普通的 parlons-cloud 账户没有这两张卡片;请改用它的网页面板或 parlons 命令来管理它的中继和目录(第 24 和 26 节)。
打开终端 IDE
完整的 Minima 节点命令行,以及 KISS 脚本 IDE 和手动交易工作台。每条命令均通过此配对通道在您的节点上运行,输出完整且可复制。 终端 IDE 屏幕有四个标签页:终端、脚本、交易和日志。每条命令都会以“由已配对设备运行”的形式记录在节点日志中。quit 命令会被拒绝;请在服务器上重启节点。
如何在你的节点上运行 Minima 命令
- 打开节点,在节点工具下点按打开终端 IDE。
- 在终端标签页上,在命令…中输入命令,例如:
balance - 点按运行。完整输出显示在上方。
- 使用上一条命令和下一条命令浏览你运行过的命令。长按收藏按钮可保存一条命令。
- 要保留输出,打开菜单并选择复制全部输出、选择并复制输出或导出会话…。清空终端会清空屏幕。
如何阅读节点日志
- 在终端 IDE中,打开日志标签页。
- 滚动浏览日志。它是通过配对通道从你的节点读取的。
打开控制面板
主机、可达性、中继统计、MLS/位置和实时事件日志,涵盖 VPS 管理所需的各项功能。 节点控制面板屏幕包括:
- 状态:版本、运行时间、联系人、邮箱已保留、发件箱、公共中继及其中继检查(已验证 — 可向此节点中继消息、已连接,正在验证… 或 未连接)、可直接连接,以及有的话还有直连地址。
- 中继(为网络转发流量):已连接客户端、已中继消息、已存储数据块、网状网络节点。
- 中继节点:账户所连接的中继。断开会移除其中一个。输入
host:port(例如relay.example.com:9501)或粘贴中继二维码文本,然后点按添加并连接即可添加一个。开关账户使用内置中继列表用于打开或关闭内置列表;在你没有自己的中继时无法关闭它。 - 位置(MLS):你的永久地址解析到哪里。固定永久地址(或重新固定)、取消固定、重新发布和复制永久地址。已固定 — 联系人始终通过固定的永久地址找到您。
- 事件日志,带有清除和刷新。
如何为账户添加中继
- 打开节点 → 打开控制面板。
- 在中继节点下,输入
host:port(例如relay.example.com:9501)或粘贴中继二维码文本。 - 点按添加并连接。应用显示正在连接…,中继出现在列表中。
如何断开中继
- 打开节点 → 打开控制面板。
- 在中继节点下,点按该中继旁边的断开。应用显示正在断开…。
如何打开或关闭内置中继列表
- 打开节点 → 打开控制面板。
- 在中继节点下,切换账户使用内置中继列表。你必须先添加一个自己的中继,才能将其关闭。
如何固定你的永久地址
- 打开节点 → 打开控制面板,找到位置(MLS)。
- 点按固定永久地址(如果已设置,则点按重新固定)。应用显示永久地址已固定。
- 复制永久地址会复制完整地址。
- 要撤销,点按取消固定。要立即重新推送你的目录记录,点按重新发布。
如何查看和清除事件日志
- 打开节点 → 打开控制面板,滚动到事件日志。
- 点按刷新查看最新的行,或点按清除清空日志。
13设置参考
打开更多 → 设置。
| 分区 | 项目 | 作用 |
|---|---|---|
| (顶部) | 更改语言 | 为这台设备选择应用语言。 |
| 您的账户 | 发送已读回执 | 让联系人知道您已读消息。此设置保存在节点上,适用于所有设备。 |
| 隐私与安全 | 应用锁 | 打开 Parlons Cloud 时需验证指纹或设备 PIN 码。 需要先在 Android 中设置指纹或屏幕锁定。 |
| 允许屏幕共享 | 默认开启。关闭后,应用锁定时将禁止截图和录屏显示应用内容。 | |
| 通知 | 消息提示音 | 收到新消息时播放 Parlons 提示音。关闭后仍显示通知并振动,但不发声。 |
| 来电设置 | 打开 Android 的设置,用于设置铃声、振动和锁屏上的全屏提醒。 | |
| 密钥与备份 | 显示助记词 | 显示账户的 24 个单词(第 16 节)。 |
| 备份账户… | 将整个账户的加密备份写入你选择的文件(第 16 节)。 | |
| 导入身份或备份… | 用另一个身份替换服务器上的账户(第 16 节;仅限 Parlons Node 0.2.117 或更高版本)。 | |
| 此手机上的 Minima Core | 打开 Minima Core / 获取 Minima Core | Minima Core 在手机上运行一个完整的 Minima 节点。它是独立于你云端身份的钱包的归宿,将钱包转移到此手机…也需要它。 |
| 此设备 | 此手机启动时使用的中继 | 这部手机首先在哪里查找你的账户(见下文)。 |
| 通知设置 | 打开 Android 中此应用的通知设置。 | |
| 保持后台运行 | 请求 Android 让此应用不受电池优化限制。仅在尚未豁免时显示。 | |
| 关于 | Portal 版本 | 已安装的版本。 |
| 账户地址 | 您的账户地址(可以分享,它永远不会改变),完整显示。 |
如何打开或关闭已读回执
- 打开更多 → 设置。
- 在您的账户下,切换发送已读回执。此设置保存在你的账户上,因此适用于所有设备。
如何锁定应用
- 先在 Android 设置中设置指纹或屏幕锁定。否则应用会显示 请先在手机设置中配置指纹或屏幕锁定。
- 打开更多 → 设置。
- 在隐私与安全下,打开应用锁。
- 从此以后,打开应用时会显示解锁 Parlons Cloud。使用你的指纹或设备 PIN 码。
如果要在应用锁定时防止截图和录屏,请在同一分区中关闭允许屏幕共享。
如何关闭消息提示音
- 打开更多 → 设置。
- 在通知下,关闭消息提示音。新消息仍会通知并振动,只是没有提示音。
如何更改铃声和锁屏来电提醒
- 打开更多 → 设置。
- 在通知下,点按来电设置。Android 自己的设置会打开。
- 选择铃声和振动,并允许在锁屏上显示全屏提醒。
如何让应用在后台保持连接
- 打开更多 → 设置,滚动到此设备。
- 点按保持后台运行。Android 会询问是否允许此应用忽略电池优化。
- 选择允许。应用获得豁免后,该项就会消失。
- 要检查通知渠道,点按同一分区中的通知设置。
如何打开或安装 Minima Core
- 打开更多 → 设置,找到此手机上的 Minima Core。
- 如果已安装 Minima Core,卡片会显示已安装 Minima Core ✓。点按打开 Minima Core。
- 如果没有,点按获取 Minima Core进行安装。
如何设置此手机启动时使用的中继
这些是手机用来查找账户的中继(账户自己的中继在账户上设置,见第 12 或 24 节)。
- 点按此手机启动时使用的中继。列表会把每个中继标为内置或您添加的。
- 要添加中继,输入
host:port或粘贴中继二维码文本,然后点按添加。或者点按扫描中继二维码。中继二维码文本以parlons-relay:开头。 - 移除会删除一个你自己添加的中继。你必须至少保留一个;移除最后一个时,内置列表会重新打开。
- 使用内置中继(应用附带的列表)用于打开或关闭内置列表。你必须先添加一个自己的中继,才能将其关闭。
- 重置会恢复为内置列表。完成关闭对话框。
更改会在下次重新连接时生效。
14通知、通话和保持连接
应用以 Android 前台服务的形式与你的账户保持一条持续的加密连接,因此消息会通知、来电会响铃。它的常驻通知显示已连接到您的云端账号。手机重启后,如果已配对设备,应用会自动重新连接。
Android 通知渠道:
| 渠道 | 用途 |
|---|---|
| 消息 / 消息(静音) | 云端账户上的新消息(消息提示音关闭时使用静音渠道)。 |
| 来电 | 正在响铃的来电,包括锁屏上的全屏提醒。 |
| 云端连接 | 常驻的连接通知。 |
| 铸造进度通知 | 从钱包发起的 NFT 铸造进度。 |
通话。语音和视频通话均为一对一。音频和视频在两台设备之间加密。应用首次使用时会请求麦克风权限(视频通话还需相机权限)。
如何接听来电
- 来电会显示 Parlons 来电(或 Parlons 视频来电),如果 Android 允许,会在锁屏上全屏显示。
- 点按接听接听,或点按拒接拒绝。
- 通话期间,可使用静音 / 取消静音、扬声器 / 听筒、翻转(切换摄像头,仅限视频)和挂断。
要发起通话,见第 6 节“如何呼叫联系人”。
如果消息到达得很晚
- 打开更多 → 设置 → 此设备,如果显示保持后台运行,请点按它(第 13 节)。
- 确保 Android 允许此应用发送通知(同一分区中的通知设置)。
- 检查状态胶囊。它应显示在线 · N 个主机。
- 如果胶囊显示无法连接,可能是账户本身已停止(第 17 节)。
15在其他 Parlons 应用中使用你的账户
一个账户可以同时从多个地方操作。每个地方都是一台单独的已配对设备,有自己的密钥。
- iPhone:Parlons 应用(尚未推出)。推出后:扫描或粘贴同类邀请;它与账户配对的方式和 Portal 完全相同。每增加一台设备,都需要一个新的配对码。
- 运行账户的机器上的浏览器:网页面板。它看起来像 Parlons! 应用(标题栏为 Parlons!,标签页为 聊天、联系人、设备、节点、设置),并作为账户的本地设备工作(第 24 节)。
- 终端:
parlons命令。由一行命令安装程序安装。parlons chats、parlons send <contact key> hello以及第 26 节中的其他命令可以像手机一样操作账户。 - minimaCore Desktop 和 minimaDesk 在它们的 Parlons 页面中为其节点运行的账户内嵌了同样的面板。
Android 上的完整版 Parlons! 应用不是客户端。它在手机上保存自己的身份,不与账户配对。不过,你可以在两者之间迁移身份:从云端账户制作的备份包(备份账户…)可以在 Parlons! 应用中恢复(身份和联系人)。切勿在两个地方同时运行同一个身份(第 16 节)。
如何将 iPhone 配对到同一个账户
iPhone 应用尚未推出。以下是推出后的步骤。
- 在一台已配对的设备上,打开节点 → 配对我的其他设备,生成一个新邀请(第 10 节)。
- 在 iPhone 上打开 Parlons 应用。
- 点按扫描账号二维码扫描邀请,或粘贴邀请。
- 在 iPhone 应用中完成配对。有效的配对码会立即完成配对。
你的账户与其他人的应用。任何使用 Parlons 应用的人,或运行带 Maxima 的经典 Minima 节点的人,都可以把你的 MAX# 地址添加为联系人并给你发消息。
16备份、恢复和迁移
你的 24 个单词
每个账户就是 24 个单词。账户的地址由它们派生,所以在任何地方使用同样的单词都会得到同样的地址。它们也是一个 Minima 钱包:任何读到它们的人,都可以花掉其名下持有的一切资金。
如何查看你的 24 个单词
- 确保没有人能看到你的屏幕。
- 打开更多 → 设置,在密钥与备份下点按显示助记词。
- 显示助记词?对话框提醒:此短语控制您的 Parlons 身份,可能与服务器的钱包助记词不同。请确保没有人在旁观看。它会通过加密通道传输到此手机。 点按显示。
- 出现您的 24 个单词。把它们写在纸上。
- 点按关闭。如果改为点按复制,应用会显示已复制 — 剪贴板将在 60 秒后清除。
身份助记词和钱包助记词可能不同,例如在 Parlons Node 上执行了将钱包重新同步到新助记词…之后,或导入身份之后。两者都要妥善保管。
把这些单词写在纸上,并让纸张保持离线。切勿拍照、通过电子邮件发送,或粘贴到聊天中。
如何备份整个账户
- 打开更多 → 设置,在密钥与备份下点按备份账户…。
- 在备份账户中,在口令(至少 6 个字符)中输入口令,并在再次输入口令中再输一次。如果丢失口令,将无法恢复。
- 点按创建备份。
- 应用显示正在创建加密备份…,然后询问
.pbk文件的保存位置。 - 保存到安全的地方。备份已保存表示保存成功。(如果你等了太久才选择位置,应用会显示备份已过期 — 请重新导出。)
备份包 在离开节点前使用你的口令加密。它包含身份、已配对设备、设置、联系人和聊天记录,格式与手机应用读取的 .pbk 格式相同。不包括媒体和私密文件的内容。在终端中,可以用 parlons backup <file.pbk> 制作同样的文件。
如何在自己的机器上恢复账户
- 制作一个备份包(见上文),或使用你已有的备份包。
- 在将要运行账户的机器上,在启动账户之前,用
--restore把备份包恢复到一个空的数据文件夹中。第 19 节“将账户迁移到另一台机器”给出了确切的命令。 - 永久停止旧副本。
地址保持不变,因此每台已配对设备都会自动重新连接。
如何从应用将身份导入 Parlons Node
这需要 Parlons Node 0.2.117 或更高版本。在其他主机上,应用会显示 请将 Parlons Node 更新至 0.2.117 或更高版本,以便从此应用导入。
- 先在原设备或原服务器上停止该身份。
- 打开更多 → 设置,在密钥与备份下点按导入身份或备份…。
- 选择要导入的内容:
- 输入恢复助记词;或
- 对于非标准短语,选择自定义短语(Minima anyphrase)(每个空格和大写字母都会保留);或
- 点按改用 .pbk 备份…,选择文件并输入其备份密码。
- 点按查看导入预览。检查新地址。
- 勾选我已在原设备或服务器上停止使用此身份。
- 点按导入并重启。服务器会重启(服务器正在重启。正在重新连接导入的身份…),应用会重新连接(身份已导入并连接)。
这会替换服务器上的 Parlons 身份、联系人和聊天。它的 Minima 钱包和钱包助记词保持不变。之前的账户会保留在服务器上,以便恢复。如果连接中断,请重新打开该屏幕并点按继续 / 检查导入。取消已准备的导入会在确认前放弃导入。你的助记词从不保存在手机上。
一个身份,一个地方
每个身份同一时间只能在一个地方运行。两个副本会让你的联系人混乱,并可能重复使用绝不能重复使用的钱包密钥。要迁移,而不是复制:先永久停止旧副本,再启动新副本。
如何离开主机
你可以随时离开。你的地址保持不变,所以联系人和已配对设备都能照常使用。
- 备份整个账户(见上文),并保管好口令。
- 请主机暂停旧副本(第 22 节“暂停和恢复”),确保身份不会同时在两个地方运行。
- 在你自己的机器上恢复备份包并启动它(第 19 节“将账户迁移到另一台机器”)。
- 检查你的手机是否重新连接到了新副本。
- 请主机永久移除旧副本。
17账户持有人故障排除
| 症状 | 怎么办 |
|---|---|
| 配对时显示无法连接:…,或胶囊显示无法连接 | 账户没有连接到中继:它已停止、没有网络,或刚刚启动。在它所在的机器上运行 parlons status;在 Parlons Node 上运行 journalctl -u parlons-node -f;如果是托管账户,请询问运维人员。 |
| 配对失败 | 配对码错误、已被使用,或已被更新的配对码替换。请索取新邀请。 |
| 已请求配对。请在已配对的设备上批准 | 你在没有配对码的情况下进行了配对。请从另一台已配对设备批准此设备,然后重新打开应用。 |
| 创建所有者账户邀请需要管理员密码 | 主机保护所有者邀请。请输入管理员密码,或改为批准无配对码的配对(第 10 节)。 |
| 请在主机应用的 Parlons“设备”页面设置管理员密码… | 还没有人设置管理员密码。见第 23 节。 |
| 此服务器尚未启用托管 / 托管服务离线 | 内置托管已关闭,或主机的租户服务已停止。见第 11 节,或询问运维人员。 |
| 此账户仅支持聊天、通话和文件,钱包及主机控制功能已禁用 | 你使用的是仅聊天的访客账户。 |
| 消息到达得晚,或只有打开应用时才到达 | 设置 → 此设备 → 保持后台运行;允许通知;检查胶囊。 |
| 勾号一直不变成双勾 | 对方设备还没有确认收到。消息在等待,并没有丢失。 |
| 消息未送达 | 在对话框中点按重新连接,或在 联系人 → 该联系人 → 更多 中点按立即重新连接。 |
| 扫描按钮没有反应 | 在被询问时允许使用相机。 |
| 手机丢失 | 从另一台已配对设备撤销它(第 10 节)。账户及其历史记录不受影响。 |
| 指纹验证失败后应用被锁 | 解锁 Parlons Cloud 会再次询问;也可以使用设备 PIN 码。 |
到哪里查看日志:节点 → 打开控制面板 → 事件日志(Parlons Node);否则请询问运行这台机器的人(第 30 节)。
B 部分:托管账户
18你需要哪种主机?
| 你想要 | 使用 | 章节 |
|---|---|---|
| 在 Mac、Linux 机器、Raspberry Pi 或 Windows 电脑上运行自己的账户 | 一行命令安装程序(get-parlons-cloud.sh / .ps1) | 19 |
| 在你从笔记本电脑管理的 VPS 上运行自己的账户,同时承载中继流量 | ops/deploy-parlons-cloud.sh | 20 |
| 在一台机器上为多人提供账户,助记词静态加密 | ops/deploy-parlons-tenants.sh 和 parlons-tenants 服务 | 21 |
| 内置 Parlons 的完整 Minima 节点 | Parlons Node(cloud/NODE-SETUP.md);在旁边加上 parlons-tenants 即可为朋友托管 | 21、23 |
| 在你自己的账户中提供仅聊天的访客账户 | 内置托管(网页面板或 Portal) | 11、24 |
每台主机都需要一台保持开机并能访问外网的机器。单个账户不需要域名、TLS 证书或反向代理。只有当主机还为他人运行中继时,才需要入站端口。
19在自己的机器上运行一个账户:一行命令安装程序
如何在 Mac、Linux、Raspberry Pi 或 VPS 上安装
- 在将要运行账户的机器上打开终端。
- 粘贴以下命令并按 Enter:
curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | bash - 等待五个步骤完成。最后一屏会显示你的地址、一个邀请二维码和邀请文本。
- 在手机上,用这个邀请配对 Portal(第 4 节)。
- 现在就备份助记词(见下文)。
如何在 Windows 10 或 11 上安装
- 打开 PowerShell。
- 粘贴以下命令并按 Enter:
irm https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.ps1 | iex - 等待完成,然后用它打印的邀请配对你的手机(第 4 节)。
- 备份
C:\Users\<you>\.parlons\seed.txt中的助记词(见下文)。
Windows 脚本自己说明,其作者尚未在 Windows 机器上验证过它。如有任何问题,请反馈。
安装程序做了什么
安装程序会:
- 如果缺少 Java 11 或更高版本,就安装它(Mac 上用 Homebrew,Linux 上用 apt、dnf、apk 或 pacman,Windows 上用 winget),并在可能时安装
qrencode; - 从 GitHub 下载最新的
parlons-cloud发布版本,并检查其 SHA-256 校验和; - 注册一个重启后依然有效的服务:Mac 上是 launchd 代理,Linux 上是 systemd 用户单元(启用 linger)或系统单元,Windows 上是名为 Parlons Cloud 的计划任务;
- 启动账户,把这个终端配对为第一台设备,并生成一个新的配对码;
- 打印账户地址、给手机用的邀请(文本和二维码),以及
parlons命令。
它的结尾是这样的(地址和邀请会完整打印):
Your Parlons account is running (Parlons Cloud 0.11.124).
Address (share it; it never changes):
<the full MAX# address>
Pair your phone: open the Parlons Cloud app, tap Scan account QR, point it at this:
<a QR code, drawn in the terminal>
or paste the invite (the code half works once):
<the full invite>
BACK UP YOUR SEED NOW: ~/.parlons/seed.txt - it is your identity AND a wallet.
安装程序的文本写的是 Scan account QR,这是 iPhone 应用的标签。在 Android Portal 中,按钮是扫描配对二维码。
选项
| 选项 | 效果 |
|---|---|
… | bash -s -- --no-relay(Windows:.\get-parlons-cloud.ps1 -NoRelay) | 仅运行账户:不为他人中继。默认情况下,账户还会在 TCP 端口 9501 上运行一个中继。 |
… | bash -s -- --update | 获取最新发布版本并重启。再次运行安装命令效果相同。 |
… | bash -s -- --uninstall(Windows:-Uninstall) | 停止并移除服务。你的账户数据会保留。 |
PARLONS_DATA=<dir> | 数据文件夹(默认 ~/.parlons)。 |
PARLONS_HEAP=<size> | Java 堆大小(默认 256m)。 |
默认情况下,账户以 --relay-port 9501 --no-direct 运行:它在端口 9501 上为他人中继;在 Linux 上,如果 ufw 处于启用状态,安装程序会在 ufw 中开放 9501。即使从外部无法访问 9501,也不会出问题;账户仍然通过中继网络工作,只是不承载其他人的消息。使用 --no-relay 时,它完全不开放任何入站端口。它的网页面板监听 127.0.0.1:9587(第 24 节)。
如何让他人能够访问你的中继
- 照常安装;中继默认开启。
- 确保可以从互联网访问 TCP 端口 9501:在云服务商的防火墙中允许它,或在家用路由器上进行端口转发。
- 在 Linux 上,如果 ufw 处于启用状态,安装程序会在 ufw 中开放 9501。
- 从另一台机器验证端口(第 28 节)。
如何在不运行中继的情况下安装
curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | bash -s -- --no-relay
在 Windows 上,下载 get-parlons-cloud.ps1 并运行 .\get-parlons-cloud.ps1 -NoRelay。
如何使用其他数据文件夹或堆大小
- 在
bash前面设置变量:curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | PARLONS_DATA=/srv/parlons PARLONS_HEAP=512m bash - 以后每次运行安装程序时都使用相同的变量,这样它才能找到同一个文件夹。
如何更新
- 运行:
parlons update或者再次运行安装命令。在 Windows 上,请再次运行安装命令。
- 安装程序会获取最新发布版本,检查其 SHA-256,并重启账户。
- 检查它是否已恢复运行:
parlons status
如何移除服务并保留数据
- 运行:
parlons uninstall在 Windows 上,运行
.\get-parlons-cloud.ps1 -Uninstall。 - 服务会停止并被移除。你的账户数据保留在数据文件夹中。
日常操作
| Mac / Linux | Windows | |
|---|---|---|
| 是否在运行? | parlons status | parlons status |
| 查看日志 | parlons log | parlons log |
| 停止 / 启动 / 重启 | parlons stop、parlons start、parlons restart | parlons stop、parlons start |
| 更新 | parlons update(或再次运行安装命令) | 再次运行安装命令 |
| 移除服务,保留数据 | parlons uninstall | .\get-parlons-cloud.ps1 -Uninstall |
| 打开网页面板 | parlons panel | parlons panel |
| 文件位置 | ~/.parlons(数据)、~/.parlons/bin(程序)、~/.parlons-client(终端自己的设备密钥) | %USERPROFILE%\.parlons、%USERPROFILE%\.parlons-client |
要移除账户本身(身份、聊天、助记词),卸载程序会告诉你自行删除数据文件夹和 ~/.parlons-client。请先备份:删除助记词就等于删除身份以及其名下持有的所有资金。
备份助记词
~/.parlons/seed.txt(Windows 上为 C:\Users\<you>\.parlons\seed.txt)保存着这 24 个单词。安装程序从不打印它们。
- 确保没有人能看到你的屏幕。
- 显示这些单词:
cat ~/.parlons/seed.txt或者在任何已配对的终端中运行
parlons seed。 - 把它们抄写到纸上。妥善保管这张纸,并让它保持离线。
- 清空终端。
将账户迁移到另一台机器
- 在旧机器上:运行
parlons backup my-account.pbk,并设置一个口令。 - 把文件复制到新机器。
- 在新机器上,在运行安装程序之前,把它恢复到安装程序将要使用的文件夹中:
mkdir -p ~/.parlons curl -fsSL -o ~/parlons-cloud.jar "$(curl -fsSL https://api.github.com/repos/eurobuddha/maxima/releases | grep -oE 'https://github.com/[^"]+/cloud-v[^"]+/parlons-cloud-[0-9.]+\.jar' | head -1)" java -jar ~/parlons-cloud.jar --data ~/.parlons --restore my-account.pbk curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | bash--restore会在控制台上询问口令,并拒绝覆盖已有的身份。它会打印恢复了哪些内容(名称、联系人、密钥使用计数、已配对设备和聊天记录)。 - 永久停止旧机器:在那里运行
parlons uninstall,其数据只作为冷备份保留。
已配对设备会自动重新连接,因为地址没有变。
20在 VPS 上运行一个账户:deploy-parlons-cloud.sh
如何将账户部署到 VPS
- 在你自己的电脑上,获取仓库的检出副本。
- 构建 jar,或把已发布的
parlons-cloud-0.11.124.jar放入dist/:./gradlew :cloud:fatJar - 确保你能以 root 身份通过 SSH 登录 VPS,且不会提示输入密码。
- 运行部署脚本:
ops/deploy-parlons-cloud.sh root@vps.example.com --port 9501 --name "My account" - 最后,脚本会打印账户地址和一个一次性配对码。用它们配对你的手机(第 4 节)。
- 读取一次助记词,并离线保存:
ssh root@vps.example.com 'cat /var/lib/maxima/seed.txt' - 在云服务商的防火墙中允许中继端口,并从另一台机器验证它(第 28 节)。
以后要更新,只需再次运行同一条命令。安装和更新是同一个操作。
选项
--port N(中继端口,默认 9501)、--name "…"(显示名称)、--jar FILE(默认:最新的 dist/parlons-cloud-*.jar)、--heap 256m、--memmax 1024M、--blob 1024(中继媒体存储空间,单位 MB)、--peers h:p,h:p(中继的网状网络节点)。
脚本是幂等的:安装和更新是同一条命令。它依次:
- 如果机器上没有 Java,就安装一个无图形界面的 Java;
- 创建一个无特权的
maxima用户和/var/lib/maxima(权限 700); - 把 jar 上传到
/opt/maxima,检查其 SHA-256,然后才把parlons-cloud.jar符号链接指向它; - 写入一个加固的
parlons-cloud.service(沙盒化、限制内存、seccomp 过滤、屏蔽云元数据地址),运行--data /var/lib/maxima --relay-port <port> --no-direct --blobstore <MB>; - 如果 ufw 或 firewalld 处于启用状态,就在其中开放中继端口;
- 启动服务并验证它正在监听;
- 打印账户地址和一次性配对码。
它从不打印助记词。请按上面第 6 步,通过 SSH 读取一次。
如果脚本没有打印地址或配对码
- 通过 SSH 登录 VPS。
- 在日志中查找地址:
journalctl -u parlons-cloud | grep 'permanent address' | tail -1 - 如果已经有设备完成配对,磁盘上就没有初始配对码。请从已配对的设备生成新的配对码(第 10 节)。
手动安装(四条命令,一个最简单元)在 cloud/SETUP.md 中有说明。注意,当账户在 systemd 下运行时,其输出是日志,程序会刻意不在其中打印新的助记词;如果你想在首次启动时看到这些单词,请先在前台运行一次,或事后读取 seed.txt。
21多个账户:parlons-tenants 服务
多账户主机在一个目录下按文件夹为每人保留一个始终在线的账户,全部运行在一个进程中。它面向不打算自己运行服务器的人:iPhone 用户、朋友、评审人员。每个租户都有自己的身份、设备、聊天和备份,并可以随时以加密备份包的形式离开。
如何安装租户主机
你需要一台保持开机的 Linux 机器(512 MB 内存大约够十个账户),以及你自己电脑上的仓库。
- 在你自己的电脑上构建 jar(
./gradlew :cloud:fatJar),或把parlons-cloud-0.11.124.jar放入dist/。 - 确保你能以 root 身份用密钥通过 SSH 登录该机器(脚本以批处理模式运行 SSH,因此无法回应密码提示)。
- 运行:
ops/deploy-parlons-tenants.sh root@your.box - 等待脚本验证主机已启动并正在轮询租户。
- 把
/etc/parlons-tenants.env从机器复制到安全的离线存储中,与数据备份分开存放:scp root@your.box:/etc/parlons-tenants.env ./parlons-tenants.env.backup - 创建第一个租户(第 22 节)。
选项
| 选项 | 默认值 | 含义 |
|---|---|---|
--jar FILE | 最新的 dist/parlons-cloud-*.jar,否则为 cloud/build/libs/parlons-cloud.jar | 要安装的 jar。 |
--heap SIZE | 512m | Java 堆大小(约十个租户)。 |
--memmax SIZE | 768M | systemd 内存上限。 |
--dir PATH | /var/lib/parlons-tenants | 租户目录(普通的绝对路径)。 |
--peers h:p,h:p | 无 | 作为初始来源的额外网络中继。 |
--manage-from-node | 关闭 | 把同一台机器上 Parlons Node(0.2.118 或更高版本)的所有者界面连接到此服务(见下文)。 |
脚本会:
- 如果缺少 Java,就安装一个无图形界面的 Java;
- 创建
maxima用户和租户目录(权限 700); - 把 jar 上传到
/opt/maxima,检查其 SHA-256,并把parlons-cloud.jar指向它; - 只写入一次解锁口令文件
/etc/parlons-tenants.env(仅 root 可读,一个随机的PARLONS_UNLOCK=值),并写入一个加固的parlons-tenants.service; - 重启服务,并验证主机已启动并正在轮询租户。
该单元运行:
/usr/bin/java -Xmx<heap> -jar /opt/maxima/parlons-cloud.jar \
--tenants /var/lib/parlons-tenants --no-relay --no-direct --panel-port 9597 --unlock env
因此,默认情况下主机不开放任何入站端口(它只以出站方式连接到中继网络),并且可以与 Parlons Node 部署在同一台机器上。由于解锁口令已生效,新租户创建时会使用加密的助记词(seed.enc)。
备份 /etc/parlons-tenants.env。每个 seed.enc 都是用它加密的。没有它,加密的助记词就无法打开。
与 Parlons Node 搭配:--manage-from-node
当机器上已经运行着 Parlons Node(0.2.118 或更高版本),并且其所有者需要通过 Portal 管理访客时使用此方式。
- 确认机器上已安装
parlons-node。没有它,脚本会拒绝运行。 - 运行:
ops/deploy-parlons-tenants.sh root@your.box --jar dist/parlons-cloud-0.11.124.jar --manage-from-node - 等待两个服务都重启。
- 在与节点配对的 Portal 中,打开节点,确认出现了托管账户以及管理托管账户。
脚本会添加一个附加配置文件 /etc/systemd/system/parlons-node.service.d/hosted-accounts.conf(把 PARLONS_HOSTED_DIR 设置为租户目录,并允许节点写入该目录),然后重启 parlons-node。节点现有的命令行和数据会保留。如果没有安装 parlons-node,脚本会拒绝运行。之后,所有者可以通过 Portal 管理访客:节点 → 托管账户 → 管理托管账户(第 11 节),也可以在服务器上用 sudo parlons-pair --guest <name> 管理(第 23 节)。
租户的网页面板
deploy-parlons-tenants.sh 会把 --panel-port 9597 写入单元。每个租户都有自己的环回网页面板:第一个启动的使用 9597,下一个使用 9598,依此类推,按启动顺序分配。端口范围从 9587 以上开始,因为同一台机器上的 Parlons Node 已经占用了默认面板端口 127.0.0.1:9587。
较旧的单元带有 --no-panel,所以它们的租户没有面板。
如何在较旧的单元上为租户提供面板
- 重新运行部署脚本。它会用
--panel-port 9597重写单元:ops/deploy-parlons-tenants.sh root@your.box - 或者在机器上手动编辑单元。请先保留一份副本:
cp /etc/systemd/system/parlons-tenants.service /etc/systemd/system/parlons-tenants.service.before-panels systemctl edit --full parlons-tenants在
ExecStart中,把--no-panel改为--panel-port 9597。然后:systemctl daemon-reload && systemctl restart parlons-tenants
如何查找租户的面板端口
- 在机器上读取该租户的
panel.txt:sudo cat /var/lib/parlons-tenants/alice/panel.txt - 使用这个端口。不要猜:端口号按顺序分配,并且在主机运行期间不会重复使用,所以暂停后又恢复的租户会使用下一个端口号。
如果某个面板端口被占用,该租户的面板就不会启动(日志显示 web panel could NOT start on 127.0.0.1:<port>)。账户本身照常运行。重新运行 deploy-parlons-tenants.sh 会重写单元,因此你手动做的任何修改都会丢失,必须重新进行。
从你的电脑打开租户的面板,见第 24 节。
容量
每个租户从主机的同一个 IP 地址连接到大约三个网络中继,而中继会限制每个来源 IP 的未注册连接数(默认为 32)。请按每台主机大约十个租户来规划。托管账户的默认创建上限是十个,已暂停的账户也计算在内(可用 -Dparlons.hosted.limit=<n> 更改)。
22创建、暂停和移除租户
创建
如何从你的电脑创建租户
- 选择一个名称:1 到 64 个字符,可以是字母、数字、
.、_和-,必须以字母或数字开头。 - 运行:
ops/tenant-new.sh root@your.box alice如果你没有使用默认的租户目录,请加上
--dir <path>。 - 等待。脚本会以
maxima用户身份在机器上运行parlons-cloud --tenant-new。它会打印 waiting for hosted account alice to connect…,并最多等待 60 秒,让正在运行的主机启动新账户。 - 复制它打印的邀请,私下发送给该账户的使用者,或者用任意二维码生成工具把它转成二维码。
它会完整打印:
address: <the full MAX# address>
pair code: <XXXX-XXXX-XXXX> (one-time)
invite: <the full invite>
A valid invite pairs immediately. Share it only with this account's user.
新账户会在五秒内启动;其他任何东西都不会重启。
如何直接在机器上创建租户
- 以 root 身份通过 SSH 登录机器。
- 运行:
runuser -u maxima -- java -jar /opt/maxima/parlons-cloud.jar --tenant-new /var/lib/parlons-tenants alice - 把打印出的邀请私下发送给该账户的使用者。
其他创建方式:在启用了 --manage-from-node 的 Parlons Node 上运行 sudo parlons-pair --guest alice(第 23 节),或使用所有者的 Portal(第 11 节)。
暂停和恢复
已暂停的账户会保留其身份和聊天。所有者 Portal 中的暂停账户 / 恢复账户作用相同。
如何暂停租户
- 通过 SSH 登录机器。
- 创建该租户的
.stop文件:touch /var/lib/parlons-tenants/alice/.stop - 五秒内,日志会显示
tenant alice: stopped (.stop)。
如何恢复租户
- 删除
.stop文件:rm /var/lib/parlons-tenants/alice/.stop - 五秒内,日志会显示
hot-add: alice,租户重新启动。
为现有租户发出新邀请
当有尚未使用的配对码(pair-code.txt)时,租户的当前邀请保存在 /var/lib/parlons-tenants/<name>/invite.txt 中。一旦被使用,两个文件都会被删除。
如何为租户发出新邀请
使用以下任一方式:
- 从你的电脑。对现有名称再次运行创建命令:
ops/tenant-new.sh root@your.box alice对于已存在的文件夹,它不会替换身份。它会重新发出尚未使用的配对码,或生成一个新的配对码。
- 从租户自己的设备。租户在自己的 Portal 中打开节点 → 配对我的其他设备。
parlons-tenants主机上的租户没有管理员密码,所以会立即生成一个配对码。 - 从所有者的 Portal(需启用
--manage-from-node):节点 → 管理托管账户,点按该账户,然后点按显示邀请。
如何在机器上读取尚未使用的邀请
- 通过 SSH 登录机器。
- 运行:
sudo cat /var/lib/parlons-tenants/alice/invite.txt如果文件不存在,说明配对码已被使用。请发出新邀请(见上文)。
从备份包恢复租户
主机会在五秒内启动任何新文件夹,而没有助记词的文件夹会得到一个新身份。--restore 最后才写入 seed.txt。因此,请恢复到租户目录之外的临时文件夹中,然后再移进去。
- 把
.pbk文件复制到机器上maxima用户可以读取的位置。 - 选择一个尚不存在的租户名称。临时路径要与租户目录位于同一个文件系统上。
- 在交互式 SSH 会话中(
--restore会在控制台上询问口令),运行:sudo install -d -o maxima -g maxima -m 700 /var/lib/parlons-restore-alice sudo runuser -u maxima -- java -jar /opt/maxima/parlons-cloud.jar --data /var/lib/parlons-restore-alice --restore /path/alice.pbk - 按提示输入备份的口令。命令会打印恢复了哪些内容。
- 把文件夹移进去:
sudo mv /var/lib/parlons-restore-alice /var/lib/parlons-tenants/alice - 五秒内,主机会用恢复的身份启动它。
恢复出的 seed.txt 是明文(权限 0600)。要加密它,请按下一个步骤操作。
加密现有的明文助记词
- 确保没有人能看到你的屏幕,然后读取解锁口令。你将在第 3 步中输入它:
sudo grep PARLONS_UNLOCK /etc/parlons-tenants.env - 停止主机:
systemctl stop parlons-tenants - 在交互式 SSH 会话中运行加密,并在提示时输入与
PARLONS_UNLOCK相同的口令:sudo runuser -u maxima -- java -jar /opt/maxima/parlons-cloud.jar --tenants /var/lib/parlons-tenants --unlock prompt --encrypt-seeds - 重新启动主机:
systemctl start parlons-tenants
每个 seed.txt 都会变成 seed.enc。每一个在删除明文之前都会经过验证。
移除租户
没有删除命令。租户的文件夹保存着账户的密钥:请像对待钱包一样对待它。
- 暂停该租户(
touch /var/lib/parlons-tenants/alice/.stop)。 - 确保对方已经拿到自己的备份包,或者不再需要该账户。
- 把文件夹移出租户目录:
sudo mv /var/lib/parlons-tenants/alice /var/lib/parlons-removed-alice - 把它作为冷备份保留,或在确认无误后将其彻底清除。
23从服务器发出所有者邀请和访客邀请
管理员配对密码
在具有密码服务的主机上(独立的 parlons-cloud 账户、Parlons Node 0.2.118 或更高版本,以及桌面节点应用),所有者邀请(可完全控制所有者账户的配对码)受管理员配对密码保护。访客邀请从不需要它。
- 长度必须为 10 到 1024 个字符。
- 主机只在账户数据文件夹的
.admin-pairing-password中存储一个验证值(用 scrypt 和 AES-GCM 加密);它从不存储密码本身。 - 每次尝试后,主机会等待两秒才接受下一次尝试。
- 只能在本地设置或更改:在主机的网页面板中、在桌面应用的 Parlons“设备”页面中,或在命令行上。没有远程重置密码的方式。
- 添加密码后,现有的所有者设备仍然是所有者。
如何在 Parlons Node 上设置管理员密码
- 打开到节点服务器的交互式 SSH 会话。
- 运行:
sudo parlons-pair --set-admin-password - 在
Admin password (Enter for a guest invitation):处输入新密码(10 到 1024 个字符)。在Confirm admin password:处再输入一次。 - 命令会打印 Admin pairing password saved.
如果没有交互式终端,它会停止并显示 Use an interactive SSH terminal (ssh -t) for the admin password。
如何从网页面板设置管理员密码
- 打开账户的网页面板(第 24 节)。
- 打开设备,找到设置管理员密码(如果已设置,则为更改管理员密码)。
- 要更改现有密码,请在当前密码中输入它。
- 在新密码中输入新密码,并在确认新密码中再输入一次。密码至少需要 10 个字符。
- 点击保存密码。面板会确认:管理员密码已保存。现在可以创建设备所有者邀请。
如何从命令行设置管理员密码
- 在运行账户的机器上打开一个交互式终端。
- 对于用
deploy-parlons-cloud.sh部署的账户,运行:sudo runuser -u maxima -- java -cp /opt/maxima/parlons-cloud.jar com.eurobuddha.maxima.cloud.AdminPairingPassword set /var/lib/maxima对于用一行命令安装程序安装的账户,以你自己的身份运行:
java -cp ~/.parlons/bin/parlons-cloud.jar com.eurobuddha.maxima.cloud.AdminPairingPassword set ~/.parlons - 输入两次密码。命令会打印 Admin pairing password saved.
在桌面节点应用中,请在应用的 Parlons“设备”页面设置。
sudo parlons-pair
parlons-pair 随 Parlons Node 一起安装,显示的邀请与应用“节点”标签页中的相同。
| 命令 | 作用 |
|---|---|
sudo parlons-pair | 询问管理员密码。输入密码即可得到所有者邀请;直接按 Enter 则得到访客邀请,然后输入访客的账户名称。 |
sudo parlons-pair --admin | 所有者邀请。密码错误会失败,绝不会发出配对码。 |
sudo parlons-pair --guest alice | 在租户目录中创建(或重用)托管账户 alice,并打印其邀请。需要托管账户服务(第 21 节)。 |
sudo parlons-pair --set-admin-password | 设置管理员密码。 |
--data DIR | 所有者账户的数据目录(默认 /var/lib/parlons-node)。 |
--tenants-dir DIR | 租户目录(默认 PARLONS_HOSTED_DIR,否则为 /var/lib/parlons-tenants)。 |
环境变量覆盖:PARLONS_HOSTED_DIR、PARLONS_NODE_JAR(默认 /opt/maxima/parlons-node.jar)、PARLONS_CLOUD_JAR(默认 /opt/maxima/parlons-cloud.jar)。
它会打印完整的 MAX# 地址、一次性配对码、一个二维码(如果安装了 qrencode)以及完整的邀请。如果没有未使用的配对码,它会这样提示;再运行一次即可获得新的配对码。已使用的配对码绝不会从旧日志或过时文件中恢复。
如何在 Parlons Node 上生成所有者邀请
- 打开到节点服务器的交互式 SSH 会话。
- 运行:
sudo parlons-pair --admin - 在
Admin password (Enter for a guest invitation):提示处输入管理员密码。密码错误时会打印 Incorrect admin password,绝不会发出配对码。 - 用 Portal 扫描打印出的二维码(扫描配对二维码),或粘贴完整的邀请(第 4 节)。
如何在 Parlons Node 上生成访客邀请
这需要托管账户服务(--manage-from-node,第 21 节)。
- 打开到节点服务器的 SSH 会话。
- 带上访客的账户名称运行:
sudo parlons-pair --guest alice - 它会创建托管账户
alice(或重用它),并打印其邀请。 - 把邀请私下发送给这个人。
不带选项运行 sudo parlons-pair 时,会询问管理员密码。输入密码即可得到所有者邀请。或者直接按 Enter,然后在 Hosted account name: 处输入访客的名称,即可得到访客邀请。
邀请的其他来源
| 来源 | 所有者邀请 | 访客邀请 |
|---|---|---|
| Portal,节点 → 配对我的其他设备 | 是(如果主机有管理员密码,需要输入) | 密码留空 → 托管账户 |
| Portal,节点 → 管理托管账户 → 显示邀请 | 否 | 是 |
| 网页面板,设备 → 新建配对码 | 是(主机有管理员密码时显示管理员密码字段) | 否 |
| 网页面板,设备 → 托管账户 → 显示邀请 | 否 | 是 |
ops/tenant-new.sh、--tenant-new | 否 | 是(该租户自己的邀请) |
首次启动时的初始配对码(pair-code.txt) | 是,用于第一台设备 | 不适用 |
如何用 parlons 命令生成所有者邀请
- 在
parlons已与账户配对的终端中运行:parlons newcode - 如果主机有管理员密码,命令会在控制台上用
Admin password:询问。输入密码。密码绝不会从命令行参数中读取。 - 命令会打印
code :和invite :两行。在 Parlons Cloud 应用中扫描或粘贴邀请。配对码部分只能使用一次。
该提示需要交互式控制台。如果在没有控制台的情况下运行(例如从脚本运行),命令会失败,并显示 Admin password required for an owner-account invitation。
24本地网页面板
每台账户主机都只在环回地址上为其账户提供网页面板和 API:http://127.0.0.1:<port>/。默认端口是 9587。它与已配对手机上的界面相同,只是在同一台机器的浏览器中使用,无需通过网络配对。
打开面板
链接只能让浏览器登录一次。账户会立即把下一个未使用的链接写入 panel-ticket.txt。如果你打开一个已使用的链接,会看到 This link has been used or has expired。
如何在运行账户的机器上打开面板
- 在那台机器的终端中运行:
parlons panel它会用一个一次性链接打开浏览器。
- 或者自己打开保存在
<data>/panel-ticket.txt(例如~/.parlons/panel-ticket.txt)中的链接。
另一台机器上的已配对设备也可以向账户请求一个 60 秒内有效的链接。当账户的文件夹不在同一台机器上时,parlons panel 就是这样做的。
如何从你的电脑打开服务器上的面板
面板会拒绝 127.0.0.1:<port> 或 localhost:<port> 之外的任何 Host。因此,请使用 SSH 隧道,并且两端使用相同的端口号。
- 找到端口。单个账户使用 9587。对于租户,请读取其
panel.txt(第 21 节)。 - 在你的电脑上打开隧道,并让它保持运行:
ssh -L 9587:127.0.0.1:9587 root@your.box对于节点机器上的第一个租户,两端都改用 9597:
ssh -L 9597:127.0.0.1:9597 root@your.box - 在那个 SSH 会话中,打印一次性链接。对于用
deploy-parlons-cloud.sh部署的单个账户:sudo cat /var/lib/maxima/panel-ticket.txt对于租户:
sudo cat /var/lib/parlons-tenants/alice/panel-ticket.txt - 复制该链接,在你电脑的浏览器中打开。
面板显示的内容
标题栏显示 Parlons!、版本和由 Maxima 提供支持,还有一个状态胶囊,以及主题、搜索和更多按钮。标签页包括:
- 聊天:对话、未读数量、搜索、新建群组,以及包含照片、语音消息、文件和通话的聊天视图。
- 联系人:添加、你的地址和二维码、重命名、解析、移除、详情。
- 设备:
- 配对您自己的设备:此操作会授予对此账户的访问权限。若要邀请他人使用独立账户,请使用下方的“托管账户”。 新建配对码以二维码和文本形式显示邀请,并带有复制按钮。如果主机有管理员密码,上方会出现管理员密码字段,在设置密码之前该按钮保持禁用。
- 设置管理员密码 / 更改管理员密码(仅限有密码服务的主机):当前密码、新密码、确认新密码(至少 10 个字符)、保存密码。
- 托管账户(当账户管理一台主机时):启用托管 / 停止托管、刷新、带有创建账户的账户名称字段,以及每个账户一行,显示其状态、显示邀请和暂停 / 继续。邀请以二维码和完整文本显示,并带有复制租户邀请。
- 设备:每台已配对设备及其完整密钥和撤销;等待批准的设备以及批准。面板本身列为此计算机。
- 节点:账户(名称、版本、运行时间、已连接中继、网状网络节点、已配对设备、收件箱/发件箱、完整的永久地址)、您的中继、运行中继时的端口转发帮助、中继(添加
host:port或中继二维码文本、断开、使用内置中继列表)、地址目录锚点(固定最佳中继、清除、重新发布),以及日志。 - 设置:语言、个人资料(您的名称)、已连接的应用(minimaDocs)、隐私(已读回执)、外观,以及此面板(在浏览器中打开、退出登录)。
在面板中执行的任务
如何从面板配对你自己的设备
- 点击设备。
- 在配对您自己的设备下,如果显示了管理员密码字段,请输入密码。
- 点击新建配对码。面板显示新配对码已生成,以及二维码和文本形式的邀请。
- 用 Portal 扫描二维码(扫描配对二维码),或点击复制按钮,在新设备上粘贴邀请。
如何在面板中批准或撤销设备
- 点击设备。
- 在等待批准下,点击你认识的设备旁边的批准。面板显示已批准。
- 要切断一台设备,点击它旁边的撤销,并确认 撤销此设备?它将失去账户访问权限。 面板显示已撤销。
如何从面板为朋友托管账户
- 点击设备,滚动到托管账户。
- 仅限内置托管:点击启用托管并确认。请先设置管理员密码。
- 在账户名称中输入名称(例如 alice),然后点击创建账户。面板显示 账户已创建。请稍等几秒后刷新,待账户运行后选择“显示邀请”。
- 反复点击刷新,直到账户状态为运行中。
- 点击显示邀请。邀请以二维码和完整文本显示。
- 点击复制租户邀请,私下发送给这个人。
要暂停某个账户,点击其所在行的暂停并确认。继续会让它恢复。停止托管会让所有内置访客账户离线;它们的身份和聊天会保留。
如何在面板中添加或移除中继
- 点击节点,滚动到中继。
- 在字段中输入
host:port(例如relay.example.com:9501)或粘贴中继二维码文本,然后点击添加。 - 要移除你自己的某个中继,点击其所在行的移除。面板显示已断开。
- 切换使用内置中继列表,即可打开或关闭内置列表。
如何在面板中固定地址目录锚点
- 点击节点,滚动到地址目录锚点。
- 点击固定最佳中继。下方一行显示 已固定:… 以及对应的中继。
- 清除会取消固定。重新发布会立即重新推送你的目录记录。
如何让浏览器退出登录
- 点击设置,滚动到此面板。
- 点击退出登录。要重新进入,请打开一个新的一次性链接。
面板不能做什么
助记词、备份、钱包发送、付款、节点控制台和 NFT 托管都无法通过面板使用。桌面上的一个 Cookie,远不如你手中的手机安全;这些功能只保留在已配对手机和命令行上。
面板的安全性
- 它只监听
127.0.0.1。 - 票据会变成一个 HttpOnly、SameSite=Strict 的会话 Cookie(空闲会话七天后过期)。
- 带有外来
Host(DNS 重绑定)或外来Origin的请求会被拒绝;只能调用允许列表中的账户方法。 - 对账户来说,面板是一台本地设备。从任何手机撤销此计算机都会把面板锁在外面。要重新启用已撤销的面板,请停止账户,删除
<data>/local-device.key,然后重新启动。 - 任何能读取
panel-ticket.txt的人都能打开面板。它的权限是 0600;请保持这样。
--no-panel 会关闭面板。--panel-port <n> 会更改其端口。
25命令行参数参考
java -jar parlons-cloud-0.11.124.jar [options]。程序接受的所有参数:
单个账户
| 参数 | 默认值 | 含义 |
|---|---|---|
--data <dir> | ~/.parlons | 账户的数据目录。 |
--name <name> | 保留已存储的名称 | 账户的显示名称。 |
--relay-port <n> | 9501 | 此账户为网络运行的公共中继的端口。 |
--no-relay | (中继开启) | 运行账户时不运行公共中继。 |
--direct-port <n> | 9536 | 第二层直连可达性端口。 |
--no-direct | (直连开启) | 关闭直连可达性。 |
--panel-port <n> | 9587 | 本地网页面板和 API,仅在 127.0.0.1 上。 |
--no-panel | (面板开启) | 不运行网页面板。 |
--wallet rpc:<port>[:<secret-file>] | 账户自己基于其助记词的签名器 | 通过环回 RPC,把本机上已经运行的 Minima 节点用作钱包。由节点签名;账户只保留身份。该文件保存节点的 -rpcpassword。 |
--host <ip> | 不公布 | 要公布的公网地址。 |
--relays <list> | 无 | 要额外连接的网络中继(以逗号分隔的 host:port)。 |
--no-builtin-relays | (内置列表开启) | 不把编译在程序中的中继列表用作初始来源;只使用 --relays 和从面板添加的中继。至少需要一个。 |
--peers <list> | 无(或 MAXIMA_PEERS) | 公共中继的网状网络节点(以逗号分隔)。 |
--blobstore <MB> | 1024 | 中继媒体存储空间大小,单位 MB。 |
--import-seed <file|prompt> | 采用一个现有的 24 词助记词、自定义 Minima 短语或助记词十六进制值,只能导入全新目录,然后退出。prompt 表示从控制台读取。 | |
--restore <file.pbk> | 把加密备份包恢复到全新目录,然后退出。需要交互式控制台。 | |
-v、--version | 打印 parlons-cloud 0.11.124 并退出。 | |
-h、--help | 打印帮助并退出。 |
多账户主机
| 参数 | 含义 |
|---|---|
--tenants <dir> | 在同一个进程中运行每个 <dir>/<name>/ 账户。只有第一个租户开放中继端口和直连端口;其他租户共用它们。每个租户的面板按启动顺序使用 --panel-port、+1、+2 …(使用 --no-panel 时则没有面板)。 |
--unlock <prompt|env> | 用于打开 seed.enc 文件的口令:在控制台上询问,或从 PARLONS_UNLOCK 读取(用于 systemd)。只要有任何租户的助记词是加密的,就需要它。它生效期间,新租户会获得加密的助记词。 |
--tenant-new <dir> <name> | 运维命令:创建 <dir>/<name>/,等待(60 秒)正在运行的主机启动它,打印其地址、配对码和邀请,然后退出。 |
--encrypt-seeds | 与 --tenants 和 --unlock 一起使用:把每个租户的 seed.txt 转换为 seed.enc(在解锁口令下使用 scrypt 和 AES-GCM),验证,删除明文,然后退出。 |
环境变量和系统属性
| 名称 | 含义 |
|---|---|
PARLONS_UNLOCK | --unlock env 使用的解锁口令。部署脚本将其保存在 /etc/parlons-tenants.env 中。 |
MAXIMA_PEERS | 网状网络节点,在未指定 --peers 时使用。 |
-Dparlons.hosted.limit=<n> | 托管账户创建上限(默认 10)。如果你调高了它,也要把它传给 --tenant-new。 |
-Dmaxima.relay.maxpersource=<n> | 在你运行的中继上:每个来源 IP 允许的未注册连接数(默认 32)。 |
默认端口一览
| 端口 | 用途 | 暴露范围 |
|---|---|---|
| 9501/tcp | 公共中继 | 公开,仅在你运行中继时 |
| 9536/tcp | 直连可达性 | 公开,仅在启用时 |
| 9587/tcp | 网页面板和 API | 仅限环回,切勿暴露 |
| 9597/tcp 及以上 | 节点机器上的租户面板(配置后,第 21 节) | 仅限环回 |
26parlons 命令
一行命令安装程序会安装 parlons。它本身就是一台已配对设备(其密钥保存在 ~/.parlons-client 中),因此可以操作本机或任何其他机器上的账户。
服务命令(本机的账户):start、stop、restart、log [n]、update、uninstall。
账户命令:
| 命令 | 作用 |
|---|---|
whoami | 此设备的密钥,以及它操作的是哪个账户。 |
connect <account MAX#> | 让此设备指向一个账户。 |
pair [<code>] | 配对此设备(使用配对码,或进入等待状态 → 批准)。 |
ping | 账户名称和地址。 |
status | 名称、版本、运行时间、中继、公共中继、已配对设备、永久地址。 |
devices | 已配对和等待中的设备,带完整密钥。 |
newcode | 生成新的一次性配对码和邀请。如果主机有管理员密码,它会在控制台上询问(第 23 节)。 |
invite | 从本机上账户的文件夹中打印尚未使用的邀请。 |
panel | 在浏览器中打开账户的网页面板(一次性链接)。 |
approve <key> / revoke <key> | 批准等待中的设备 / 撤销设备。 |
name <display name> | 设置账户名称(会通知联系人)。 |
contacts、add <addr|MAX#>、rename <key> <name>、resolve <key> | 管理联系人。 |
chats、read <peer key>、send <peer key> <msg>、markread <peer key> | 阅读和发送消息。 |
pay <key> <amt> [memo] | 从账户的钱包向联系人付款。 |
wallet address、wallet balance、wallet set <Mx>、wallet resync <file> | 账户的钱包(resync:仅限节点账户)。 |
cmd <node command…> | 在账户的节点上运行任意 Minima 命令(仅限 Parlons Node);输出完整。 |
nft put <file> …、nft list、nft newcollection、nft delete <path> | 在节点上托管 NFT 作品(仅限 Parlons Node)。 |
figures、hosts [add|remove <host:port>]、mls pin|clear|republish、nodelog [clear] | 中继统计、中继、地址目录锚点、账户的日志。 |
seed | 显示账户的 24 个单词(仅在你的终端中)。 |
backup <file.pbk> | 写入加密的可携带账户备份包。 |
单独运行 parlons 可查看列表。
如何从另一台机器操作账户
任何机器上的 parlons 命令,只要配对完成,就能操作任何账户。
- 用一行命令安装程序在那台机器上安装
parlons(第 19 节),或使用你已有的。 - 使用完整的
MAX#地址,让它指向该账户:parlons connect <account MAX#>它会打印
account saved. next: parlons pair <code>。 - 用来自已配对设备的新配对码进行配对(第 10 节):
parlons pair ABCD-EFGH-JKLM它会打印
paired ✓ — this device can now drive your account. - 或者不带配对码运行
parlons pair。它会打印pairing requested. Approve it from an already-paired device:以及要在已配对设备上运行的确切parlons approve <key>命令行。 - 检查是否正常:
parlons status
如何从终端阅读和发送消息
- 列出你的聊天(名称、最后一条消息、未读数量):
parlons chats - 查找联系人的完整密钥:
parlons contacts - 阅读一个对话:
parlons read <peer key> - 发送消息:
parlons send <peer key> hello
如何从终端向联系人付款
- 用
parlons contacts查找联系人的密钥。 - 从账户的钱包向对方付款(金额以 MINIMA 计,备注可选):
parlons pay <key> 1.5 lunch - 它会打印
payment building on your node ✓ (watch the chat bubble)。pay命令只能发送 Minima。请通过 Portal 发送 MxUSD。
27数据目录中的文件
单个账户的目录(~/.parlons、/var/lib/maxima)和每个租户文件夹的结构相同。标为机密的文件必须保持权限 0600,绝不能写入日志、粘贴或分享。
| 文件 | 内容 |
|---|---|
seed.txt | 机密。24 个单词(或导入的短语或助记词十六进制值)。既是身份,也是钱包。 |
seed.enc | 机密。在解锁口令下静态加密的租户助记词。 |
account.txt | 永久 MAX# 地址,在账户连接后写入一次。公开。 |
pair-code.txt | 机密。尚未使用的一次性配对码。使用后删除。 |
invite.txt | 机密。完整地址,然后是 ?code=,最后是配对码。配对码使用后删除。 |
panel.txt | 面板的环回 URL。 |
panel-ticket.txt | 机密。一个未使用的一次性面板链接。 |
local-device.key | 机密。面板的设备密钥。删除它(需先停止账户)可重新启用已撤销的面板。 |
.admin-pairing-password | 管理员密码的验证值(绝不是密码本身)。 |
devices.json | 已配对设备。 |
wallet/ | 钱包的密钥使用计数。 |
.stop | (租户)存在 = 此租户已暂停。 |
hosted-chat/ | (所有者账户)内置的仅聊天访客账户,每个一个文件夹;.enabled 表示托管已开启。 |
account-history/ | (Parlons Node)被身份导入替换掉的账户,保留以便恢复。 |
log/cloud.log | (安装程序安装的账户)账户的日志。 |
租户目录中还有 .host-status.json,即主机的心跳(哪些租户正在运行或出现故障),每五秒刷新一次。
28端口、防火墙、TLS 和反向代理
- 单个账户不需要入站端口,不需要域名,也不需要证书。它通过中继网络接入网络,手机则通过 Parlons 自己的加密传输连接到它,而不是通过网页端口。一行命令安装程序(不带
--relay时)和租户主机都以--no-relay --no-direct运行。 - 要让他人访问你的中继(默认开启;
--no-relay可关闭),必须能从互联网访问 TCP 9501(或你的--port)。脚本会在 ufw 或 firewalld 启用时开放它。云服务商控制台中的防火墙(Hetzner Cloud Firewall、Vultr Firewall Group、AWS 安全组)也必须允许它;这通常就是“手机能连接,但配对时好时坏”的原因。请从另一台机器验证,而不是在机器本身上验证:nc -z -G 5 vps.example.com 9501 && echo reachable - 中继端口不是 HTTP。它直接使用 Maxima 线路协议。不要把它放在 HTTP 反向代理或 TLS 终结器后面;客户端以普通 TCP 方式连接它,其中的消息已经是端到端加密的。
- 网页面板绝不能暴露。它绑定到
127.0.0.1,并拒绝Host不是其自身环回来源的请求,因此通过域名访问的反向代理会得到 wrong host。请通过 SSH 隧道访问它(第 24 节)。 - 带有出站规则的防火墙。主机需要能以出站 TCP 连接到它所连接的中继。默认拒绝出站的机器需要为这些中继添加规则。
如何开放并验证中继端口
只有当主机运行中继时才需要。
- 在机器上,在其自身的防火墙中允许该端口。ufw 或 firewalld 启用时,脚本会自动完成这一步。手动操作时,ufw 为:
ufw allow 9501/tcpfirewalld 为:
firewall-cmd --permanent --add-port=9501/tcp && firewall-cmd --reload - 在云服务商的控制台中,也在其防火墙中允许入站 TCP 9501。
- 从另一台机器(而不是机器本身)验证:
nc -z -G 5 vps.example.com 9501 && echo reachable reachable表示端口已开放。没有输出则表示仍有东西在阻挡它。
(网络中的 TLS 前端服务于在 Parlons Node 上运行的其他东西,例如钱包网关和 DEX 中继;它们不属于 Parlons Cloud 主机。)
29升级和回滚
每次安装都会把带版本号的 jar 保存在一个固定的符号链接旁边,因此回滚只需更改一次符号链接。
| 主机 | 升级 | 回滚 |
|---|---|---|
| 一行命令安装程序 | parlons update,或再次运行安装命令 | ln -sf parlons-cloud-<OLDVER>.jar ~/.parlons/bin/parlons-cloud.jar && parlons restart |
deploy-parlons-cloud.sh | 重新运行同一条命令(用 --jar 指定某个构建) | 在机器上:cd /opt/maxima && ln -sf parlons-cloud-<OLDVER>.jar parlons-cloud.jar && systemctl restart parlons-cloud |
parlons-tenants | 重新运行 ops/deploy-parlons-tenants.sh <box>(它会保留 /etc/parlons-tenants.env) | ln -sf parlons-cloud-<OLDVER>.jar /opt/maxima/parlons-cloud.jar && systemctl restart parlons-tenants |
如何检查下载的 jar
- 从发布版本
cloud-v0.11.124下载parlons-cloud-0.11.124.jar。 - 计算其 SHA-256。在 Mac 上:
shasum -a 256 parlons-cloud-0.11.124.jar在 Linux 上:
sha256sum parlons-cloud-0.11.124.jar - 与公布的值进行比较。必须完全一致:
0ae833429b641393f93b427695784b534e8a2a06a7194eba74e57aed4f19b231
安装程序和部署脚本会替你检查 SHA-256,并拒绝不匹配的文件。
如何升级租户主机
- 备份
/etc/parlons-tenants.env和数据目录。 - 如果你编辑过单元,请保留一份副本:
cp /etc/systemd/system/parlons-tenants.service /etc/systemd/system/parlons-tenants.service.before-0.11.124 - 在你的电脑上,用新的 jar 重新运行部署脚本:
ops/deploy-parlons-tenants.sh root@your.box --jar dist/parlons-cloud-0.11.124.jar如果你之前用过
--manage-from-node,请再次加上。脚本会保留/etc/parlons-tenants.env。它会用--panel-port 9597重写单元,因此请重新应用你自己做的其他修改。 - 检查服务:
systemctl is-active parlons-tenants journalctl -u parlons-tenants | grep 'multi-account host' | tail -1这一行应包含
Parlons Cloud 0.11.124。 - 检查每个租户是否都已上报(第 30 节)。
如何回滚
- 在机器上(对于安装程序安装的账户,则在
~/.parlons/bin中),列出仍然存在的带版本号的 jar:ls /opt/maxima/parlons-cloud-*.jar - 使用上表中对应你主机类型的命令行,把符号链接指向旧版本并重启。例如,在租户主机上:
ln -sf parlons-cloud-0.11.122.jar /opt/maxima/parlons-cloud.jar && systemctl restart parlons-tenants - 按上面第 4 步,在日志中检查版本。
Portal 应用独立更新:把较新的 APK 覆盖安装到旧版本上(第 3 节)。
30日志
| 主机 | 位置 |
|---|---|
| 一行命令安装程序 | parlons log,或 ~/.parlons/log/cloud.log |
deploy-parlons-cloud.sh | journalctl -u parlons-cloud -f |
parlons-tenants | journalctl -u parlons-tenants(每个租户的行都带有标签 parlons-cloud/<name>) |
| Parlons Node | journalctl -u parlons-node -f |
| 从已配对手机 | 节点 → 打开控制面板 → 事件日志(Parlons Node) |
| 从面板 | 节点 → 日志 |
如何跟踪日志
- 从上表中选择对应你主机的命令。例如,在租户主机上:
journalctl -u parlons-tenants -f - 如果只想看一个租户,按其标签过滤:
journalctl -u parlons-tenants | grep 'parlons-cloud/alice' - 按 Ctrl+C 停止跟踪。
有用的行:
Parlons Cloud 0.11.124 multi-account host: N tenant(s) under <dir>:主机已启动。tenant <name>: <Mx identity> (seed encrypted at rest):一个租户已启动。hot-add: <name>:发现了一个新文件夹。tenant <name>: stopped (.stop)/parked (.stop present):一个租户已暂停。tenant <name>: failed to start (…), retry in 60 s。web panel could NOT start on 127.0.0.1:<port>: …。
程序从不把助记词写入日志:在 systemd 下,新生成的助记词不会被打印;它会提示你通过 SSH 读取一次 seed.txt。配对码只写入 pair-code.txt,从不记入日志。尽管如此,在搜索日志或单元文件时,请过滤掉任何提到助记词的内容(… | grep -v seed),并在把日志粘贴到任何地方之前先检查一遍。
31运维人员安全须知
- 助记词文件就是钱包。
seed.txt和seed.enc既是身份,也是可花费的 Minima 钱包。切勿把它们打印到日志、工单、聊天或截图中。切勿把它们复制到不需要它们的机器上。新的助记词只通过 SSH 读取一次,并离线保存。 - 一个助记词,永远只在一台主机上。同一身份的两个运行副本迟早会重复使用一次性签名密钥。要迁移账户,请在新主机上恢复其备份包,并永久停止旧主机。
- 运维人员可以读取主机存储的内容。始终在线的账户必须把密钥保存在内存中,才能代表其所有者行事。静态加密(
seed.enc)保护的是磁盘镜像和备份,防不了运行进程的人。请告诉你的访客这一点;指南页面中也有说明。 - 内置聊天托管把访客助记词存储为私有文件(权限 0600,明文),位于所有者的
hosted-chat/文件夹下。请使用电脑的磁盘加密来防范磁盘被盗。管理员密码不会加密访客账户。 - 解锁口令位于
/etc/parlons-tenants.env,仅 root 可读。请把它与数据分开备份:丢失它会导致所有seed.enc无法读取;把它和数据备份一起泄露则会让加密失去作用。 - 邀请在使用前就是账户的钥匙。
pair-code.txt和invite.txt能让第一个使用它们的人配对一台设备。请私下发送邀请,及时完成配对;如果邀请可能已泄露,请生成新的配对码(会替换旧的),或撤销使用了它的设备。 - 管理员密码只保护所有者邀请。任何拥有该机器完整 SSH 访问权限或所有者终端访问权限的人,仍然可以控制服务器。
- 面板票据会以该账户本地设备的身份授予一个浏览器会话。请对
panel-ticket.txt保密,不要暴露面板端口。 - 加固的单元。部署脚本以无特权的
maxima用户运行主机,并启用NoNewPrivileges、不授予任何 capability、系统调用允许列表、ProtectSystem=strict、私有/tmp、UMask=0077、屏蔽云元数据地址范围,以及内存上限。如果你自己编写单元,请保留这些设置。 - 切勿截断标识符:在你为这些主机构建或传递的任何东西中,地址、密钥、配对码和交易 ID 都必须完整显示、完整复制。
32运维人员故障排除
| 症状 | 原因和解决方法 |
|---|---|
| 安装程序:not up after 90 s | 会显示最后几行日志。通常是 Java 没有装上或没有网络。解决后再次运行安装程序;不会丢失任何东西。 |
| 安装程序:Could not reach GitHub to find the release | 稍后再试,或从 https://github.com/eurobuddha/maxima/releases 把 jar 下载到 ~/.parlons/bin,然后再次运行安装程序。 |
| ERROR: relay port 9501 is already in use | 另一个中继或 Parlons Node 占用了它。用 --relay-port 选择一个空闲端口,或以 --no-relay 运行。使用一行命令安装程序时,请不带 --relay 安装。 |
| web panel could NOT start on 127.0.0.1:9587 | 有别的程序(通常是 Parlons Node)占用了该端口。用 --panel-port 指定一个空闲端口(节点机器上用 9597),或使用 --no-panel。没有面板,账户也能正常工作。 |
| \<name\>: seed.enc needs --unlock | 用 --unlock env(并设置 PARLONS_UNLOCK)或 --unlock prompt 启动主机。 |
| --unlock env: PARLONS_UNLOCK is not set | 单元的 EnvironmentFile=/etc/parlons-tenants.env 缺失或为空。请从备份中恢复。 |
| --unlock prompt needs an interactive console (use --unlock env under systemd) | 正如提示所说。 |
| no invite after 60 s - is the host running? | 运行 systemctl status parlons-tenants。主机每五秒轮询一次目录。 |
| Hosted-account service is offline. Ask the server operator to start it. | 租户主机没有运行,或在过去 90 秒内没有写入心跳。启动 parlons-tenants。 |
| Wait until this account is running before creating an invite / Account is connecting. Refresh in a few seconds. | 租户尚未连接。请等待,然后刷新。 |
| Hosted account is paused; resume it before issuing an invite | 删除它的 .stop 文件。 |
| Hosting limit reached (10 accounts) | 已暂停的账户也计算在内。把一个不用的文件夹移出去,或调高 -Dparlons.hosted.limit。 |
| Set your admin password before enabling hosting | 先设置管理员密码(第 23 节)。 |
| Enable hosting before managing guest accounts | 内置托管已关闭;请启用它(第 11 节)。 |
| Guest hosting is unavailable. Check the data folder permissions and that another host is not using it. | 所有者的 hosted-chat/ 文件夹不可写、是一个符号链接,或另一个进程持有它的锁。 |
parlons newcode 显示 Admin password required for an owner-account invitation | 该命令没有可用于询问的控制台(例如从脚本运行)。请在交互式终端中运行 parlons newcode,并在 Admin password: 处输入密码。或者从应用或面板生成邀请,或进行无配对码的配对并批准。 |
| 手机上显示 此账户的主机版本过旧,无法发送 MxUSD — 请更新(…) | 账户的主机无法证明它支持该代币 ID。请将其更新到 Parlons Cloud 0.11.121 或更高版本(当前为 0.11.124)、Parlons Node 0.2.135 或更高版本,或 minimaCore Desktop 0.18.21 或更高版本。 |
parlons-pair 显示 Incorrect admin password | 两秒后重试。要在 Parlons Node 上更改忘记的密码,请在本地使用 sudo parlons-pair --set-admin-password。 |
| 恢复:wrong passphrase (or a damaged backup file) | 检查口令。 |
| 恢复:因为身份已存在而拒绝 | --restore 和 --import-seed 从不覆盖。请先把旧数据移走,或使用全新目录。 |
| 手机能连接,但配对时好时坏(中继主机) | 云控制台防火墙阻挡了中继端口。请在那里也允许它。 |
| 把恢复的文件夹移进去之后,租户得到了一个新身份 | 该文件夹在写入 seed.txt 之前就被发现了。停止它(.stop),然后通过临时文件夹重新恢复(第 22 节)。在确认没有人与那个意外身份配对之前,请把它的文件夹另行保留。 |
分步解决方法
中继端口 9501 已被占用
- 找出是什么占用了它:
sudo ss -ltnp | grep ':9501' - 如果是 Parlons Node 或另一个中继,就保留它。改为让这个账户不运行自己的中继:对于一行命令安装程序,运行
parlons uninstall,然后带--no-relay重新安装。对于手写的单元,把--relay-port 9501改为--no-relay。 - 或者用
--relay-port <n>(使用deploy-parlons-cloud.sh时为--port <n>)为这个账户指定一个空闲端口,并改为开放该端口(第 28 节)。 - 重启服务并检查日志(第 30 节)。
网页面板无法启动
- 日志显示 web panel could NOT start on 127.0.0.1:<port>。找出是什么占用了该端口:
sudo ss -ltnp | grep ':9587' - 选择一个空闲的环回端口。在运行 Parlons Node 的机器上,使用 9597 或更高的端口。
- 在
deploy-parlons-cloud.sh主机上,编辑单元的ExecStart,加上--panel-port 9597(或加上--no-panel,不运行面板)。在租户主机上,单元已经带有--panel-port 9597;如果 9597 已被占用,请在那里选择另一个起始端口。systemctl edit --full parlons-cloud systemctl daemon-reload && systemctl restart parlons-cloud - 在此期间,没有面板,账户也能正常工作。
加密的助记词无法打开(seed.enc needs --unlock,或 PARLONS_UNLOCK is not set)
- 在不打印内容的情况下,检查解锁文件存在且不为空:
sudo test -s /etc/parlons-tenants.env && echo present - 如果文件缺失,从你的离线备份恢复到
/etc/parlons-tenants.env,所有者为 root,权限 600:sudo install -o root -g root -m 600 ./parlons-tenants.env.backup /etc/parlons-tenants.env - 检查单元带有
EnvironmentFile=/etc/parlons-tenants.env和--unlock env:systemctl cat parlons-tenants | grep -E 'EnvironmentFile|--unlock' - 重启:
systemctl restart parlons-tenants
没有原来的口令,加密的助记词就无法打开。请改为从该租户的备份包恢复(第 22 节)。
tenant-new 60 秒后仍没有邀请
- 检查主机是否正在运行:
systemctl status parlons-tenants - 如果它已停止,用
systemctl start parlons-tenants启动它。 - 在日志中检查该租户(
journalctl -u parlons-tenants | grep 'parlons-cloud/alice')。 - 再次运行
ops/tenant-new.sh root@your.box alice。它不会替换已有文件夹的身份。
托管账户服务离线
- 在机器上启动租户主机:
systemctl start parlons-tenants - 等几秒,让它写入心跳(租户目录中的
.host-status.json)。 - 在 Portal 中,打开节点 → 管理托管账户,然后点按刷新。
恢复后租户得到了新身份
- 暂停这个意外的租户:
touch /var/lib/parlons-tenants/alice/.stop - 把它的文件夹移出租户目录,在确认没有人与它配对之前另行保留。
- 通过临时文件夹重新恢复备份包,然后再移进去(第 22 节“从备份包恢复租户”)。
其他任何问题,请在项目的 GitHub 上提交 issue,写明版本、你期望的结果、实际发生的情况以及相关日志行(请先检查其中是否有任何机密信息)。
33术语表
| 术语 | 含义 |
|---|---|
| 账户 | 一个 Parlons 身份,连同它的联系人、聊天、已配对设备、设置以及(通常)钱包,由主机保持在线。 |
| 管理员配对密码 | 在具有该服务的主机上保护所有者邀请的本地密码。长度为 10 到 1024 个字符;只以验证值的形式存储。 |
地址(MAX# 形式) | 账户的永久地址。公开,长达几百个字符,永远不变。务必完整复制。 |
地址(Mx 密钥加 @host:port) | 较旧的形式:身份密钥加上当前承载它的中继。host:port 部分会变化。 |
| 内置托管 | 所有者账户中的仅聊天访客托管(Parlons Node、桌面节点应用、独立 parlons-cloud)。 |
备份包(.pbk) | 整个账户(身份、设备、设置、联系人、聊天)的加密备份,所有 Parlons 主机都能读取;手机应用可读取其中的身份和联系人。 |
| 仅聊天账号 | 只有聊天、通话和文件功能的访客账户。 |
| 设备 | 与账户配对的任何东西:手机、终端、主机的面板。可以撤销,而不会改变身份。 |
| 设备密钥 | 已配对设备自己的密钥。它不是账户的身份。 |
| 地址目录锚点 / MLS | 把永久地址解析到账户当前所在位置的定位服务。可以固定到某一个中继。 |
| 访客 | 在别人的主机上拥有托管账户的人。 |
| 主机 | 让一个或多个账户保持在线的机器和程序。也用来指账户所连接的中继。 |
| 热添加 | 租户主机在五秒内启动一个新租户文件夹,无需重启。 |
| 邀请 | 地址和一次性配对码合在一行,用 ?code= 连接。一个二维码即可配对一部手机。 |
| 本地设备 / 此计算机 | 主机自己的网页面板,作为账户的已配对设备运行。 |
| 邮箱 | 为离线者暂存的加密消息。 |
| 网状网络节点 | 与此账户的中继交换目录信息的其他中继。 |
| MxUSD | Minima 上与美元挂钩的代币,代币 ID 为 0x7D39745FBD29049BE29850B55A18BF550E4D442F930F86266E34193D89042A90。 |
| 发件箱 | 你自己尚未被主机接收的消息;会以逐渐拉长的间隔重试。 |
| 所有者 | 其账户运行这台机器并控制其托管功能的人。 |
| 所有者邀请 | 把设备配对到所有者账户并赋予完全控制权的邀请。 |
| 配对码 | 一次性代码,三组,每组四个字符,可让一台设备完成配对。 |
| 面板票据 | 让浏览器登录本地网页面板的一次性链接。 |
| Parlons Cloud | 主机程序(parlons-cloud.jar),也是 Android Portal 应用和 iPhone 配对功能的名称。 |
| Parlons Node | 内置中继、钱包网关和 Parlons 账户的完整 Minima 节点。可以从 Portal 配对。 |
| parlons-tenants | 运行 parlons-cloud --tenants 的 systemd 服务。 |
| 等待批准 | 在没有配对码的情况下请求配对、等待现有设备批准的设备。 |
| 公共中继 | 账户为网络承载流量而运行的中继。 |
| Portal | 本手册对 Parlons Cloud Android 应用的称呼。 |
| 助记词 / 24 个单词 | 既是身份又是 Minima 钱包的秘密短语。 |
| 签名密钥使用次数 | 钱包密钥已经使用过的一次性签名次数。只能调高。 |
| 单一持有者规则 | 一个身份同一时间只在一个地方运行。 |
| 租户 | 多账户主机中的一个账户文件夹。 |
| 解锁口令 | 用于解密租户 seed.enc 文件的口令(PARLONS_UNLOCK)。 |
| 只读钱包 | 查看某个密钥在别处的地址的钱包视图;可以显示余额,但永远无法付款。 |