# Настройка SHiNE-сервера с нуля Инструкция описывает базовую подготовку существующего Linux/VPS-хоста под SHiNE server + UI. Привязка должна идти к домену, а не к IP. ## 1. DNS Создать DNS-запись домена: - production: `shineup.me` или `server2.shineup.me`; - test/devnet: `t1.shineup.me` ... `t4.shineup.me`. После смены физического сервера достаточно обновить DNS. ## 2. Пользователь и пакеты ```bash sudo apt update sudo apt install -y openjdk-17-jre-headless rsync caddy sudo useradd -m -s /bin/bash player || true ``` ## 3. Каталоги Production: ```bash mkdir -p /home/player/SHiNE/shine-server/data mkdir -p /home/player/SHiNE/shine-server/logs mkdir -p /home/player/SHiNE/shine-ui ``` Test/devnet: ```bash mkdir -p /home/player/tX/server/data mkdir -p /home/player/tX/server/logs mkdir -p /home/player/tX/UI ``` ## 4. application.properties Каждый сервер должен иметь локальный внешний конфиг в рабочей директории сервиса. Актуальные production-значения для `shineup.me` и `server2.shineup.me` смотреть в `deploy/PRODUCTION_SERVERS.md`. Ниже именно шаблон для нового контура, а не снимок текущего production. Production пример: ```properties server.port=7070 server.SHiNE.login= db.url=jdbc:postgresql://127.0.0.1:5432/ db.user= db.password=CHANGE_ME server.ui.indexPath=/home/player/SHiNE/shine-ui/index.html server.info.url=https:// server.info.origin=production solana.cluster=mainnet-beta ``` Test/devnet пример: ```properties server.port=7102 server.SHiNE.login= db.url=jdbc:postgresql://127.0.0.1:5432/ db.user= db.password=CHANGE_ME server.ui.indexPath=/home/player/t2/UI/index.html server.info.url=https://t2.shineup.me server.info.origin=devnet solana.cluster=devnet solana.rpcUrl=https://devnet.helius-rpc.com/?api-key=0614c894-52d8-4ddc-bbbc-0947ce5ec3a4 ``` Рекомендуемый образ PostgreSQL для новых контуров: `postgres:18`. Для `postgres:18+` bind-mount нужно делать на `/var/lib/postgresql`, а не на старый путь `/var/lib/postgresql/data`. Если указан `db.url` и в выбранной БД ещё нет таблицы `db_schema_version`, сервер сам создаст runtime-схему PostgreSQL при первом старте. ## 5. Caddy Минимальный site block: ```caddyfile t2.shineup.me { encode zstd gzip @ws path /ws /ws/* handle @ws { reverse_proxy 127.0.0.1:7102 } handle { root * /home/player/t2/UI try_files {path} /index.html file_server header -Etag header { Cache-Control "no-store, no-cache, must-revalidate, max-age=0" Pragma "no-cache" Expires "0" } } } ``` Проверка: ```bash sudo caddy validate --config /etc/caddy/Caddyfile sudo systemctl restart caddy curl -I https://t2.shineup.me ``` ## 6. Первый deploy Из репозитория: ```bash bash deploy/scripts/test_t2_server.sh bash deploy/scripts/test_t2_ui.sh ``` Для production перед этими командами обязательно обновить `deploy/backup/archive/`.