SHA256
133 lines
3.6 KiB
Markdown
133 lines
3.6 KiB
Markdown
# Настройка 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=<SERVER_LOGIN>
|
|
db.url=jdbc:postgresql://127.0.0.1:5432/<APP_DB>
|
|
db.user=<APP_DB_USER>
|
|
db.password=CHANGE_ME
|
|
server.ui.indexPath=/home/player/SHiNE/shine-ui/index.html
|
|
server.info.url=https://<DOMAIN>
|
|
server.info.origin=production
|
|
solana.cluster=mainnet-beta
|
|
```
|
|
|
|
Test/devnet пример:
|
|
|
|
```properties
|
|
server.port=7102
|
|
server.SHiNE.login=<SERVER_LOGIN>
|
|
db.url=jdbc:postgresql://127.0.0.1:5432/<APP_DB>
|
|
db.user=<APP_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
|
|
}
|
|
|
|
# Зашифрованные вложения DM. Этот route должен идти в Java, а не в SPA.
|
|
@dmfiles path /dm-files /dm-files/*
|
|
handle @dmfiles {
|
|
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/`.
|