# 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-аккаунтов серверов-партнёров, с которыми синхронизируются блоки и DM; - **корневой ключ** сервера (`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` ## Синхронизация с партнёрскими серверами Сервер должен синхронизировать блоки блокчейна и DM с серверами-партнёрами из `sync_servers`. Детали: `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-сообщения — на русском языке.