Parlons!разговор без центра
РУС
English简体中文РусскийУкраїнська
Руководство

Руководство по Parlons Cloud Portal

Как пользоваться постоянно работающим аккаунтом с телефона и размещать аккаунты для себя и других.

Содержание
  1. 1. Для чего нужен Portal
  2. 2. Термины этого руководства
  3. 3. Установка приложения
  4. 4. Подключение приложения к аккаунту
  5. 5. Главный экран
  6. 6. Чаты
  7. 7. Контакты
  8. 8. Кошелёк
  9. 9. Узел
  10. 10. Добавление устройств: приглашения владельца
  11. 11. Размещение аккаунтов друзей: гостевые приглашения
  12. 12. Инструменты узла: Терминал IDE и панель управления
  13. 13. Справочник по настройкам
  14. 14. Уведомления, звонки и постоянное подключение
  15. 15. Аккаунт в других приложениях Parlons
  16. 16. Резервные копии, восстановление и перенос
  17. 17. Решение проблем для владельцев аккаунтов
  18. 18. Какой хост вам нужен?
  19. 19. Один аккаунт на своём компьютере: установщики одной командой
  20. 20. Один аккаунт на VPS: deploy-parlons-cloud.sh
  21. 21. Много аккаунтов: сервис parlons-tenants
  22. 22. Создание, приостановка и удаление гостевых аккаунтов
  23. 23. Приглашения владельца и гостей с сервера
  24. 24. Локальная веб-панель
  25. 25. Справочник по параметрам командной строки
  26. 26. Команда parlons
  27. 27. Файлы в каталоге данных
  28. 28. Порты, брандмауэры, TLS и обратные прокси
  29. 29. Обновление и откат
  30. 30. Журналы
  31. 31. Заметки о безопасности для операторов
  32. 32. Решение проблем для операторов
  33. 33. Глоссарий

Ваш аккаунт Parlons всегда в сети на компьютере, который никогда не выключается, а управляете вы им с телефона.

В этом руководстве описаны:

Обе программы можно скачать на странице релизов: https://github.com/eurobuddha/maxima/releases.

ПрограммаТег релизаФайл для скачивания
Portal (Android)portal-v0.2.90parlons-cloud-portal-0.2.90-release.apk
Parlons Cloud (хост)cloud-v0.11.124parlons-cloud-0.11.124.jar

SHA-256 файла parlons-cloud-0.11.124.jar:

0ae833429b641393f93b427695784b534e8a2a06a7194eba74e57aed4f19b231

Часть A предназначена для тех, кто пользуется аккаунтом через приложение Portal. Часть B — для тех, кто размещает аккаунты. Для каждой задачи приведена пошаговая инструкция. Надписи на экране выделены жирным. Команды для ввода даны в блоках кода.

Сопутствующие руководства: руководство Parlons! — о полном приложении Parlons!, и руководство Parlons Node — о Parlons Node (полном узле Minima со встроенным аккаунтом Parlons).


1Для чего нужен Portal

Аккаунт Parlons — это небольшая программа, которая держит вашу личность в сети. Она хранит ваши контакты и историю чатов, принимает сообщения, пока телефон выключен, и показывает одну и ту же переписку на всех подключённых устройствах. Для неё нужен компьютер, который всегда включён и имеет исходящий доступ в интернет.

Приложение Parlons Cloud для Android (в этом руководстве — Portal) — это окно в такой аккаунт. У него нет собственной личности для чатов. При подключении оно создаёт только собственный ключ устройства и дальше управляет аккаунтом через транспорт Parlons со сквозным шифрованием. Вот как об этом сказано на первом экране приложения:

Ваша личность, чаты и кошелёк находятся на постоянно работающем узле и доступны с любого устройства. Этот телефон подключается к нему как защищённый клиент. Без вашего одноразового кода никто другой подключиться не сможет, а доступ этого телефона можно отозвать в любой момент.

Кто им пользуется

На iPhone ту же работу выполняет приложение Parlons: оно подключается к тем же аккаунтам по тому же приглашению. Полное приложение Parlons! для Android устроено иначе: оно хранит личность на самом телефоне и к аккаунту не подключается (раздел 15).

Что такое аккаунт и что такое гостевой аккаунт (tenant)

ТерминЧто это
АккаунтОдна личность Parlons (24 слова) с контактами, чатами, подключёнными устройствами, настройками и обычно кошельком. Работает внутри parlons-cloud, Parlons Node или настольного приложения-узла.
Аккаунт владельцаАккаунт того, кто управляет компьютером. На Parlons Node это собственная личность узла.
Tenant (гостевой аккаунт)Один аккаунт на хосте с несколькими аккаунтами. Каждый tenant — это папка <dir>/<name>/ с той же структурой, что и у отдельного аккаунта. У каждого своя личность, устройства, контакты, чаты и резервная копия.
Размещённый аккаунт (гость)Обиходное название tenant, созданного для друга. Гости не имеют доступа к аккаунту владельца, терминалу Minima владельца и управлению хостингом.
Аккаунт только для общенияГость, созданный встроенным хостингом аккаунта владельца (Parlons Node, minimaCore Desktop, minimaDesk или отдельный parlons-cloud с включённым хостингом). В нём есть только чаты, звонки и файлы; кошелёк, терминал узла, размещение NFT и управление хостом отключены.

Что хост может и чего не может


2Термины этого руководства

Полный глоссарий — в конце (раздел 33). Несколько слов, которые нужны сразу:


Часть A. Работа с аккаунтом в приложении Portal

3Установка приложения

Как установить приложение

  1. На телефоне Android откройте https://github.com/eurobuddha/maxima/releases и найдите релиз с тегом portal-v0.2.90.
  2. Скачайте приложенный к нему APK: parlons-cloud-portal-0.2.90-release.apk.
  3. Откройте скачанный файл. Если Android попросит, разрешите браузеру или файловому менеджеру устанавливать приложения, затем нажмите Установить.
  4. Откройте Parlons Cloud. Первый экран называется Parlons в облаке. Чтобы подключить приложение, перейдите к разделу 4.

Приложению нужен Android 9 или новее. Разрешения оно запрашивает, когда они впервые понадобятся: камера (сканирование QR-кодов, видеозвонки, фото), микрофон (голосовые сообщения и звонки), уведомления и работа в фоновом режиме.

Как обновить приложение

  1. Скачайте новый parlons-cloud-portal-<version>-release.apk со страницы релизов.
  2. Откройте его и нажмите Установить. Android установит его поверх старой версии.
  3. Откройте Parlons Cloud. Подключение сохраняется, поэтому приложение сразу открывает ваш аккаунт.

Как удалить приложение

Приложение не использует облачное резервное копирование Android, поэтому при удалении ключ устройства этого телефона стирается. Сам аккаунт не затрагивается.

  1. На другом подключённом устройстве откройте Узел → Подключённые устройства и нажмите Отозвать рядом с этим телефоном (раздел 9).
  2. Удалите Parlons Cloud в настройках приложений Android.
  3. Чтобы позже снова пользоваться телефоном, установите приложение и подключите его с новым кодом (раздел 10).

4Подключение приложения к аккаунту

Вам нужно приглашение (или адрес и код подключения) из одного из этих мест:

Где работает ваш аккаунтОткуда взять приглашение
Ваш компьютер, установка одной командойВыводится в конце установки текстом и QR-кодом (раздел 19). Позже: parlons invite или parlons newcode на этом компьютере.
Ваш VPS, установка через deploy-parlons-cloud.shВыводится скриптом развёртывания (раздел 20).
Parlons Nodesudo parlons-pair --admin на сервере (раздел 23).
Размещённый аккаунтЕго даёт оператор хоста, или владелец показывает его через Показать приглашение (раздел 11).
Аккаунт, которым вы уже пользуетесь на другом устройствеНа том устройстве: Узел → Подключить другое моё устройство (раздел 10).

Как подключиться по приглашению

  1. Откройте Parlons Cloud. Первый экран называется Parlons в облаке.
  2. Сделайте одно из следующего:
    • Нажмите Сканировать QR-код подключения и наведите камеру на QR-код приглашения. Приложение заполнит оба поля и покажет Адрес и код подключения отсканированы.
    • Или вставьте приглашение целиком в поле Адрес аккаунта или приглашение. При нажатии Подключить устройство код будет перенесён в поле Код подключения.
    • Или вставьте в первое поле только адрес, а код (например, ABCD-EFGH-JKLM) введите в поле Код подключения.
  3. Нажмите Подключить устройство.
  4. В строке состояния появится Подключение к сети…, затем Аккаунт найден — подключение….
  5. Если код верный, приложение сразу откроет ваш аккаунт. Код после этого израсходован. Подтверждение с других устройств не требуется.

Приложение запоминает введённый адрес, так что после неудачной попытки вводить его заново не придётся.

Как подключиться без кода

Этот способ подходит, если у вас есть адрес, но нет кода. Тогда новое устройство должно одобрить другое, уже подключённое устройство.

  1. Вставьте полный адрес MAX# в поле Адрес аккаунта или приглашение.
  2. Оставьте поле Код подключения пустым.
  3. Нажмите Подключить устройство. Аккаунт поставит телефон в список ожидания. Приложение покажет:

    Запрос на подключение отправлен. Одобрите его с уже подключённого устройства, затем откройте приложение снова.

    и ключ этого устройства.

  4. На уже подключённом устройстве одобрите новый телефон одним из способов:
    • В Portal: Узел → Ожидают подтверждения, затем Разрешить рядом с ключом.
    • В терминале командой parlons:
      parlons approve <key>
    • В веб-панели: Устройства, затем Разрешить в разделе Ожидание разрешения.
  5. Вернитесь на новый телефон, снова откройте Parlons Cloud и ещё раз нажмите Подключить устройство.

Если подключиться не удалось

СообщениеЧто это значитЧто делать
Не удалось подключиться: … с текстом Аккаунт в сети? Адрес указан верно?Аккаунт остановлен, не имеет доступа в интернет или только что запустился.Проверьте, что адрес полный. Попросите того, кто управляет аккаунтом, проверить, что он работает (раздел 17). Повторите попытку.
Не удалось подключить устройство: …Код неверный, уже использован или заменён более новым.Получите новое приглашение и подключитесь снова.
Введите или отсканируйте адрес аккаунтаПоле адреса пустое.Вставьте или отсканируйте адрес.

Как прочитать заметку о настройке сервера

  1. На первом экране нажмите Впервые здесь? Настройте сервер аккаунта ▸. Откроется короткая заметка о запуске собственного сервера аккаунта. В ней показана команда развёртывания и где найти полное руководство (cloud/SETUP.md в репозитории).
  2. Нажмите на любой серый блок, чтобы скопировать его текст. Приложение покажет Скопировано.
  3. Нажмите Настройка сервера аккаунта ▾, чтобы снова свернуть заметку.

Часть B этого руководства описывает то же самое подробнее.

Как изменить язык приложения

  1. Откройте список языков:
    • На первом экране нажмите Изменить язык вверху.
    • После подключения откройте Ещё → Настройки и нажмите верхнюю кнопку с надписью English · 简体中文 · Русский · Українська.
  2. Выберите нужный язык. Список закроется, и приложение переключит язык. Выбор действует только на этом устройстве.

5Главный экран

После подключения приложение открывается на четырёх вкладках: Чаты, Контакты, Кошелёк и Узел. Переключайтесь между ними касанием или свайпом.

Верхняя панель

ПунктЧто делает
НастройкиОткрывает экран настроек (раздел 13).
Задать имя аккаунтаПереходит на вкладку «Узел» и предлагает ввести новое имя аккаунта.
Копировать адрес аккаунтаКопирует полный адрес MAX#.
Состояние узлаПереходит на вкладку «Узел».
Отключить это устройствоСпрашивает Отключить это устройство?, затем забывает аккаунт на этом телефоне.

Как искать в аккаунте

  1. Нажмите Поиск на верхней панели.
  2. Введите текст в поле Поиск сообщений…. Результаты появятся в разделах Контакты и группы и Сообщения. Совпадений нет. означает, что ничего не найдено.
  3. Нажмите на результат, чтобы открыть этот чат. Нажмите Назад, чтобы выйти из поиска.

Как сменить тему

  1. Нажмите Тема на верхней панели. Каждое нажатие переключает на следующий вариант: светлая, тёмная, системная.
  2. Короткое сообщение, например Тема: тёмная, подтвердит выбор.

Как скопировать адрес аккаунта

  1. Нажмите Ещё → Копировать адрес аккаунта.
  2. Приложение покажет Адрес аккаунта скопирован. В буфере обмена — полный адрес MAX#.

Как отключить этот телефон

  1. Нажмите Ещё → Отключить это устройство.
  2. В окне Отключить это устройство? поясняется, что телефон перестанет управлять вашим облачным аккаунтом.
  3. Нажмите Отключить. Приложение вернётся на первый экран.
  4. На другом подключённом устройстве отзовите запись этого телефона (раздел 9). Пока вы этого не сделаете, аккаунт по-прежнему считает его подключённым устройством.

Отключить это устройство только удаляет подключение на этом телефоне. Ваш аккаунт и его личность остаются на узле. Другие устройства продолжают работать, а этот телефон можно подключить снова с новым кодом.


6Чаты

На вкладке Чаты перечислены ваши переписки — сначала новые — с числом непрочитанных сообщений.

Пока чатов нет, на вкладке написано: Пока нет переписок. Добавьте собеседника на вкладке «Контакты» и напишите ему.

Как открыть или найти чат

  1. Откройте вкладку Чаты.
  2. Чтобы сузить список, введите часть имени в поле поиска вверху.
  3. Нажмите на чат, чтобы открыть его.

Как создать группу

Сначала нужен хотя бы один контакт. Иначе приложение скажет Сначала добавьте контакты — группе нужны участники.

  1. На вкладке Чаты нажмите кнопку Новая группа.
  2. Введите название в поле Название группы.
  3. Отметьте хотя бы одного участника.
  4. Нажмите Создать. Приложение покажет Группа создана, и группа появится в списке.

Если нажать Создать без названия или без участников, приложение скажет Введите название группы и выберите хотя бы одного участника.

Как отметить чат прочитанным или очистить его

  1. На вкладке Чаты нажмите на чат и удерживайте.
  2. Нажмите Отметить прочитанным (появляется, если есть непрочитанные сообщения). Приложение покажет Отмечено прочитанным.
  3. Или нажмите Очистить сообщения. Появится окно Очистить этот чат?. Нажмите Очистить для подтверждения. Приложение покажет Чат очищен.

Очистка удаляет сообщения только из вашего аккаунта. Она не отзывает отправленные сообщения и не выводит вас из группы. Отменить её нельзя.

Внутри чата

Подзаголовок гласит в вашем облачном аккаунте: сообщения хранятся в аккаунте, а этот экран лишь показывает их.

Как отправить сообщение

  1. Введите текст в поле сообщения внизу.
  2. Нажмите кнопку отправки (когда есть текст, на ней стрелка).

Как отправить голосовое сообщение

  1. Оставьте поле сообщения пустым. На кнопке отправки появится микрофон.
  2. Нажмите на микрофон. Откроется окно Голосовое сообщение с таймером и максимальной длительностью.
  3. Говорите.
  4. Нажмите Отправить, чтобы отправить запись, или Отмена, чтобы удалить её. Слишком коротко — запишите ещё немного означает, что запись слишком короткая.

Голосовое сообщение можно начать и через Прикрепить → Голосовое сообщение.

Как отправить фото или файл

  1. Нажмите Прикрепить.
  2. Выберите вариант:
    • Фототека: выберите фото. В окне Отправить фото можно нажать Добавьте подпись…. Нажмите Отправить.
    • Приватный файл: откроется выбор файлов Android. Выберите файл, чтобы отправить его в этот чат.
    • Передача файлов: откроется список передач файлов в этом чате.
  3. Чтобы сделать новый снимок, нажмите кнопку камеры рядом с полем сообщения.

Как позвонить контакту

  1. Откройте личный чат.
  2. Нажмите Голосовой звонок или Видеозвонок на верхней панели чата.
  3. Когда приложение впервые попросит, разрешите доступ к микрофону (и к камере для видео).
  4. Во время звонка используйте Выкл. микр., Динамик, Камера (переключение камеры) и Отбой.

Звонки возможны только один на один. Как ответить на звонок, описано в разделе 14.

Как посмотреть сведения о контакте или группе

  1. Нажмите кнопку информации на верхней панели чата.
  2. Для контакта окно показывает его программу, время последней активности, открытый ключ, адреса и адрес для платежей. Копировать ключ копирует ключ полностью.
  3. Для группы окно Группа показывает участников. Если вы администратор группы, нажмите Изменить состав, отметьте или снимите отметку с контактов и нажмите Сохранить. Приложение покажет Группа обновлена.

Действия с отдельным сообщением

  1. Нажмите на сообщение и удерживайте.
  2. Выберите действие:
    • Копировать сообщение (или Копировать подпись для фото, Копировать адрес контакта для отправленного адреса).
    • Сохранить фото или Поделиться фото для изображения. Сохранено в Фото подтверждает сохранение.
    • Копировать идентификатор транзакции для платежа.
    • Информация открывает Сведения о сообщении: когда оно отправлено и получено, его статус (Отправка…, Отправлено (принято ретранслятором), Доставлено, Прочитано, Не удалось отправить), а для платежей — идентификатор транзакции.

Галочки означают то же, что и во всех приложениях Parlons:

ЗначокЗначение
⋯в очереди, ещё не передано узлу
✓отправлено: узел принял сообщение
✓✓доставлено: устройство получателя подтвердило получение
✓✓ синимпрочитано
✗ошибка: ни один узел не принял сообщение; оно остаётся в исходящих

Как повторно отправить недоставленное сообщение

Если аккаунт не смог связаться с контактом ни по одному известному адресу, у неотправленного сообщения стоит ✗.

  1. Нажмите на это сообщение. Окно Сообщение не доставлено поясняет, что узел не смог связаться с контактом.
  2. Нажмите Подключиться снова (или Не сейчас, чтобы оставить как есть). Приложение покажет Повторное подключение… и запросит у каталога текущий адрес контакта.
  3. Найден новый адрес — скоро повторим отправку означает, что неотправленные сообщения будут отправлены автоматически. Адрес не изменился — возможно, собеседник не в сети означает, что контакт, вероятно, не в сети; сообщения ждут в исходящих.

Оплата контакту в чате

  1. В личном чате нажмите Прикрепить → Отправить платёж. В окне Отправить платёж: имя написано Оплата из кошелька вашего облачного аккаунта.
  2. Выберите Minima или MxUSD. MxUSD — токен Minima, привязанный к доллару, ID токена 0x7D39745FBD29049BE29850B55A18BF550E4D442F930F86266E34193D89042A90.
  3. Введите сумму (поле называется Сумма (MINIMA) или Сумма (MxUSD)) и при желании Примечание (необязательно).
  4. Нажмите Отправить. Приложение покажет Создание платежа на вашем узле….

Платёж создаётся и подписывается на компьютере, где работает ваш аккаунт, а не на телефоне. Аккаунты только для общения платить не могут (раздел 8).

Если у платежа отображается ⚠ не подтверждено — проверьте баланс перед повторной оплатой, проверьте вкладку «Кошелёк», прежде чем отправлять его второй раз.

Для MxUSD нужен актуальный хост. Перед платежом в MxUSD Portal 0.2.90 спрашивает у хоста аккаунта, учитывает ли тот ID токена. Хост, который не может это подтвердить, проигнорировал бы токен и заплатил бы ту же сумму в MINIMA, поэтому приложение отказывается отправлять платёж и показывает:

Не удалось отправить платёж: Хост этого аккаунта слишком старый для отправки MxUSD — обновите его (Parlons Node 0.2.135+, Parlons Cloud 0.11.121+, minimaCore Desktop 0.18.21+)

Ничего не отправляется. Попросите того, кто управляет хостом, обновить его до одной из указанных версий, и повторите попытку. На платежи в Minima это не влияет.


7Контакты

Вкладка Контакты состоит из трёх частей.

Адрес вашего аккаунта. Полный адрес MAX# с кнопками Копировать, Показать QR-код и Поделиться адресом. Поделитесь этим адресом, чтобы с вами могли связаться. Он одинаков на всех ваших устройствах. Пока аккаунт подключается, вместо адреса отображается (определение адреса…).

Ваши контакты. Заголовок Контакты · N, над списком — Поиск контактов. Нажмите на контакт, чтобы увидеть сведения: Программа, Последняя активность (или Сейчас в сети), Открытый ключ, его Адреса и Адрес для платежей (MINIMA), если контакт его опубликовал. Оттуда:

Добавление контакта. Поле и кнопка Сканировать QR-код в разделе Добавление контакта.

Как поделиться своим адресом

  1. Откройте Контакты.
  2. В разделе Адрес вашего аккаунта нажмите одну из кнопок:
    • Копировать: приложение покажет Адрес скопирован. Вставьте его в сообщение человеку.
    • Показать QR-код: дайте человеку отсканировать QR-код с вашего экрана.
    • Поделиться адресом: откроется меню «Поделиться» Android. Выберите приложение для отправки.

Как добавить контакт

  1. Откройте Контакты и прокрутите до раздела Добавление контакта.
  2. Внесите адрес человека в поле одним из способов:
    • Вставьте полный адрес. Он начинается с MAX# либо начинается с Mx и заканчивается на @host:port.
    • Нажмите Сканировать QR-код и наведите камеру на QR-код его адреса.
  3. Нажмите Добавить. Приложение покажет Добавление…, затем Контакт добавлен.

Добавление контакта — это взаимное представление: ваш аккаунт представляется по адресу человека, а тот отвечает своим адресом. Если добавить не удалось, приложение покажет Не удалось добавить: … с причиной, например аккаунт сейчас недоступен — проверьте, в сети ли собеседник, или снова отсканируйте его адрес. Если введённый текст вообще не адрес, появится Это не похоже на адрес Parlons — он должен начинаться с Mx… или MAX#….

Как переименовать контакт

  1. Откройте Контакты и нажмите на контакт.
  2. Нажмите Ещё → Переименовать.
  3. В окне Переименовать контакт введите новое имя в поле Имя контакта.
  4. Нажмите Переименовать. Приложение покажет Имя изменено. Имя хранится только в вашем аккаунте.

Как заново подключиться к контакту

  1. Откройте Контакты и нажмите на контакт.
  2. Нажмите Ещё → Переподключиться. Приложение покажет повторное подключение….
  3. Найден новый адрес — подключение восстановлено означает, что найден новый адрес контакта. Адрес не изменился — возможно, собеседник не в сети означает, что ничего не изменилось.

Как удалить контакт

  1. Откройте Контакты и нажмите на контакт.
  2. Нажмите Ещё → Удалить контакт.
  3. Окно спросит Удалить имя? и пояснит: У собеседника останется ваш адрес, и он сможет вам писать. Вы удалите его только из своего списка.
  4. Нажмите Удалить. Приложение покажет Удалено.

8Кошелёк

Содержимое вкладки Кошелёк зависит от того, к какому аккаунту вы подключены.

Аккаунт только для общения

На вкладке написано Аккаунт только для общения: Этот аккаунт поддерживает чат, звонки и файлы. Кошелёк и управление хостом отключены. Больше здесь ничего нет.

Аккаунт Parlons Cloud (собственный сервер или tenant на хосте parlons-tenants)

У аккаунта собственный кошелёк. Его ключи получаются из сид-фразы аккаунта и хранятся на компьютере, где работает аккаунт. Подписание тоже происходит там.

Что показывает вкладка:

Как получить средства

  1. Откройте Кошелёк.
  2. В разделе Адрес получения нажмите Копировать (приложение покажет Адрес скопирован) или Показать QR-код.
  3. Передайте отправителю полный адрес или дайте ему отсканировать QR-код.

Как скопировать ID токена

  1. Откройте Кошелёк и найдите токен в разделе Токены.
  2. Нажмите на него. Приложение покажет ID токена скопирован. В буфере обмена — полный ID токена.

Как отправить Minima или MxUSD

  1. Откройте Кошелёк и нажмите Отправить.
  2. Введите получателя в поле Адрес Mx… или 0x… или нажмите Сканировать QR-код.
  3. Выберите Minima или MxUSD.
  4. Введите сумму (Сумма (MINIMA) или Сумма (MxUSD)) и нажмите Продолжить.
  5. Прочитайте подтверждение Отправить сумма токен?. В нём показан полный адрес и написано Будет подписана и отправлена в сеть настоящая транзакция. Отменить её нельзя.
  6. Нажмите Подписать и отправить. В строке состояния появится Подписание на вашем узле…, затем Отправка в сеть через …, затем Отправлено.

Если отправка не удалась, приложение покажет Не удалось отправить: … с причиной. Для MxUSD на хосте, который не может подтвердить поддержку ID токена, причина такая: Хост этого аккаунта слишком старый для отправки MxUSD — обновите его (Parlons Node 0.2.135+, Parlons Cloud 0.11.121+, minimaCore Desktop 0.18.21+). Ничего не отправляется; попросите оператора хоста обновить его (раздел 6).

Как посмотреть прошлый платёж

  1. Откройте Кошелёк и прокрутите до раздела История. В нём перечислены платежи, которые этот телефон видел, пока был подключён (отправленные и полученные), сначала новые.
  2. Нажмите на платёж. Окно покажет сумму, другую сторону, время, примечание и идентификатор транзакции.
  3. Нажмите Копировать ID транзакции, чтобы скопировать полный идентификатор транзакции.

Как задать счётчик использованных подписей

Делайте это, только если этой сид-фразой подписывались транзакции на другом устройстве. Счётчик можно только повышать. Слишком низкое значение грозит повторным использованием одноразового ключа и его раскрытием.

  1. Откройте Кошелёк и в разделе Ключ подписи нажмите Указать число использованных подписей….
  2. Введите новое значение в поле Новое число использованных подписей (> текущее) и нажмите Продолжить.
  3. Прочитайте Повысить до N?. Там предупреждается, что это нельзя отменить.
  4. Нажмите Повысить счётчик. Приложение покажет Обновление счётчика…, затем Счётчик повышен.

Как перенести кошелёк на этот телефон

Перенести кошелёк на этот телефон… переводит все доступные средства в кошелёк, сид-фраза которого хранится на этом телефоне, в приложении Minima Core. Ваша облачная личность остаётся. Сервер продолжает наблюдать за новым адресом в режиме только для чтения.

  1. Сначала установите Minima Core: Ещё → Настройки → Minima Core на этом телефоне → Установить Minima Core. Без него приложение покажет Нужен Minima Core.
  2. В Minima Core откройте «Кошелёк» → «Получить» и скопируйте свой адрес.
  3. В Parlons Cloud откройте Кошелёк и нажмите Перенести кошелёк на этот телефон….
  4. Вставьте адрес в поле Адрес Mx… из Minima Core и нажмите Продолжить.
  5. Прочитайте Перевести все сумма MINIMA?. Там показан полный адрес и сказано, что облако затем будет наблюдать за ним в режиме только для чтения.
  6. Нажмите Перевести всё и отделить кошелёк. Все доступные средства уйдут на этот адрес одной транзакцией.

Если приложение пишет Сейчас нет доступных для отправки средств — синхронизируйте или дождитесь подтверждений, подождите и повторите попытку.

Аккаунт Parlons Node

Кошелёк аккаунта — это собственный кошелёк Minima узла.

Как открыть полный кошелёк узла

  1. Откройте Кошелёк.
  2. Нажмите Открыть кошелёк. Откроется полный кошелёк со своими вкладками для балансов, отправки, получения, монет, истории и создания токенов.

Как перевести кошелёк узла на новую фразу

Используйте это, когда ключи подписи узла израсходованы или вам нужна новая сид-фраза. Личность, подключённые устройства и контакты сохраняются. Средства на старой фразе остаются за старой фразой, поэтому сначала переведите их.

  1. Откройте Кошелёк и нажмите Сменить фразу кошелька….
  2. Введите новую фразу в поле 24 слова через пробел. Если слов не 24, появится Должно быть 24 слова.
  3. Нажмите Сменить фразу. Приложение покажет Смена фразы начата — узел перезапустится примерно через минуту; аккаунт прежний, адрес кошелька новый.
  4. Подождите около минуты. Приложение переподключится само.

Если позже на вкладке появится Последняя смена фразы НЕ выполнена — кошелёк не изменён, за этим следует причина. Используется прежний кошелёк.

Адрес только для наблюдения

Если у аккаунта нет собственного адреса кошелька, вкладка предлагает Кошелёк для наблюдения. Ключи для расходования средств остаются на устройстве; узел может только наблюдать.

  1. Откройте Кошелёк.
  2. Введите адрес Mx… в поле Адрес получения Mx….
  3. Нажмите Указать адрес для наблюдения. Приложение покажет Сохранение…, затем Адрес для наблюдения сохранён.
  4. Теперь вкладка показывает баланс этого адреса в режиме только для чтения.

9Узел

Вкладка Узел — пульт управления аккаунтом. Чтобы обновить её, потяните вниз или снова откройте вкладку.

Сверху вниз:

  1. Ваше имя. Как вы выглядите в списках ваших контактов на всех устройствах. Нажмите Изменить, введите новое имя (например, eurobuddha) и сохраните. Имя видно вашим контактам. Изменение будет сразу отправлено всем контактам.
  2. Состояние. Всегда включён — в сети (или Узел недоступен) с полями Время работы, Подключённые ретрансляторы и Почтовый ящик сохранён. На старом хосте карточка показывает Обновите узел до parlons-cloud 0.4.1 или новее для просмотра полного состояния.
  3. Преимущества узла на VPS. Напоминание о том, что аккаунт делает для вас: Всегда включён, Один аккаунт на всех устройствах и является ли он ретранслятором (Ваш узел — ретранслятор с числом участников сети или Ретранслятор выключен).
  4. Постоянный адрес. Адрес, который не меняется: по нему вы доступны на любом устройстве. Кнопки Копировать и Показать QR-код.
  5. Размещённые аккаунты (только если этот аккаунт управляет хостом): Управление размещёнными аккаунтами (раздел 11).
  6. Инструменты узла и Соединения и узлы (только если хост предоставляет консоль узла, как Parlons Node): Открыть терминал и IDE и Открыть панель управления (раздел 12).
  7. Подключённые устройства (N). Все устройства, которые могут управлять аккаунтом. Этот телефон помечен это устройство, остальные — подключено. Нажмите Отозвать, чтобы отключить устройство. Оно потеряет доступ к вашему аккаунту. Ваша личность не изменится, другие устройства продолжат работать. Это нельзя отменить: для повторного подключения понадобится новый код. Собственная веб-панель хоста тоже показана здесь как локальное устройство; если отозвать её, доступ к панели будет закрыт.
  8. Ожидают подтверждения (N). Устройства, запросившие подключение без кода (Устройство запрашивает подключение). Нажимайте Разрешить, только если узнаёте ключ.
  9. Подключить другое моё устройство (раздел 10) с напоминанием о том, что означает подключение устройства.

Если аккаунт не отвечает, вкладка показывает Не удалось подключиться к узлу. и причину.

Как задать имя аккаунта

  1. Откройте Узел или нажмите Ещё → Задать имя аккаунта.
  2. В разделе Ваше имя нажмите Изменить.
  3. Введите новое имя (например, eurobuddha). В окне написано Имя видно вашим контактам. Изменение будет сразу отправлено всем контактам.
  4. Нажмите Задать. Приложение покажет Имя задано — отправка обновления контактам….

Как скопировать или показать постоянный адрес

  1. Откройте Узел и найдите Постоянный адрес.
  2. Нажмите Копировать, чтобы скопировать полный адрес MAX#, или Показать QR-код, чтобы показать его в виде QR-кода.

Как отозвать подключённое устройство

  1. Откройте Узел и прокрутите до Подключённые устройства (N).
  2. Найдите устройство. Этот телефон помечен это устройство.
  3. Нажмите Отозвать.
  4. Прочитайте Отозвать доступ устройства? и нажмите Отозвать. Приложение покажет Доступ отозван.

Устройство сразу теряет доступ. Ваша личность не меняется, и другие устройства продолжают работать. Чтобы вернуться, устройству нужен новый код. Если отозвать собственную веб-панель хоста, доступ к панели будет закрыт (раздел 24).

Как одобрить устройство, запросившее подключение

  1. Откройте Узел и прокрутите до Ожидают подтверждения (N). Каждая запись выглядит как Устройство запрашивает подключение с ключом.
  2. Сравните ключ с тем, что показывает новое устройство (раздел 4, «Как подключиться без кода»).
  3. Нажимайте Разрешить, только если ключи совпадают. Приложение покажет Одобрено.

10Добавление устройств: приглашения владельца

Подключённое устройство получает полный контроль над этим аккаунтом: его чатами, контактами и кошельком, если он есть. Отправляйте приглашение только тому, кто должен управлять этим аккаунтом. Чтобы пригласить друга, создайте для него отдельный размещённый аккаунт (раздел 11).

Из Portal

  1. Откройте Узел и нажмите Подключить другое моё устройство.
  2. Дальнейшее зависит от хоста:
    • Хосты без сервиса пароля администратора (tenant на хосте parlons-tenants или гостевой аккаунт): новый код создаётся сразу.
    • Хосты с сервисом пароля администратора (отдельный аккаунт parlons-cloud, Parlons Node 0.2.118 или новее и настольные приложения-узлы): приложение показывает окно Пригласить устройство. Введите пароль администратора, чтобы дать другому устройству доступ к этому аккаунту владельца и терминалу Minima. Оставьте поле пустым, чтобы создать отдельный размещённый аккаунт для друга.
      • Введите пароль администратора и нажмите Продолжить, чтобы создать приглашение владельца.
      • Оставьте поле пустым и нажмите Продолжить, чтобы вместо этого открыть управление размещёнными аккаунтами (или, если хостинг не настроен, появится Размещение на этом сервере ещё не включено).
  3. Приложение покажет Создан новый код подключения с одноразовым кодом и полным приглашением. Нажмите Копировать приглашение или QR, чтобы показать его QR-кодом для сканирования новым устройством.

Пароль проверяется на сервере и никогда не сохраняется на телефоне. При неверном пароле код не выдаётся. После неудачной попытки подождите пару секунд, прежде чем пробовать снова (Подождите несколько секунд, прежде чем снова вводить пароль администратора). Если пароль администратора ещё не задан, сервер ответит Задайте пароль администратора на странице «Устройства» Parlons в приложении хоста. Для сервера с командной строкой используйте: sudo parlons-pair --set-admin-password (в разделе 23 описано, как задать его на каждом типе хоста).

Без пароля администратора: одобрение

Устройство всегда можно добавить без кода. Для одобрения пароль администратора не нужен.

  1. На новом устройстве выполните подключение с пустым полем Код подключения (раздел 4, «Как подключиться без кода»).
  2. На уже подключённом устройстве откройте Узел → Ожидают подтверждения (N).
  3. Нажмите Разрешить рядом с ключом нового устройства.
  4. На новом устройстве снова нажмите Подключить устройство.

С сервера

См. раздел 23: sudo parlons-pair --admin на Parlons Node, parlons newcode на аккаунте, установленном одной командой, или Устройства → Новый код подключения в веб-панели на любом хосте с панелью.

Как отключить потерянный или заменённый телефон

Отзыв доступа никак не меняет вашу личность.

  1. На любом другом подключённом устройстве откройте Узел → Подключённые устройства (N).
  2. Найдите потерянный телефон и нажмите Отозвать, затем ещё раз Отозвать для подтверждения.

Или в терминале с командой parlons:

  1. Выведите список устройств с полными ключами:
    parlons devices
  2. Отзовите доступ потерянного телефона по его полному ключу:
    parlons revoke <key>

11Размещение аккаунтов друзей: гостевые приглашения

Если ваш аккаунт управляет хостом, на вкладке «Узел» есть карточка Размещённые аккаунты: Размещайте аккаунты друзей на этом сервере. У каждого будет свой аккаунт и приглашение без доступа к вашему аккаунту или терминалу Minima. Так владелец создаёт аккаунты для тех, кто не будет запускать свой сервер.

Здесь встречаются два вида хостов:

ХостЧто получают гостиКто настраивает
Встроенный хостинг чатов в Parlons Node, minimaCore Desktop, minimaDesk или отдельном аккаунте parlons-cloudАккаунты только для общения: чаты, звонки и файлы. Без кошелька, терминала и управления хостом. До десяти аккаунтов.Владелец включает его в приложении или в панели хоста.
Сервис parlons-tenants, подключённый к Parlons Node (--manage-from-node, раздел 21)Полноценные гостевые аккаунты (tenant) со своими чатами и кошельками. Управлять аккаунтом владельца или узлом они не могут.Его устанавливает оператор сервера.

Как разместить аккаунт друга

  1. Откройте Узел → Управление размещёнными аккаунтами. Появится список с заголовком Размещённые аккаунты (N/лимит) или Сервис размещения недоступен.
  2. Только для встроенного хостинга: в первый раз нажмите Настройки размещения → Включить хостинг. Окно Включить размещение? поясняет: Ваш компьютер будет хранить ключи и сообщения гостевых аккаунтов и должен оставаться включённым. Сначала задайте пароль администратора на странице устройств Parlons в приложении хоста. Нажмите Включить. Хостинг нельзя включить, пока не задан пароль администратора (раздел 23). Через несколько секунд нажмите Обновить (Хостинг запускается. Обновите через несколько секунд.).
  3. Нажмите Создать аккаунт. В разделе Разместить аккаунт друга введите имя аккаунта (например, alice) и нажмите Создать. Имя — от 1 до 64 символов: буквы, цифры, точки, подчёркивания или дефисы, начинается с буквы или цифры.
  4. Нажимайте Обновить, пока у аккаунта не появится состояние работает. Состояние меняется с запуск на работает (или повторная попытка, если запустить не удалось).
  5. Нажмите на аккаунт, затем Показать приглашение. Окно Приглашение для имя показывает полное приглашение. Это приглашение подключает устройство к аккаунту имя. До использования храните его в тайне. Нажмите Копировать приглашение и отправьте его лично или дайте отсканировать.
  6. Друг устанавливает Parlons Cloud (Android) или Parlons (iPhone), сканирует или вставляет приглашение и нажимает Подключить устройство. Действующий код подключает сразу. Приглашение друга не даёт доступа к вашему аккаунту.

Как приостановить или возобновить размещённый аккаунт

  1. Откройте Узел → Управление размещёнными аккаунтами.
  2. Нажмите на аккаунт.
  3. Нажмите Приостановить работу аккаунта. Окно Приостановить работу имя? сообщает: Аккаунт отключится от сети. Его личность и чаты сохранятся. Нажмите Приостановить.
  4. Чтобы вернуть его, нажмите на аккаунт, затем Возобновить работу аккаунта. Окно Возобновить работу имя? сообщает: Аккаунт снова подключится на этом сервере. Нажмите Возобновить.
  5. Нажмите Обновить, чтобы увидеть новое состояние.

Как остановить встроенный хостинг

  1. Откройте Узел → Управление размещёнными аккаунтами.
  2. Нажмите Настройки размещения → Остановить хостинг.
  3. Окно Остановить размещение? сообщает: Все гостевые аккаунты отключатся от сети. Их личности и чаты сохранятся. Нажмите Остановить.

Чтобы снова запустить его, выполните шаг 2 из раздела «Как разместить аккаунт друга».

Приостановленные аккаунты тоже учитываются в лимите. Когда он достигнут, создать ещё один не получится — появится Hosting limit reached (10 accounts) (или другой лимит, установленный на хосте).

Гость может управлять своим аккаунтом и подключать свои другие устройства. Он также может в любой момент создать резервную копию всего аккаунта и перейти на другой хост (раздел 16).


12Инструменты узла: Терминал IDE и панель управления

Эти две карточки появляются, только если аккаунт работает на хосте с консолью узла, то есть на Parlons Node. У обычного аккаунта parlons-cloud их нет; ретрансляторами и каталогом такого аккаунта управляйте через его веб-панель или команду parlons (разделы 24 и 26).

Открыть терминал и IDE

Полная командная строка Minima вашего узла, IDE для скриптов KISS и инструменты ручного создания транзакций. Каждая команда выполняется на узле через этот сопряжённый канал; весь вывод доступен для копирования. На экране Терминал IDE четыре вкладки: Терминал, Скрипты, Транзакции и Журнал. Каждая команда записывается в журнал узла как выполненная подключённым устройством. Команда quit отклоняется; перезапускайте узел с сервера.

Как выполнить команду Minima на узле

  1. Откройте Узел и в разделе Инструменты узла нажмите Открыть терминал и IDE.
  2. На вкладке Терминал введите команду в поле команда…, например:
    balance
  3. Нажмите Выполнить. Полный вывод появится выше.
  4. Кнопками Предыдущая команда и Следующая команда можно листать выполненные команды. Удерживайте кнопку избранного, чтобы сохранить команду.
  5. Чтобы сохранить вывод, откройте меню и выберите Копировать весь вывод, Выбрать и скопировать вывод или Экспорт сеанса…. Очистить терминал очищает экран.

Как читать журнал узла

  1. В Терминал IDE откройте вкладку Журнал.
  2. Прокручивайте журнал. Он считывается с вашего узла через подключённый канал.

Открыть панель управления

Узлы, доступность, статистика ретранслятора, MLS, расположение и журнал событий — средства управления VPS. На экране Панель управления узлом есть:

Как добавить ретранслятор в аккаунт

  1. Откройте Узел → Открыть панель управления.
  2. В разделе Узлы введите host:port (например, relay.example.com:9501) или вставьте текст QR-кода ретранслятора.
  3. Нажмите Добавить и подключиться. Приложение покажет Подключение…, и ретранслятор появится в списке.

Как отключить ретранслятор

  1. Откройте Узел → Открыть панель управления.
  2. В разделе Узлы нажмите Отключить рядом с ретранслятором. Приложение покажет Отключение….

Как включить или выключить встроенный список ретрансляторов

  1. Откройте Узел → Открыть панель управления.
  2. В разделе Узлы переключите Аккаунт использует встроенный список ретрансляторов. Чтобы выключить его, сначала добавьте собственный ретранслятор.

Как закрепить постоянный адрес

  1. Откройте Узел → Открыть панель управления и найдите Местоположение (MLS).
  2. Нажмите Закрепить адрес (или Закрепить заново, если он уже закреплён). Приложение покажет Постоянный адрес закреплён.
  3. Копировать постоянный адрес копирует полный адрес.
  4. Чтобы отменить, нажмите Открепить. Чтобы сразу заново опубликовать запись в каталоге, нажмите Опубликовать заново.

Как читать и очищать журнал событий

  1. Откройте Узел → Открыть панель управления и прокрутите до Журнал событий.
  2. Нажмите Обновить, чтобы увидеть новые строки, или Очистить, чтобы очистить журнал.

13Справочник по настройкам

Откройте Ещё → Настройки.

РазделПунктЧто делает
(вверху)Изменить языкВыбирает язык приложения на этом устройстве.
Ваш аккаунтОтправлять отчёты о прочтенииПоказывать контактам, что вы прочитали их сообщения. Настройка хранится на узле и действует на всех устройствах.
Конфиденциальность и безопасностьБлокировка приложенияТребовать отпечаток пальца или PIN-код устройства для входа в Parlons Cloud. Сначала в Android нужно настроить отпечаток пальца или блокировку экрана.
Разрешить демонстрацию экранаПо умолчанию включено. Выключите, чтобы скрыть заблокированное приложение на снимках и записях экрана.
УведомленияЗвук сообщенийВоспроизводить звук Parlons для новых сообщений. При выключении уведомления и вибрация сохраняются, но звука нет.
Настройки входящих звонковОткрывает настройки Android для мелодии, вибрации и полноэкранных оповещений на заблокированном экране.
Ключи и резервные копииПоказать сид-фразуПоказывает 24 слова аккаунта (раздел 16).
Создать резервную копию аккаунта…Записывает зашифрованную резервную копию всего аккаунта в выбранный вами файл (раздел 16).
Импортировать личность или резервную копию…Заменяет аккаунт на сервере другой личностью (раздел 16; только Parlons Node 0.2.117 или новее).
Minima Core на этом телефонеОткрыть Minima Core / Установить Minima CoreMinima Core запускает на телефоне полный узел Minima. Это место для кошелька, независимого от вашей облачной личности; он нужен для функции Перенести кошелёк на этот телефон….
Это устройствоНачальные ретрансляторы телефонаГде этот телефон сначала ищет ваш аккаунт (см. ниже).
Настройки уведомленийОткрывает настройки уведомлений Android для приложения.
Работать в фоновом режимеПросит Android не применять к приложению оптимизацию батареи. Показывается, только пока исключение ещё не задано.
О приложенииВерсия PortalУстановленная версия.
Адрес аккаунтаАдрес вашего аккаунта (можно делиться — он не меняется) полностью.

Как включить или выключить отчёты о прочтении

  1. Откройте Ещё → Настройки.
  2. В разделе Ваш аккаунт переключите Отправлять отчёты о прочтении. Настройка хранится в аккаунте, поэтому действует на всех устройствах.

Как заблокировать приложение

  1. Сначала настройте отпечаток пальца или блокировку экрана в настройках Android. Иначе приложение скажет Сначала настройте отпечаток пальца или блокировку экрана в настройках телефона.
  2. Откройте Ещё → Настройки.
  3. В разделе Конфиденциальность и безопасность включите Блокировка приложения.
  4. Теперь при открытии приложения появится Разблокировать Parlons Cloud. Используйте отпечаток пальца или PIN-код устройства.

Чтобы скрыть заблокированное приложение на снимках и записях экрана, выключите Разрешить демонстрацию экрана в том же разделе.

Как выключить звук сообщений

  1. Откройте Ещё → Настройки.
  2. В разделе Уведомления выключите Звук сообщений. О новых сообщениях по-прежнему будут уведомления и вибрация, но без звука.

Как изменить мелодию и оповещения о звонках на заблокированном экране

  1. Откройте Ещё → Настройки.
  2. В разделе Уведомления нажмите Настройки входящих звонков. Откроются настройки Android.
  3. Выберите мелодию и вибрацию и разрешите полноэкранные оповещения на заблокированном экране.

Как сохранить подключение приложения в фоновом режиме

  1. Откройте Ещё → Настройки и прокрутите до раздела Это устройство.
  2. Нажмите Работать в фоновом режиме. Android спросит, разрешить ли приложению игнорировать оптимизацию батареи.
  3. Разрешите. Когда исключение задано, пункт исчезает.
  4. Чтобы проверить каналы уведомлений, нажмите Настройки уведомлений в том же разделе.

Как открыть или установить Minima Core

  1. Откройте Ещё → Настройки и найдите Minima Core на этом телефоне.
  2. Если Minima Core установлен, на карточке написано Minima Core установлен ✓. Нажмите Открыть Minima Core.
  3. Если нет, нажмите Установить Minima Core, чтобы установить его.

Как задать начальные ретрансляторы телефона

Это ретрансляторы, через которые телефон находит аккаунт (собственные ретрансляторы аккаунта задаются в самом аккаунте, разделы 12 и 24).

  1. Нажмите Начальные ретрансляторы телефона. В списке у каждого ретранслятора есть пометка встроенный или добавлен вами.
  2. Чтобы добавить ретранслятор, введите host:port или вставьте текст QR-кода ретранслятора и нажмите Добавить. Или нажмите Сканировать QR-код ретранслятора. Текст QR-кода ретранслятора начинается с parlons-relay:.
  3. Удалить удаляет ваш собственный ретранслятор. Хотя бы один должен остаться; если удалить последний, снова включится встроенный список.
  4. Использовать встроенные ретрансляторы (список из приложения) включает или выключает встроенный список. Чтобы выключить его, сначала добавьте собственный ретранслятор.
  5. Сбросить возвращает встроенный список. Готово закрывает окно.

Изменения вступают в силу при следующем переподключении.


14Уведомления, звонки и постоянное подключение

Приложение поддерживает постоянное зашифрованное соединение с аккаунтом в виде активного сервиса Android, чтобы приходили уведомления о сообщениях и звонках. Его постоянное уведомление гласит Подключено к вашему облачному аккаунту. После перезагрузки телефона приложение само подключается снова, если устройство подключено к аккаунту.

Каналы уведомлений Android:

КаналДля чего
Сообщения / Сообщения (без звука)Новые сообщения в облачном аккаунте (второй — когда Звук сообщений выключен).
Входящие звонкиВходящие звонки, включая полноэкранные оповещения на заблокированном экране.
Подключение к облакуПостоянное уведомление о соединении.
Уведомления о создании токеновХод создания NFT из кошелька.

Вызовы. Голосовые и видеозвонки — только один на один. Звук и видео шифруются между двумя устройствами. В первый раз приложение запрашивает доступ к микрофону (и камере для видео).

Как ответить на звонок

  1. Входящий звонок отображается как Входящий звонок Parlons (или Входящий видеозвонок Parlons), на заблокированном экране — во весь экран, если Android это разрешает.
  2. Нажмите Ответить, чтобы принять звонок, или Отклонить, чтобы отказаться.
  3. Во время звонка используйте Выкл. микр. / Вкл. микр., Динамик / Телефон, Камера (переключение камеры, только видео) и Отбой.

Как позвонить, описано в разделе 6, «Как позвонить контакту».

Если сообщения приходят с опозданием

  1. Откройте Ещё → Настройки → Это устройство и нажмите Работать в фоновом режиме, если этот пункт виден (раздел 13).
  2. Убедитесь, что Android разрешает уведомления приложения (Настройки уведомлений в том же разделе).
  3. Проверьте индикатор состояния. На нём должно быть в сети · N узлов.
  4. Если на индикаторе недоступен, возможно, остановлен сам аккаунт (раздел 17).

15Аккаунт в других приложениях Parlons

Одним аккаунтом можно управлять из нескольких мест одновременно. Каждое из них — отдельное подключённое устройство со своим ключом.

Полное приложение Parlons! для Android — не клиент. Оно хранит собственную личность на телефоне и к аккаунту не подключается. Однако личность можно переносить между ними: резервная копия облачного аккаунта (Создать резервную копию аккаунта…) восстанавливается в приложении Parlons! (личность и контакты). Никогда не запускайте одну и ту же личность в двух местах одновременно (раздел 16).

Как подключить iPhone к тому же аккаунту

Приложение для iPhone пока недоступно. Ниже — шаги на момент его выхода.

  1. На уже подключённом устройстве откройте Узел → Подключить другое моё устройство и создайте новое приглашение (раздел 10).
  2. На iPhone откройте приложение Parlons.
  3. Нажмите Сканировать QR-код аккаунта и отсканируйте приглашение или вставьте его.
  4. Завершите подключение в приложении на iPhone. Действующий код подключает сразу.

Ваш аккаунт и приложения других людей. Любой, кто пользуется любым приложением Parlons или классическим узлом Minima с Maxima, может добавить ваш адрес MAX# в контакты и написать вам.


16Резервные копии, восстановление и перенос

Ваши 24 слова

Каждый аккаунт — это 24 слова. Адрес аккаунта получается из них, поэтому одни и те же слова в любом месте дают один и тот же адрес. Они же — кошелёк Minima: любой, кто их прочитает, сможет потратить всё, что на них хранится.

Как посмотреть свои 24 слова

  1. Убедитесь, что никто не видит ваш экран.
  2. Откройте Ещё → Настройки и в разделе Ключи и резервные копии нажмите Показать сид-фразу.
  3. Окно Показать сид-фразу? предупреждает: Эта фраза управляет вашей личностью Parlons. Она может отличаться от фразы кошелька сервера. Убедитесь, что никто не смотрит. Фраза передаётся на телефон по зашифрованному каналу. Нажмите Показать.
  4. Появится Ваши 24 слова. Запишите их на бумаге.
  5. Нажмите Закрыть. Если вместо этого нажать Копировать, приложение покажет Скопировано — буфер обмена очистится через 60 секунд.

Фраза личности и фраза кошелька могут различаться, например после Сменить фразу кошелька… на Parlons Node или после импорта личности. Храните обе в надёжном месте.

Запишите слова на бумаге и храните её вне сети. Никогда не фотографируйте их, не отправляйте по почте и не вставляйте в чат.

Как создать резервную копию всего аккаунта

  1. Откройте Ещё → Настройки и в разделе Ключи и резервные копии нажмите Создать резервную копию аккаунта….
  2. В окне Создать резервную копию аккаунта введите парольную фразу в поле Парольная фраза (не менее 6 символов) и ещё раз в поле Повторите парольную фразу. Если вы её потеряете, восстановить её будет невозможно.
  3. Нажмите Создать резервную копию.
  4. Приложение покажет Создание зашифрованной резервной копии…, затем спросит, куда сохранить файл .pbk.
  5. Сохраните его в надёжном месте. Резервная копия сохранена подтверждает сохранение. (Если слишком долго не выбирать место, приложение покажет Срок хранения резервной копии истёк — экспортируйте снова.)

Копия шифруется вашей парольной фразой до отправки с узла. Она содержит личность, подключённые устройства, настройки, контакты и историю чатов в том же формате .pbk, который читает приложение на телефоне. Медиафайлы и содержимое приватных файлов не включаются. В терминале такой же файл создаётся командой parlons backup <file.pbk>.

Как восстановить аккаунт на своём компьютере

  1. Создайте резервную копию (см. выше) или используйте уже имеющуюся.
  2. На компьютере, где будет работать аккаунт, восстановите копию в пустую папку данных с помощью --restore до запуска аккаунта. Точные команды — в разделе 19, «Перенос аккаунта на другой компьютер».
  3. Окончательно остановите старую копию.

Адрес не меняется, поэтому все подключённые устройства переподключатся сами.

Как импортировать личность на Parlons Node из приложения

Для этого нужен Parlons Node 0.2.117 или новее. На других хостах приложение покажет Для импорта из этого приложения обновите Parlons Node до версии 0.2.117 или новее.

  1. Сначала остановите личность на исходном устройстве или сервере.
  2. Откройте Ещё → Настройки и в разделе Ключи и резервные копии нажмите Импортировать личность или резервную копию….
  3. Выберите, что импортировать:
    • введите Фраза восстановления; или
    • выберите Произвольная фраза (Minima anyphrase) для нестандартной фразы (все пробелы и заглавные буквы сохраняются); или
    • нажмите Выбрать резервную копию .pbk…, выберите файл и введите его Пароль резервной копии.
  4. Нажмите Проверить импорт. Проверьте новый адрес.
  5. Отметьте Я остановил работу этой личности на исходном устройстве или сервере.
  6. Нажмите Импортировать и перезапустить. Сервер перезапустится (Сервер перезапускается. Подключение к импортированной личности…), и приложение переподключится (Личность импортирована, соединение установлено).

Это заменяет личность Parlons, контакты и чаты на сервере. Его кошелёк Minima и фраза кошелька не меняются. Предыдущий аккаунт сохраняется на сервере для восстановления. Если соединение прервётся, снова откройте экран и нажмите Продолжить / проверить импорт. Отменить подготовленный импорт отменяет импорт до подтверждения. Ваша фраза никогда не сохраняется на телефоне.

Одна личность — одно место

Запускайте каждую личность одновременно только в одном месте. Две копии запутают ваших контактов и могут повторно использовать ключи кошелька, которые нельзя использовать повторно. Переносите, а не копируйте: окончательно остановите старую копию, прежде чем запускать новую.

Как уйти с хоста

Уйти можно в любой момент. Ваш адрес не меняется, поэтому контакты и подключённые устройства продолжат работать.

  1. Создайте резервную копию всего аккаунта (см. выше) и сохраните парольную фразу.
  2. Попросите хост приостановить старую копию (раздел 22, «Приостановка и возобновление»), чтобы личность никогда не работала в двух местах.
  3. Восстановите копию на своём компьютере и запустите её (раздел 19, «Перенос аккаунта на другой компьютер»).
  4. Убедитесь, что телефон подключился к новой копии.
  5. Попросите хост окончательно удалить старую копию.

17Решение проблем для владельцев аккаунтов

ПризнакЧто делать
Не удалось подключиться: … при подключении или недоступен на индикатореАккаунт не подключён к ретранслятору: он остановлен, нет интернета или он только что запустился. На его компьютере выполните parlons status; на Parlons Node — journalctl -u parlons-node -f; для размещённого аккаунта обратитесь к оператору.
Не удалось подключить устройствоКод неверный, уже использован или заменён более новым. Попросите новое приглашение.
Запрос на подключение отправлен. Одобрите его с уже подключённого устройстваВы подключались без кода. Одобрите это устройство с другого подключённого устройства, затем снова откройте приложение.
Для приглашения в аккаунт владельца нужен пароль администратораХост защищает приглашения владельца. Введите пароль администратора или вместо этого одобрите подключение без кода (раздел 10).
Задайте пароль администратора на странице «Устройства» Parlons в приложении хоста…Пароль администратора ещё никто не задал. См. раздел 23.
Размещение на этом сервере ещё не включено / Сервис размещения недоступенВстроенный хостинг выключен или сервис tenants на хосте остановлен. См. раздел 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.sh20
Аккаунты для нескольких человек на одном сервере с зашифрованными сид-фразамиops/deploy-parlons-tenants.sh и сервис parlons-tenants21
Полный узел Minima со встроенным ParlonsParlons Node (cloud/NODE-SETUP.md); чтобы размещать друзей, добавьте рядом parlons-tenants21, 23
Гостевые аккаунты только для общения внутри вашего аккаунтаВстроенный хостинг (веб-панель или Portal)11, 24

Любому хосту нужен компьютер, который всегда включён и имеет исходящий доступ в интернет. Отдельному аккаунту не нужны ни домен, ни сертификат TLS, ни обратный прокси. Входящие порты нужны, только если хост также работает как ретранслятор для других.


19Один аккаунт на своём компьютере: установщики одной командой

Как установить на Mac, Linux, Raspberry Pi или VPS

  1. Откройте терминал на компьютере, где будет работать аккаунт.
  2. Вставьте эту команду и нажмите Enter:
    curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | bash
  3. Дождитесь завершения пяти шагов. На последнем экране будут ваш адрес, QR-код приглашения и текст приглашения.
  4. На телефоне подключите Portal с этим приглашением (раздел 4).
  5. Сразу создайте резервную копию сид-фразы (см. ниже).

Как установить на Windows 10 или 11

  1. Откройте PowerShell.
  2. Вставьте эту команду и нажмите Enter:
    irm https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.ps1 | iex
  3. Дождитесь завершения и подключите телефон с выведенным приглашением (раздел 4).
  4. Создайте резервную копию сид-фразы из C:\Users\<you>\.parlons\seed.txt (см. ниже).

В самом скрипте для Windows сказано, что авторы ещё не проверяли его на компьютере с Windows. Сообщайте о любых проблемах.

Что делает установщик

Установщик:

  1. устанавливает Java 11 или новее, если её нет (Homebrew на Mac, apt, dnf, apk или pacman в Linux, winget в Windows), а также qrencode, где это возможно;
  2. скачивает новейший релиз parlons-cloud с GitHub и проверяет его контрольную сумму SHA-256;
  3. регистрирует сервис, который переживает перезагрузки: агент launchd на Mac, пользовательский модуль systemd (с linger) или системный модуль в Linux, задачу планировщика с именем Parlons Cloud в Windows;
  4. запускает аккаунт, подключает этот терминал как первое устройство и создаёт новый код;
  5. выводит адрес аккаунта, приглашение для телефона (текстом и QR-кодом) и команду 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. В Portal для Android кнопка называется Сканировать QR-код подключения.

Параметры

ПараметрДействие
… | 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 установщик открывает 9501 в ufw, если ufw активен. Если порт 9501 недоступен извне, ничего не ломается: аккаунт всё равно работает через сеть ретрансляторов, просто не передаёт чужие сообщения. С --no-relay он вообще не открывает входящих портов. Его веб-панель слушает 127.0.0.1:9587 (раздел 24).

Как сделать ретранслятор доступным для других

  1. Установите как обычно; ретранслятор включён по умолчанию.
  2. Убедитесь, что TCP-порт 9501 доступен из интернета: разрешите его в брандмауэре облачного провайдера или пробросьте на домашнем роутере.
  3. В Linux установщик открывает 9501 в ufw, если ufw активен.
  4. Проверьте порт с другого компьютера (раздел 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.

Как использовать другую папку данных или размер кучи

  1. Задайте переменную перед bash:
    curl -fsSL https://raw.githubusercontent.com/eurobuddha/maxima/main/ops/get-parlons-cloud.sh | PARLONS_DATA=/srv/parlons PARLONS_HEAP=512m bash
  2. Используйте те же переменные при каждом следующем запуске установщика, чтобы он находил ту же папку.

Как обновить

  1. Выполните:
    parlons update

    Или снова выполните команду установки. В Windows снова выполните команду установки.

  2. Установщик скачает новейший релиз, проверит его SHA-256 и перезапустит аккаунт.
  3. Убедитесь, что аккаунт снова работает:
    parlons status

Как удалить сервис, сохранив данные

  1. Выполните:
    parlons uninstall

    В Windows выполните .\get-parlons-cloud.ps1 -Uninstall.

  2. Сервис остановится и будет удалён. Данные аккаунта останутся в папке данных.

Повседневные задачи

Mac / LinuxWindows
Работает ли?parlons statusparlons status
Смотреть журналparlons logparlons log
Остановить / запустить / перезапуститьparlons stop, parlons start, parlons restartparlons stop, parlons start
Обновитьparlons update (или снова выполните команду установки)снова выполните команду установки
Удалить сервис, сохранив данныеparlons uninstall.\get-parlons-cloud.ps1 -Uninstall
Открыть веб-панельparlons panelparlons panel
Где что хранится~/.parlons (данные), ~/.parlons/bin (программа), ~/.parlons-client (собственный ключ устройства терминала)%USERPROFILE%\.parlons, %USERPROFILE%\.parlons-client

Чтобы удалить сам аккаунт (личность, чаты, сид-фразу), программа удаления предложит вам вручную удалить папку данных и ~/.parlons-client. Сначала создайте резервную копию: удаление сид-фразы удаляет личность и все средства, которые на ней хранятся.

Резервная копия сид-фразы

~/.parlons/seed.txt (в Windows C:\Users\<you>\.parlons\seed.txt) содержит 24 слова. Установщик никогда их не выводит.

  1. Убедитесь, что никто не видит ваш экран.
  2. Выведите слова:
    cat ~/.parlons/seed.txt

    Или в любом подключённом терминале выполните parlons seed.

  3. Перепишите их на бумагу. Храните её в надёжном месте вне сети.
  4. Очистите терминал.

Перенос аккаунта на другой компьютер

  1. На старом компьютере выполните parlons backup my-account.pbk и задайте парольную фразу.
  2. Скопируйте файл на новый компьютер.
  3. На новом компьютере восстановите его до запуска установщика в ту папку, которую будет использовать установщик:
    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 запрашивает парольную фразу в консоли и отказывается работать поверх существующей личности. Он выводит, что восстановлено (имя, контакты, счётчики использования ключей, подключённые устройства и записи чатов).

  4. Окончательно остановите старый компьютер: выполните там parlons uninstall, а его данные храните только как холодную резервную копию.

Подключённые устройства переподключатся сами, потому что адрес тот же.


20Один аккаунт на VPS: deploy-parlons-cloud.sh

Как развернуть аккаунт на VPS

  1. На своём компьютере получите копию репозитория.
  2. Соберите jar или положите выпущенный parlons-cloud-0.11.124.jar в dist/:
    ./gradlew :cloud:fatJar
  3. Убедитесь, что можете подключиться к VPS по SSH как root без запроса пароля.
  4. Запустите скрипт развёртывания:
    ops/deploy-parlons-cloud.sh root@vps.example.com --port 9501 --name "My account"
  5. В конце скрипт выведет адрес аккаунта и одноразовый код подключения. Подключите с ними телефон (раздел 4).
  6. Один раз прочитайте сид-фразу и сохраните её вне сети:
    ssh root@vps.example.com 'cat /var/lib/maxima/seed.txt'
  7. Разрешите порт ретранслятора в брандмауэре облачного провайдера и проверьте его с другого компьютера (раздел 28).

Чтобы обновить позже, снова выполните ту же команду. Установка и обновление — одна и та же операция.

Параметры

--port N (порт ретранслятора, по умолчанию 9501), --name "…" (отображаемое имя), --jar FILE (по умолчанию новейший dist/parlons-cloud-*.jar), --heap 256m, --memmax 1024M, --blob 1024 (хранилище медиа ретранслятора в МБ), --peers h:p,h:p (участники сети для ретранслятора).

Скрипт идемпотентен: установка и обновление выполняются одной командой. По порядку он:

  1. устанавливает Java без графического интерфейса, если её нет на сервере;
  2. создаёт непривилегированного пользователя maxima и /var/lib/maxima (режим 700);
  3. загружает jar в /opt/maxima, проверяет его SHA-256 и только после этого направляет на него символическую ссылку parlons-cloud.jar;
  4. записывает защищённый parlons-cloud.service (в песочнице, с ограничением памяти, фильтрацией seccomp и блокировкой адресов облачных метаданных), который запускает --data /var/lib/maxima --relay-port <port> --no-direct --blobstore <MB>;
  5. открывает порт ретранслятора в ufw или firewalld, если один из них активен;
  6. запускает сервис и проверяет, что он слушает порт;
  7. выводит адрес аккаунта и одноразовый код подключения.

Сид-фразу он никогда не выводит. Прочитайте её один раз по SSH, как в шаге 6 выше.

Если скрипт не вывел адрес или код

  1. Подключитесь к VPS по SSH.
  2. Найдите адрес в журнале:
    journalctl -u parlons-cloud | grep 'permanent address' | tail -1
  3. Если какое-то устройство уже подключено, начального кода на диске нет. Создайте новый код с подключённого устройства (раздел 10).

Ручная установка (четыре команды, минимальный модуль) описана в cloud/SETUP.md. Учтите: когда аккаунт работает под systemd, его вывод идёт в журнал, и программа намеренно никогда не выводит туда новую сид-фразу. Если хотите увидеть слова при первом запуске, один раз запустите программу в обычном режиме или прочитайте seed.txt позже.


21Много аккаунтов: сервис parlons-tenants

Хост с несколькими аккаунтами держит в одном процессе по одному постоянно работающему аккаунту на каждую папку внутри одного каталога. Он предназначен для тех, кто не будет запускать свой сервер: пользователя iPhone, друга, рецензента. У каждого tenant своя личность, устройства, чаты и резервная копия, и он может уйти в любой момент, забрав зашифрованную копию.

Как установить хост tenants

Нужен постоянно включённый компьютер с Linux (512 МБ ОЗУ хватает примерно на десять аккаунтов) и репозиторий на вашем компьютере.

  1. На своём компьютере соберите jar (./gradlew :cloud:fatJar) или положите parlons-cloud-0.11.124.jar в dist/.
  2. Убедитесь, что можете подключиться к серверу по SSH как root с ключом (скрипт запускает SSH в пакетном режиме и не может ответить на запрос пароля).
  3. Выполните:
    ops/deploy-parlons-tenants.sh root@your.box
  4. Дождитесь, пока скрипт подтвердит, что хост работает и опрашивает папки tenants.
  5. Скопируйте /etc/parlons-tenants.env с сервера в надёжное хранилище вне сети, отдельно от резервных копий данных:
    scp root@your.box:/etc/parlons-tenants.env ./parlons-tenants.env.backup
  6. Создайте первый tenant (раздел 22).

Параметры

ПараметрПо умолчаниюЗначение
--jar FILEновейший dist/parlons-cloud-*.jar, иначе cloud/build/libs/parlons-cloud.jarУстанавливаемый jar.
--heap SIZE512mКуча Java (примерно на десять tenants).
--memmax SIZE768MОграничение памяти systemd.
--dir PATH/var/lib/parlons-tenantsКаталог tenants (обычный абсолютный путь).
--peers h:p,h:pнетДополнительные ретрансляторы сети как начальные.
--manage-from-nodeвыключеноПодключить к этому сервису интерфейс владельца Parlons Node (0.2.118 или новее) на том же сервере (см. ниже).

Скрипт:

  1. устанавливает Java без графического интерфейса, если её нет;
  2. создаёт пользователя maxima и каталог tenants (режим 700);
  3. загружает jar в /opt/maxima, проверяет его SHA-256 и направляет на него parlons-cloud.jar;
  4. один раз записывает файл с парольной фразой разблокировки /etc/parlons-tenants.env (только для root, случайное значение PARLONS_UNLOCK=) и защищённый parlons-tenants.service;
  5. перезапускает сервис и проверяет, что хост работает и опрашивает папки tenants.

Модуль запускает:

/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 на том же сервере. Новые tenants создаются с зашифрованными сид-фразами (seed.enc), потому что задана парольная фраза разблокировки.

Сохраните резервную копию /etc/parlons-tenants.env. Каждый seed.enc зашифрован с её помощью. Без неё зашифрованную сид-фразу открыть нельзя.

Вместе с Parlons Node: --manage-from-node

Используйте это, если на сервере уже работает Parlons Node (0.2.118 или новее) и его владелец должен управлять гостями из Portal.

  1. Убедитесь, что на сервере установлен parlons-node. Без него скрипт работать откажется.
  2. Выполните:
    ops/deploy-parlons-tenants.sh root@your.box --jar dist/parlons-cloud-0.11.124.jar --manage-from-node
  3. Дождитесь перезапуска обоих сервисов.
  4. В Portal, подключённом к узлу, откройте Узел и убедитесь, что появилась карточка Размещённые аккаунты с пунктом Управление размещёнными аккаунтами.

Скрипт добавляет дополнительный файл /etc/systemd/system/parlons-node.service.d/hosted-accounts.conf (задаёт PARLONS_HOSTED_DIR равным каталогу tenants и разрешает узлу писать туда), затем перезапускает parlons-node. Существующая командная строка и данные узла сохраняются. Если parlons-node не установлен, скрипт работать откажется. После этого владелец может управлять гостями из Portal: Узел → Размещённые аккаунты → Управление размещёнными аккаунтами (раздел 11), а с сервера — командой sudo parlons-pair --guest <name> (раздел 23).

Веб-панели для tenants

deploy-parlons-tenants.sh записывает в модуль --panel-port 9597. Каждый tenant получает собственную веб-панель на loopback-адресе: первый запустившийся занимает 9597, следующий — 9598 и так далее, в порядке запуска. Диапазон начинается выше 9587, потому что Parlons Node на том же сервере уже занимает 127.0.0.1:9587, порт панели по умолчанию.

В старых модулях был --no-panel, поэтому у их tenants панели не было.

Как дать tenants панели в старом модуле

  1. Перезапустите скрипт развёртывания. Он перезапишет модуль с --panel-port 9597:
    ops/deploy-parlons-tenants.sh root@your.box
  2. Или отредактируйте модуль на сервере вручную. Сначала сохраните копию:
    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

Как узнать порт панели tenant

  1. На сервере прочитайте файл panel.txt этого tenant:
    sudo cat /var/lib/parlons-tenants/alice/panel.txt
  2. Используйте этот порт. Не угадывайте: номера выдаются по порядку и не используются повторно, пока работает хост, поэтому tenant, который был приостановлен и возобновлён, получает следующий номер.

Если порт панели занят, панель этого tenant не запускается (в журнале будет web panel could NOT start on 127.0.0.1:<port>). Сам аккаунт продолжает работать. Повторный запуск deploy-parlons-tenants.sh перезаписывает модуль, поэтому все ручные правки теряются и их нужно сделать снова.

Как открыть панель tenant со своего компьютера, описано в разделе 24.

Ёмкость

Каждый tenant подключается примерно к трём ретрансляторам сети с одного IP-адреса хоста, а ретрансляторы ограничивают число незарегистрированных подключений с одного IP (по умолчанию 32). Рассчитывайте примерно на десять tenants на хост. Лимит на создание размещённых аккаунтов по умолчанию — десять, включая приостановленные (изменяется параметром -Dparlons.hosted.limit=<n>).


22Создание, приостановка и удаление гостевых аккаунтов

Создание

Как создать tenant со своего компьютера

  1. Выберите имя: от 1 до 64 символов — буквы, цифры, ., _ и -, начинается с буквы или цифры.
  2. Выполните:
    ops/tenant-new.sh root@your.box alice

    Добавьте --dir <path>, если вы не использовали каталог tenants по умолчанию.

  3. Подождите. Скрипт выполняет на сервере parlons-cloud --tenant-new от имени пользователя maxima. Он выводит waiting for hosted account alice to connect… и до 60 секунд ждёт, пока работающий хост запустит новый аккаунт.
  4. Скопируйте выведенное приглашение и отправьте его лично пользователю аккаунта или превратите его в QR-код любым генератором QR-кодов.

Он выводит полностью:

  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.

Новые аккаунты запускаются в течение пяти секунд; больше ничего не перезапускается.

Как создать tenant прямо на сервере

  1. Подключитесь к серверу по SSH как root.
  2. Выполните:
    runuser -u maxima -- java -jar /opt/maxima/parlons-cloud.jar --tenant-new /var/lib/parlons-tenants alice
  3. Отправьте выведенное приглашение лично пользователю аккаунта.

Другие способы создать tenant: sudo parlons-pair --guest alice на Parlons Node с --manage-from-node (раздел 23) или Portal владельца (раздел 11).

Приостановка и возобновление

Приостановленные аккаунты сохраняют личность и чаты. Кнопки Приостановить работу аккаунта / Возобновить работу аккаунта в Portal владельца делают то же самое.

Как приостановить tenant

  1. Подключитесь к серверу по SSH.
  2. Создайте файл .stop этого tenant:
    touch /var/lib/parlons-tenants/alice/.stop
  3. В течение пяти секунд в журнале появится tenant alice: stopped (.stop).

Как возобновить tenant

  1. Удалите файл .stop:
    rm /var/lib/parlons-tenants/alice/.stop
  2. В течение пяти секунд в журнале появится hot-add: alice, и tenant снова запустится.

Новое приглашение для существующего tenant

Текущее приглашение tenant лежит в /var/lib/parlons-tenants/<name>/invite.txt, пока есть действующий код (pair-code.txt). После использования оба файла удаляются.

Как выдать tenant новое приглашение

Используйте один из способов:

  1. Со своего компьютера. Снова выполните команду создания для существующего имени:
    ops/tenant-new.sh root@your.box alice

    Для существующей папки она не заменяет личность, а повторно выдаёт действующий код или создаёт новый.

  2. С собственного устройства tenant. Tenant открывает Узел → Подключить другое моё устройство в своём Portal. У tenants на хосте parlons-tenants нет пароля администратора, поэтому код создаётся сразу.
  3. Из Portal владельца (с --manage-from-node): Узел → Управление размещёнными аккаунтами, нажмите на аккаунт, затем Показать приглашение.

Как прочитать действующее приглашение на сервере

  1. Подключитесь к серверу по SSH.
  2. Выполните:
    sudo cat /var/lib/parlons-tenants/alice/invite.txt

    Если файла нет, код уже использован. Выдайте новое приглашение (см. выше).

Восстановление tenant из резервной копии

Хост запускает любую новую папку в течение пяти секунд, а папка без сид-фразы получает новую личность. --restore записывает seed.txt в последнюю очередь. Поэтому восстанавливайте во временную папку вне каталога tenants, а затем перемещайте её внутрь.

  1. Скопируйте файл .pbk на сервер туда, где его сможет прочитать пользователь maxima.
  2. Выберите имя tenant, которого ещё нет. Используйте временный путь в той же файловой системе, что и каталог tenants.
  3. В интерактивном сеансе 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
  4. Когда попросят, введите парольную фразу резервной копии. Команда выведет, что восстановлено.
  5. Переместите папку:
    sudo mv /var/lib/parlons-restore-alice /var/lib/parlons-tenants/alice
  6. В течение пяти секунд хост запустит её с восстановленной личностью.

Восстановленный seed.txt хранится открытым текстом (режим 0600). Чтобы зашифровать его, выполните следующую инструкцию.

Шифрование существующих открытых сид-фраз

  1. Убедитесь, что никто не видит ваш экран, и прочитайте парольную фразу разблокировки. Она понадобится в шаге 3:
    sudo grep PARLONS_UNLOCK /etc/parlons-tenants.env
  2. Остановите хост:
    systemctl stop parlons-tenants
  3. В интерактивном сеансе SSH запустите шифрование и, когда попросят, введите ту же парольную фразу, что и в PARLONS_UNLOCK:
    sudo runuser -u maxima -- java -jar /opt/maxima/parlons-cloud.jar --tenants /var/lib/parlons-tenants --unlock prompt --encrypt-seeds
  4. Снова запустите хост:
    systemctl start parlons-tenants

Каждый seed.txt превращается в seed.enc. Каждый проверяется до удаления открытого текста.

Удаление tenant

Команды удаления нет. Папка tenant содержит ключи аккаунта: обращайтесь с ней как с кошельком.

  1. Приостановите tenant (touch /var/lib/parlons-tenants/alice/.stop).
  2. Убедитесь, что у человека есть резервная копия или аккаунт ему больше не нужен.
  3. Переместите папку из каталога tenants:
    sudo mv /var/lib/parlons-tenants/alice /var/lib/parlons-removed-alice
  4. Храните её как холодную резервную копию или сотрите, когда будете уверены.

23Приглашения владельца и гостей с сервера

Пароль администратора для подключения

Приглашения владельца (коды, дающие полный контроль над аккаунтом владельца) защищены паролем администратора для подключения на хостах с сервисом пароля: отдельном аккаунте parlons-cloud, Parlons Node 0.2.118 или новее и в настольных приложениях-узлах. Для гостевых приглашений он не нужен.

Как задать пароль администратора на Parlons Node

  1. Откройте интерактивный сеанс SSH на сервере узла.
  2. Выполните:
    sudo parlons-pair --set-admin-password
  3. На запрос Admin password (Enter for a guest invitation): введите новый пароль (от 10 до 1024 символов). На запрос Confirm admin password: введите его ещё раз.
  4. Команда выведет Admin pairing password saved.

Без интерактивного терминала команда остановится с сообщением Use an interactive SSH terminal (ssh -t) for the admin password.

Как задать пароль администратора в веб-панели

  1. Откройте веб-панель аккаунта (раздел 24).
  2. Откройте Устройства и найдите Задать пароль администратора (или Изменить пароль администратора, если пароль уже задан).
  3. Чтобы изменить существующий пароль, введите его в поле Текущий пароль.
  4. Введите новый пароль в поле Новый пароль и ещё раз в поле Подтвердите новый пароль. Он должен быть не короче 10 символов.
  5. Нажмите Сохранить пароль. Панель подтвердит: Пароль администратора сохранён. Теперь можно создать приглашение для устройства владельца.

Как задать пароль администратора в командной строке

  1. Откройте интерактивный терминал на компьютере, где работает аккаунт.
  2. Для аккаунта, развёрнутого через 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
  3. Введите пароль дважды. Команда выведет 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 в каталоге tenants и выводит его приглашение. Нужен сервис размещённых аккаунтов (раздел 21).
sudo parlons-pair --set-admin-passwordЗадаёт пароль администратора.
--data DIRКаталог данных аккаунта владельца (по умолчанию /var/lib/parlons-node).
--tenants-dir DIRКаталог tenants (по умолчанию 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#, одноразовый код, QR-код (если установлен qrencode) и полное приглашение. Если неиспользованного кода нет, она так и сообщает; запустите её снова, чтобы получить новый. Израсходованные коды никогда не восстанавливаются из старых журналов или устаревших файлов.

Как создать приглашение владельца на Parlons Node

  1. Откройте интерактивный сеанс SSH на сервере узла.
  2. Выполните:
    sudo parlons-pair --admin
  3. Введите пароль администратора на запрос Admin password (Enter for a guest invitation):. При неверном пароле появится Incorrect admin password, и код не будет выдан.
  4. Отсканируйте выведенный QR-код в Portal (Сканировать QR-код подключения) или вставьте полное приглашение (раздел 4).

Как создать гостевое приглашение на Parlons Node

Для этого нужен сервис размещённых аккаунтов (--manage-from-node, раздел 21).

  1. Откройте сеанс SSH на сервере узла.
  2. Выполните команду с именем гостевого аккаунта:
    sudo parlons-pair --guest alice
  3. Команда создаст размещённый аккаунт alice (или использует существующий) и выведет его приглашение.
  4. Отправьте приглашение лично этому человеку.

Запуск sudo parlons-pair без параметров запрашивает пароль администратора. Введите его для приглашения владельца. Или просто нажмите Enter, затем введите имя гостя на запрос Hosted account name: для гостевого приглашения.

Откуда ещё берутся приглашения

ИсточникПриглашение владельцаГостевое приглашение
Portal, Узел → Подключить другое моё устройствода (пароль администратора, если он есть на хосте)оставьте пароль пустым → размещённые аккаунты
Portal, Узел → Управление размещёнными аккаунтами → Показать приглашениенетда
Веб-панель, Устройства → Новый код подключенияда (поле пароля администратора, если он есть на хосте)нет
Веб-панель, Устройства → Размещённые аккаунты → Показать приглашениенетда
ops/tenant-new.sh, --tenant-newнетда (собственное приглашение этого tenant)
Начальный код при первом запуске (pair-code.txt)да, для самого первого устройстване применимо

Как создать приглашение владельца командой parlons

  1. В терминале, где parlons подключён к аккаунту, выполните:
    parlons newcode
  2. Если у хоста есть пароль администратора, команда запросит его в консоли строкой Admin password:. Введите его. Пароль никогда не передаётся в командной строке.
  3. Команда выведет строки code : и invite :. Отсканируйте или вставьте приглашение в приложении Parlons Cloud. Код срабатывает один раз.

Для запроса пароля нужна интерактивная консоль. Без неё (например, из скрипта) команда завершится ошибкой Admin password required for an owner-account invitation.


24Локальная веб-панель

Каждый хост аккаунта предоставляет веб-панель и API для своего аккаунта только на loopback-адресе: http://127.0.0.1:<port>/. Порт по умолчанию — 9587. Это тот же интерфейс, что и у подключённого телефона, но в браузере на том же компьютере и без подключения через сеть.

Как открыть

Ссылка один раз выполняет вход в браузере. Аккаунт сразу записывает следующую неиспользованную ссылку в panel-ticket.txt. Если открыть уже использованную ссылку, появится This link has been used or has expired.

Как открыть панель на компьютере, где работает аккаунт

  1. В терминале на этом компьютере выполните:
    parlons panel

    Команда откроет браузер по одноразовой ссылке.

  2. Или откройте ссылку из <data>/panel-ticket.txt (например, ~/.parlons/panel-ticket.txt) самостоятельно.

Подключённое устройство на другом компьютере тоже может запросить у аккаунта ссылку, действующую 60 секунд. parlons panel делает это, если папка аккаунта находится не на этом компьютере.

Как открыть панель сервера со своего компьютера

Панель отклоняет любой Host, кроме 127.0.0.1:<port> или localhost:<port>. Поэтому используйте SSH-туннель с одинаковым номером порта на обоих концах.

  1. Узнайте порт. Отдельный аккаунт использует 9587. Для tenant прочитайте его panel.txt (раздел 21).
  2. На своём компьютере откройте туннель и не закрывайте его:
    ssh -L 9587:127.0.0.1:9587 root@your.box

    Для первого tenant на сервере с узлом используйте 9597 на обоих концах:

    ssh -L 9597:127.0.0.1:9597 root@your.box
  3. В этом сеансе SSH выведите одноразовую ссылку. Для отдельного аккаунта, развёрнутого через deploy-parlons-cloud.sh:
    sudo cat /var/lib/maxima/panel-ticket.txt

    Для tenant:

    sudo cat /var/lib/parlons-tenants/alice/panel-ticket.txt
  4. Скопируйте ссылку и откройте её в браузере на своём компьютере.

Что в ней есть

В заголовке — Parlons! с версией и На базе Maxima, индикатор состояния и кнопки «Тема», «Поиск» и «Ещё». Вкладки:

Задачи в панели

Как подключить своё устройство из панели

  1. Нажмите Устройства.
  2. В разделе Подключить своё устройство введите Пароль администратора, если поле показано.
  3. Нажмите Новый код подключения. Панель покажет Новый код создан и приглашение QR-кодом и текстом.
  4. Отсканируйте QR-код в Portal (Сканировать QR-код подключения) или нажмите кнопку копирования и вставьте приглашение на новом устройстве.

Как одобрить или отозвать устройство в панели

  1. Нажмите Устройства.
  2. В разделе Ожидание разрешения нажмите Разрешить рядом с устройством, которое вы узнаёте. Панель покажет Одобрено.
  3. Чтобы отключить устройство, нажмите Отозвать рядом с ним и подтвердите Отозвать доступ у этого устройства? Оно потеряет доступ к аккаунту. Панель покажет Доступ отозван.

Как разместить аккаунт друга из панели

  1. Нажмите Устройства и прокрутите до раздела Размещённые аккаунты.
  2. Только для встроенного хостинга: нажмите Включить хостинг и подтвердите. Сначала задайте пароль администратора.
  3. Введите имя в поле Имя аккаунта (например, alice) и нажмите Создать аккаунт. Панель сообщит: Аккаунт создан. Обновите через несколько секунд. Когда он запустится, выберите «Показать приглашение».
  4. Нажимайте Обновить, пока состояние аккаунта не станет работает.
  5. Нажмите Показать приглашение. Приглашение появится QR-кодом и полным текстом.
  6. Нажмите Копировать приглашение гостя и отправьте его лично этому человеку.

Чтобы приостановить аккаунт, нажмите Приостановить в его строке и подтвердите. Возобновить возвращает его. Остановить хостинг отключает от сети все встроенные гостевые аккаунты; их личности и чаты сохраняются.

Как добавить или удалить ретранслятор в панели

  1. Нажмите Узел и прокрутите до раздела Ретрансляторы.
  2. Введите в поле host:port (например, relay.example.com:9501) или вставьте текст QR-кода ретранслятора и нажмите Добавить.
  3. Чтобы удалить один из своих ретрансляторов, нажмите Удалить в его строке. Панель покажет Отключён.
  4. Переключите Использовать встроенный список ретрансляторов, чтобы включить или выключить встроенный список.

Как закрепить ретранслятор каталога в панели

  1. Нажмите Узел и прокрутите до раздела Ретранслятор каталога.
  2. Нажмите Закрепить лучший ретранслятор. В строке ниже появится закреплён: … с ретранслятором.
  3. Очистить снимает закрепление. Опубликовать заново сразу заново публикует вашу запись в каталоге.

Как выйти из панели в браузере

  1. Нажмите Настройки и прокрутите до раздела Эта панель.
  2. Нажмите Выйти. Чтобы вернуться, откройте новую одноразовую ссылку.

Чего панель не делает

Сид-фраза, резервная копия, отправка из кошелька, платежи, консоль узла и размещение NFT в панели недоступны. Cookie на компьютере защищён хуже, чем телефон у вас в руке: всё это остаётся на подключённых телефонах и в командной строке.

Безопасность панели

--no-panel отключает панель. --panel-port <n> переносит её на другой порт.


25Справочник по параметрам командной строки

java -jar parlons-cloud-0.11.124.jar [options]. Все параметры, которые принимает программа:

Отдельный аккаунт

ПараметрПо умолчаниюЗначение
--data <dir>~/.parlonsКаталог данных аккаунта.
--name <name>сохранённое имяОтображаемое имя аккаунта.
--relay-port <n>9501Порт общего ретранслятора (pool relay), который этот аккаунт запускает для сети.
--no-relay(ретранслятор включён)Запустить аккаунт без общего ретранслятора.
--direct-port <n>9536Порт прямой доступности (уровень 2).
--no-direct(прямая доступность включена)Отключить прямую доступность.
--panel-port <n>9587Локальная веб-панель и API, только на 127.0.0.1.
--no-panel(панель включена)Работать без веб-панели.
--wallet rpc:<port>[:<secret-file>]собственный механизм подписи аккаунта на основе его сид-фразыИспользовать в качестве кошелька узел Minima, уже работающий на этом компьютере, через его loopback RPC. Подписывает узел; аккаунт хранит только личность. В файле хранится -rpcpassword узла.
--host <ip>не сообщатьПубличный адрес для объявления.
--relays <list>нетДополнительные ретрансляторы сети для подключения (host:port через запятую).
--no-builtin-relays(встроенный список включён)Не использовать встроенный в программу список ретрансляторов как источник начальных; только --relays и ретрансляторы, добавленные в панели. Нужен хотя бы один.
--peers <list>нет (или MAXIMA_PEERS)Участники сети для общего ретранслятора (через запятую).
--blobstore <MB>1024Размер хранилища медиа ретранслятора в МБ.
--import-seed <file|prompt>Принять существующую фразу из 24 слов, произвольную фразу Minima или сид в шестнадцатеричном виде — только в новый каталог, затем выйти. prompt считывает её из консоли.
--restore <file.pbk>Восстановить зашифрованную резервную копию в новый каталог, затем выйти. Нужна интерактивная консоль.
-v, --versionВывести parlons-cloud 0.11.124 и выйти.
-h, --helpВывести справку и выйти.

Хост с несколькими аккаунтами

ПараметрЗначение
--tenants <dir>Запустить каждый аккаунт <dir>/<name>/ в этом одном процессе. Порты ретранслятора и прямой доступности открывает только первый tenant; остальные используют их совместно. Панель каждого tenant занимает --panel-port, +1, +2 … в порядке запуска (с --no-panel — ни одной).
--unlock <prompt|env>Парольная фраза для открытия файлов seed.enc: запрашивается в консоли или берётся из PARLONS_UNLOCK (для systemd). Нужна, если зашифрована сид-фраза хотя бы одного tenant. Пока она задана, новые tenants получают зашифрованные сид-фразы.
--tenant-new <dir> <name>Команда оператора: создать <dir>/<name>/, подождать (60 с), пока работающий хост запустит его, вывести адрес, код подключения и приглашение, затем выйти.
--encrypt-seedsВместе с --tenants и --unlock: превратить seed.txt каждого tenant в 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только loopback, никогда не открывайте наружу
9597/tcp и вышепанели tenants на сервере с узлом (если настроены, раздел 21)только loopback

26Команда parlons

Установщик одной командой устанавливает 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 на любом компьютере может управлять любым аккаунтом после подключения.

  1. Установите parlons на этот компьютер установщиком одной командой (раздел 19) или используйте уже установленный.
  2. Направьте его на аккаунт, указав полный адрес MAX#:
    parlons connect <account MAX#>

    Команда выведет account saved. next: parlons pair <code>.

  3. Подключите его с новым кодом, полученным с подключённого устройства (раздел 10):
    parlons pair ABCD-EFGH-JKLM

    Команда выведет paired ✓ — this device can now drive your account.

  4. Или запустите parlons pair без кода. Команда выведет pairing requested. Approve it from an already-paired device: и точную строку parlons approve <key>, которую нужно выполнить на подключённом устройстве.
  5. Проверьте, что всё работает:
    parlons status

Как читать и отправлять сообщения из терминала

  1. Выведите список чатов (имя, последнее сообщение, число непрочитанных):
    parlons chats
  2. Найдите полный ключ контакта:
    parlons contacts
  3. Прочитайте переписку:
    parlons read <peer key>
  4. Отправьте сообщение:
    parlons send <peer key> hello

Как заплатить контакту из терминала

  1. Найдите ключ контакта командой parlons contacts.
  2. Заплатите ему из кошелька аккаунта (сумма в MINIMA, примечание необязательно):
    parlons pay <key> 1.5 lunch
  3. Команда выведет payment building on your node ✓ (watch the chat bubble). Команда pay отправляет только Minima. MxUSD отправляйте из Portal.

27Файлы в каталоге данных

Каталог отдельного аккаунта (~/.parlons, /var/lib/maxima) и папка каждого tenant устроены одинаково. Файлы, помеченные как секретные, должны иметь режим 0600; их нельзя записывать в журналы, вставлять куда-либо или передавать.

ФайлСодержимое
seed.txtСекретный. 24 слова (или импортированная фраза, или сид в шестнадцатеричном виде). Личность и кошелёк.
seed.encСекретный. Сид-фраза tenant, зашифрованная парольной фразой разблокировки.
account.txtПостоянный адрес MAX#, записывается после подключения аккаунта к сети. Публичный.
pair-code.txtСекретный. Действующий одноразовый код подключения. Удаляется после использования.
invite.txtСекретный. Полный адрес, затем ?code=, затем код. Удаляется после использования кода.
panel.txtLoopback-URL панели.
panel-ticket.txtСекретный. Одна неиспользованная одноразовая ссылка на панель.
local-device.keyСекретный. Ключ устройства панели. Удалите его (при остановленном аккаунте), чтобы снова включить отозванную панель.
.admin-pairing-passwordПроверочные данные пароля администратора (не сам пароль).
devices.jsonПодключённые устройства.
wallet/Счётчики использования ключей кошелька.
.stop(tenants) Если файл есть, этот tenant приостановлен.
hosted-chat/(аккаунты владельца) Встроенные гостевые аккаунты только для общения, по папке на каждый; .enabled означает, что хостинг включён.
account-history/(Parlons Node) Аккаунты, заменённые при импорте личности, сохранённые для восстановления.
log/cloud.log(аккаунты, установленные установщиком) Журнал аккаунта.

В каталоге tenants также хранится .host-status.json — пульс хоста (какие tenants работают, а какие дают сбои), обновляемый каждые пять секунд.


28Порты, брандмауэры, TLS и обратные прокси

Как открыть и проверить порт ретранслятора

Нужно, только если хост запускает ретранслятор.

  1. На сервере разрешите порт в его собственном брандмауэре. Скрипты делают это, если активен ufw или firewalld. Вручную для ufw:
    ufw allow 9501/tcp

    Для firewalld:

    firewall-cmd --permanent --add-port=9501/tcp && firewall-cmd --reload
  2. В консоли облачного провайдера тоже разрешите входящий TCP 9501 в его брандмауэре.
  3. Проверьте с другого компьютера (не с самого сервера):
    nc -z -G 5 vps.example.com 9501 && echo reachable
  4. 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

  1. Скачайте parlons-cloud-0.11.124.jar из релиза cloud-v0.11.124.
  2. Вычислите его SHA-256. На Mac:
    shasum -a 256 parlons-cloud-0.11.124.jar

    В Linux:

    sha256sum parlons-cloud-0.11.124.jar
  3. Сравните результат с опубликованным значением. Он должен совпадать полностью:
    0ae833429b641393f93b427695784b534e8a2a06a7194eba74e57aed4f19b231

Установщик и скрипты развёртывания проверяют SHA-256 сами и отказываются работать при несовпадении.

Как обновить хост tenants

  1. Сохраните резервные копии /etc/parlons-tenants.env и каталогов данных.
  2. Если вы редактировали модуль, сохраните его копию:
    cp /etc/systemd/system/parlons-tenants.service /etc/systemd/system/parlons-tenants.service.before-0.11.124
  3. Со своего компьютера снова запустите скрипт развёртывания с новым 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, поэтому заново внесите все остальные свои правки.

  4. Проверьте сервис:
    systemctl is-active parlons-tenants
    journalctl -u parlons-tenants | grep 'multi-account host' | tail -1

    В строке должно быть указано Parlons Cloud 0.11.124.

  5. Убедитесь, что каждый tenant выходит на связь (раздел 30).

Как откатиться

  1. На сервере (или в ~/.parlons/bin для аккаунта, установленного установщиком) выведите список оставшихся jar с номерами версий:
    ls /opt/maxima/parlons-cloud-*.jar
  2. Направьте символическую ссылку на более старый и перезапустите, используя строку для вашего типа хоста из таблицы выше. Например, на хосте tenants:
    ln -sf parlons-cloud-0.11.122.jar /opt/maxima/parlons-cloud.jar && systemctl restart parlons-tenants
  3. Проверьте версию в журнале, как в шаге 4 выше.

Приложение Portal обновляется отдельно: установите новый APK поверх старого (раздел 3).


30Журналы

ХостГде
Установщик одной командойparlons log или ~/.parlons/log/cloud.log
deploy-parlons-cloud.shjournalctl -u parlons-cloud -f
parlons-tenantsjournalctl -u parlons-tenants (строки каждого tenant помечены parlons-cloud/<name>)
Parlons Nodejournalctl -u parlons-node -f
С подключённого телефона«Узел» → Открыть панель управления → Журнал событий (Parlons Node)
Из панели«Узел» → Журнал

Как следить за журналом

  1. Выберите команду для вашего хоста из таблицы выше. Например, на хосте tenants:
    journalctl -u parlons-tenants -f
  2. Чтобы видеть только один tenant, отфильтруйте по его метке:
    journalctl -u parlons-tenants | grep 'parlons-cloud/alice'
  3. Нажмите Ctrl+C, чтобы прекратить слежение.

Полезные строки:

Программа никогда не записывает сид-фразу в журнал: под systemd новая сгенерированная сид-фраза не выводится; программа предлагает один раз прочитать seed.txt по SSH. Коды подключения записываются только в pair-code.txt и никогда не попадают в журнал. И всё же при поиске по журналам или файлам модулей отфильтровывайте всё, где упоминаются сид-фразы (… | grep -v seed), и проверяйте журнал, прежде чем куда-либо его вставлять.


31Заметки о безопасности для операторов


32Решение проблем для операторов

ПризнакПричина и решение
Установщик: not up after 90 sПоказаны последние строки журнала. Обычно не установилась Java или нет интернета. Устраните причину и снова запустите установщик; ничего не потеряется.
Установщик: Could not reach GitHub to find the releaseПопробуйте позже или скачайте jar с https://github.com/eurobuddha/maxima/releases в ~/.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.Хост tenants не запущен или не обновлял свой пульс последние 90 секунд. Запустите parlons-tenants.
Wait until this account is running before creating an invite / Account is connecting. Refresh in a few seconds.Tenant ещё не подключился. Подождите и обновите.
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/ владельца недоступна для записи, является символической ссылкой или её блокировку удерживает другой процесс.
Admin password required for an owner-account invitation от parlons newcodeУ команды не было консоли для запроса (например, её запустили из скрипта). Выполните parlons newcode в интерактивном терминале и введите пароль на запрос Admin password:. Или создайте приглашение в приложении или панели, или подключитесь без кода и одобрите устройство.
Хост этого аккаунта слишком старый для отправки MxUSD — обновите его (…) на телефонеХост аккаунта не может подтвердить, что учитывает ID токена. Обновите его до Parlons Cloud 0.11.121 или новее (актуальная — 0.11.124), Parlons Node 0.2.135 или новее либо minimaCore Desktop 0.18.21 или новее.
Incorrect admin password от parlons-pairПовторите через две секунды. Чтобы сменить забытый пароль на Parlons Node, локально выполните sudo parlons-pair --set-admin-password.
Восстановление: wrong passphrase (or a damaged backup file)Проверьте парольную фразу.
Восстановление: отказ, потому что личность уже существует--restore и --import-seed никогда ничего не перезаписывают. Сначала переместите старые данные или используйте новый каталог.
Телефон подключается, но подключение к аккаунту нестабильно (хосты с ретранслятором)Брандмауэр в консоли облачного провайдера блокирует порт ретранслятора. Разрешите его и там.
Tenant получил новую личность после того, как вы переместили восстановленную папкуПапка была подхвачена до записи seed.txt. Остановите её (.stop) и восстановите заново через временную папку (раздел 22). Держите папку неожиданной личности отдельно, пока не убедитесь, что к ней никто не подключился.

Пошаговые решения

Порт ретранслятора 9501 уже занят

  1. Найдите, что его занимает:
    sudo ss -ltnp | grep ':9501'
  2. Если это Parlons Node или другой ретранслятор, оставьте его. Вместо этого запустите этот аккаунт без собственного ретранслятора: для установщика одной командой выполните parlons uninstall и установите заново с --no-relay. Для модуля, написанного вручную, замените --relay-port 9501 на --no-relay.
  3. Или дайте этому аккаунту свободный порт с помощью --relay-port <n> (для deploy-parlons-cloud.sh — --port <n>) и откройте этот порт (раздел 28).
  4. Перезапустите сервис и проверьте журнал (раздел 30).

Веб-панель не запустилась

  1. В журнале написано web panel could NOT start on 127.0.0.1:<port>. Найдите, что занимает порт:
    sudo ss -ltnp | grep ':9587'
  2. Выберите свободный loopback-порт. На сервере с Parlons Node используйте 9597 или выше.
  3. На хосте deploy-parlons-cloud.sh отредактируйте ExecStart модуля и добавьте --panel-port 9597 (или --no-panel, чтобы работать без панели). На хосте tenants в модуле уже есть --panel-port 9597; если 9597 занят, выберите там другой начальный порт.
    systemctl edit --full parlons-cloud
    systemctl daemon-reload && systemctl restart parlons-cloud
  4. Тем временем аккаунт работает без панели.

Зашифрованные сид-фразы не открываются (seed.enc needs --unlock или PARLONS_UNLOCK is not set)

  1. Проверьте, что файл разблокировки существует и не пуст, не выводя его содержимое:
    sudo test -s /etc/parlons-tenants.env && echo present
  2. Если его нет, восстановите его из резервной копии вне сети в /etc/parlons-tenants.env с владельцем root и режимом 600:
    sudo install -o root -g root -m 600 ./parlons-tenants.env.backup /etc/parlons-tenants.env
  3. Проверьте, что в модуле есть EnvironmentFile=/etc/parlons-tenants.env и --unlock env:
    systemctl cat parlons-tenants | grep -E 'EnvironmentFile|--unlock'
  4. Перезапустите:
    systemctl restart parlons-tenants

Без исходной парольной фразы зашифрованную сид-фразу открыть нельзя. Вместо этого восстановите tenant из его резервной копии (раздел 22).

tenant-new не выдал приглашение за 60 секунд

  1. Проверьте, что хост работает:
    systemctl status parlons-tenants
  2. Если он остановлен, запустите его командой systemctl start parlons-tenants.
  3. Проверьте журнал для этого tenant (journalctl -u parlons-tenants | grep 'parlons-cloud/alice').
  4. Снова выполните ops/tenant-new.sh root@your.box alice. Для существующей папки команда не заменяет личность.

Сервис размещённых аккаунтов недоступен

  1. На сервере запустите хост tenants:
    systemctl start parlons-tenants
  2. Подождите несколько секунд, пока он запишет пульс (.host-status.json в каталоге tenants).
  3. В Portal откройте Узел → Управление размещёнными аккаунтами и нажмите Обновить.

Tenant получил новую личность после восстановления

  1. Приостановите неожиданный tenant:
    touch /var/lib/parlons-tenants/alice/.stop
  2. Переместите его папку из каталога tenants и держите отдельно, пока не убедитесь, что к ней никто не подключился.
  3. Снова восстановите копию через временную папку, затем переместите её внутрь (раздел 22, «Восстановление tenant из резервной копии»).

Во всех остальных случаях создайте issue на GitHub проекта, указав версию, что вы ожидали, что произошло, и нужные строки журнала (предварительно проверив их на наличие секретов).


33Глоссарий

ТерминЗначение
АккаунтОдна личность Parlons с контактами, чатами, подключёнными устройствами, настройками и (обычно) кошельком, которую хост держит в сети.
Пароль администратора для подключенияЛокальный пароль, защищающий приглашения владельца на хостах с этим сервисом. От 10 до 1024 символов; хранится только в виде проверочных данных.
Адрес (форма MAX#)Постоянный адрес аккаунта. Публичный, длиной в несколько сотен символов, никогда не меняется. Всегда копируется целиком.
Адрес (ключ Mx с @host:port)Более старая форма: ключ личности плюс ретранслятор, который сейчас его обслуживает. Часть host:port меняется.
Встроенный хостингГостевой хостинг только для общения внутри аккаунта владельца (Parlons Node, настольные приложения-узлы, отдельный parlons-cloud).
Резервная копия (.pbk)Зашифрованная копия всего аккаунта (личность, устройства, настройки, контакты, чаты), которую может прочитать любой хост Parlons, а приложение на телефоне — в части личности и контактов.
Аккаунт только для общенияГостевой аккаунт только с чатами, звонками и файлами.
УстройствоВсё, что подключено к аккаунту: телефон, терминал, панель хоста. Доступ можно отозвать, не меняя личность.
Ключ устройстваСобственный ключ подключённого устройства. Это не личность аккаунта.
Ретранслятор каталога / MLSСлужба местоположения, которая определяет, где сейчас находится аккаунт с данным постоянным адресом. Её можно закрепить за одним ретранслятором.
ГостьЧеловек с размещённым аккаунтом на чужом хосте.
ХостКомпьютер и программа, которые держат в сети один или несколько аккаунтов. Так же называют ретранслятор, к которому подключается аккаунт.
Hot-addЗапуск хостом tenants новой папки tenant в течение пяти секунд без перезапуска.
ПриглашениеАдрес и одноразовый код подключения в одной строке, соединённые через ?code=. Одного QR-кода достаточно, чтобы подключить телефон.
Локальное устройство / этот компьютерСобственная веб-панель хоста, работающая как подключённое устройство аккаунта.
Почтовый ящикЗашифрованные сообщения, хранящиеся для того, кто был не в сети.
Участники сетиДругие ретрансляторы, с которыми ретранслятор этого аккаунта обменивается данными каталога.
MxUSDТокен Minima, привязанный к доллару, ID токена 0x7D39745FBD29049BE29850B55A18BF550E4D442F930F86266E34193D89042A90.
ИсходящиеВаши сообщения, ещё не принятые узлом; отправка повторяется с увеличивающимися интервалами.
ВладелецЧеловек, чей аккаунт работает на компьютере и управляет его хостингом.
Приглашение владельцаПриглашение, которое подключает устройство к аккаунту владельца с полным контролем.
Код подключенияОдноразовый код из трёх групп по четыре символа, позволяющий подключить одно устройство.
Ссылка-билет панелиОдноразовая ссылка, которая выполняет вход в браузере в локальную веб-панель.
Parlons CloudПрограмма-хост (parlons-cloud.jar), а также название приложения Portal для Android и функции подключения на iPhone.
Parlons NodeПолный узел Minima со встроенными ретранслятором, шлюзом кошелька и аккаунтом Parlons. К нему можно подключиться из Portal.
parlons-tenantsСервис systemd, запускающий parlons-cloud --tenants.
Ожидают подтвержденияУстройство, запросившее подключение без кода и ожидающее одобрения от существующего устройства.
Общий ретранслятор (pool relay)Ретранслятор, который аккаунт запускает для передачи трафика сети.
PortalТак в этом руководстве называется приложение Parlons Cloud для Android.
Сид-фраза / 24 словаСекретная фраза, которая является личностью и кошельком Minima.
Использование ключа подписиСколько одноразовых подписей использовал ключ кошелька. Значение можно только повышать.
Правило одного владельцаОдна личность работает одновременно только в одном месте.
TenantОдна папка аккаунта на хосте с несколькими аккаунтами.
Парольная фраза разблокировкиПарольная фраза (PARLONS_UNLOCK), которая расшифровывает файлы seed.enc tenants.
Кошелёк для наблюденияПросмотр кошелька по адресу, ключи которого хранятся в другом месте; показывает баланс, но не может тратить средства.
Наверх ↑