Files
SHiNE-server/deploy/SETUP_SERVER_FROM_ZERO.md
T

3.4 KiB

Настройка 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. Пользователь и пакеты

sudo apt update
sudo apt install -y openjdk-17-jre-headless rsync caddy
sudo useradd -m -s /bin/bash player || true

3. Каталоги

Production:

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:

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 пример:

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 пример:

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:

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"
    }
  }
}

Проверка:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl restart caddy
curl -I https://t2.shineup.me

6. Первый deploy

Из репозитория:

bash deploy/scripts/test_t2_server.sh
bash deploy/scripts/test_t2_ui.sh

Для production перед этими командами обязательно обновить deploy/backup/archive/.