SHA256
Что сделано: вычистили неиспользуемый user-settings sync/DM sync хвост, сохранили сборку, обновили bundle.sh так, чтобы gradle-wrapper.jar всегда попадал в архив. Проверено: compileJava и deploy на t2 (server + UI). Не проверяли: полные интеграционные сценарии, ручные UI-флоу и продовый деплой.
72 lines
4.1 KiB
Markdown
72 lines
4.1 KiB
Markdown
# AGENTS.md — SHiNE-server
|
||
|
||
## Назначение
|
||
|
||
SHiNE-server — серверная часть мессенджера SHiNE: WebSocket-сервер, хранение блоков блокчейна
|
||
пользователей, доставка личных сообщений (DM), звонки.
|
||
|
||
## Структура папок
|
||
|
||
- `shine-server-net-server/` — точка входа, запуск HTTP/WS сервера
|
||
- `shine-server-net-protocol/` — обработчики операций (RPC и события WS)
|
||
- `shine-server-db/` — DAO, SQL-схема, PostgreSQL runtime
|
||
- `shine-server-blockchain/` — логика хранения и проверки блоков блокчейна
|
||
- `shine-server-crypto/` — криптографические утилиты
|
||
- `shine-server-config/` — конфигурация сервера
|
||
- `shine-server-log/` — логирование
|
||
- `shine-server-geo/` — геолокация IP
|
||
|
||
## Настройка сервера в Solana (Solana PDA)
|
||
|
||
Серверный аккаунт SHiNE регистрируется в Solana в виде `user_pda` с флагом `is_server=true`.
|
||
В PDA хранятся:
|
||
|
||
- **адрес сервера** (URL WebSocket/HTTPS, например `https://shineup.me/ws`);
|
||
- **список серверов синхронизации** (`sync_servers`) — логины SHiNE-аккаунтов серверов-партнёров,
|
||
с которыми синхронизируются пользовательские блокчейны;
|
||
- **корневой ключ** сервера (`root_key`).
|
||
|
||
Клиенты читают PDA напрямую из Solana, чтобы узнать адрес сервера и при необходимости подключиться.
|
||
|
||
**Управление серверной PDA выполняется через Web-панель администратора:**
|
||
|
||
```
|
||
shine-UI/server-ui.html
|
||
```
|
||
|
||
Страницы:
|
||
- `shine-UI/server-ui/create-server-pda.html` — первичная регистрация серверного аккаунта;
|
||
- `shine-UI/server-ui/update-server-pda.html` — обновление адреса или списка sync_servers.
|
||
|
||
Для регистрации нужен полный keyBundle (root + device + blockchain).
|
||
Для обновления — только root + device (blockchain-ключ не нужен).
|
||
|
||
Актуальные адреса программ Solana (devnet):
|
||
- `shine_users`: `SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6`
|
||
- `shine_payments`: `SHiPmXbM9Fs9khzRUW3TGKsS2W84aqaXTxs3ZkajW9v`
|
||
|
||
Подробнее: `docs/Инициализация_Solana_регистрации/README.md`
|
||
|
||
## Синхронизация с партнёрскими серверами
|
||
|
||
Сервер должен синхронизировать блоки пользовательских блокчейнов с
|
||
серверами-партнёрами из `sync_servers`. DM между партнёрами не реплицируются:
|
||
они доставляются только на первый access-сервер получателя.
|
||
Детали: `docs/Blockchain/sync-between-servers.md`
|
||
|
||
## Деплой
|
||
|
||
- Основные инструкции по деплою находятся в `../deploy/AGENTS.md`.
|
||
- Deploy выполнять shell-скриптами из `../deploy/scripts/`.
|
||
- Gradle deploy-задачи не использовать: Gradle остаётся для сборки и локального запуска.
|
||
- Любые изменения на production (`shineup.me`, `server2.shineup.me`) делать только после отдельного явного подтверждения пользователя.
|
||
- Перед production deploy обязательно обновить/проверить backup в `deploy/backup/archive/`.
|
||
|
||
Логи на проде:
|
||
- `/home/player/SHiNE/shine-server/logs/app.log`
|
||
- `/home/player/SHiNE/shine-server/logs/call-delivery-events.log`
|
||
|
||
## Язык
|
||
|
||
Комментарии в коде, документация и commit-сообщения — на русском языке.
|