Перейти к содержанию

alatyr-taverna — фэнтезийная таверна

Автоматически составлено агентом 06.08.2026 из github-audit.md, nginx-vps-configs.md и данных GitHub API. Требует ревью: путь к статическим файлам на VPS, домен, актуальность содержимого.

Быстрая справка

Параметр Значение
Тип Статический сайт (React 19 + TypeScript + Vite 8)
GitHub https://github.com/oswold1979/alatyr-taverna (приватный)
Домен alatyr-taverna.ru
Хост VPS 46.17.99.183
Путь на VPS /opt/alatyr/dist/ (уточнить, может быть /var/www/alatyr-taverna/)
Веб-сервер nginx на VPS
Автодеплой ⛔ отсутствует (задача 30)

Стек

Из package.json: - React 19.2.7 + react-dom + react-router-dom 7 - TypeScript ~6.0.2 - Vite 8.1.1 (dev + build) - ESLint 10 + typescript-eslint 8

Структура репо

alatyr-taverna/
├── src/
│   ├── App.tsx, App.css
│   ├── main.tsx, index.css
│   ├── assets/       # изображения, статика
│   ├── components/   # реиспользуемые React-компоненты
│   ├── content/      # тексты (диалоги NPC, описания)
│   └── pages/        # страницы (главный зал, диалоги)
├── public/           # статика для index.html
├── index.html
├── package.json
├── tsconfig.*.json
├── vite.config.ts
└── eslint.config.js

Скрипты

npm run dev      # локальный dev-сервер Vite (HMR)
npm run build    # tsc -b && vite build → dist/
npm run lint     # eslint .
npm run preview  # предпросмотр prod-сборки локально

Контент (по коммитам)

Последние 5 коммитов (июль 2026): 1. 1150e99 (16.07) — Initial commit: базовая заготовка Алатырь 2. cd47361 (16.07) — Этап 2: главный зал, трактир Алатырь, Бажен Бухало 3. 85a2a5b (16.07) — Этап 3: диалог с Баженом, дерево из 15 реплик, полировка 4. 6442523 (16.07) — Этап 3.5: добавлен NPC Сыч — вор в тёмном углу 5. cb624f1 (17.07) — Этап 3.6: добавлен NPC Сильвиэн — эльфийка у окна

Формат: SPA с диалогами NPC, вероятно текстовый квест / roleplay-сайт.

Деплой на VPS (текущий, ручной)

Пока делается вручную:

# Локально
git clone git@github.com:oswold1979/alatyr-taverna.git
cd alatyr-taverna
npm ci
npm run build
# dist/ — готовые статические файлы

# Копируем на VPS
scp -r dist/* oswold@46.17.99.183:/opt/alatyr/dist/

nginx на VPS (см. nginx-vps-configs.md):

server {
    listen 443 ssl http2;
    server_name alatyr-taverna.ru;

    root /opt/alatyr/dist;
    index index.html;

    # SPA-паттерн: все URL идут в index.html
    location / {
        try_files $uri $uri/ /index.html;
    }

    gzip on;
    gzip_types text/css application/javascript;

    # TLS от Let's Encrypt
    ssl_certificate     /etc/letsencrypt/live/alatyr-taverna.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/alatyr-taverna.ru/privkey.pem;
}

GitHub Actions — история

Текущее состояние (06.08.2026): каталог .github/workflows/ в репозитории отсутствует. Workflow был удалён.

Прошлые runs (25.07.2026): - 2 запуска "Deploy Alatyr" — оба закончились failure

Задача 30 в TODO — восстановить автодеплой: - Взять за образец deploy.yml из alatyr-service - Адаптировать под React/Vite (нужен npm run build вместо Node.js server) - Задеплоить готовый dist/ на VPS по SSH через rsync или scp - Прописать SSH_PRIVATE_KEY и KNOWN_HOSTS в GitHub Secrets репозитория

Предлагаемый workflow (draft)

# .github/workflows/deploy.yml
name: Deploy alatyr-taverna

on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Setup SSH
        uses: webfactory/ssh-agent@v0.9.0
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

      - name: Add VPS to known_hosts
        run: |
          mkdir -p ~/.ssh
          ssh-keyscan -H 46.17.99.183 >> ~/.ssh/known_hosts

      - name: Deploy to VPS
        run: |
          rsync -avz --delete dist/ oswold@46.17.99.183:/opt/alatyr/dist/

      - name: Reload nginx (если нужно)
        run: |
          ssh oswold@46.17.99.183 "sudo systemctl reload nginx"

Требуемые GitHub Secrets в репозитории: - SSH_PRIVATE_KEY — приватный ключ, публичная часть в ~oswold/.ssh/authorized_keys на VPS

Проверка после деплоя

# Извне
curl -I https://alatyr-taverna.ru
# Должен вернуть 200 OK, Content-Type: text/html

# На VPS
ls -la /opt/alatyr/dist/
sudo tail -f /var/log/nginx/alatyr-taverna-access.log

Известные проблемы

  • Workflow удалён — надо восстановить (задача 30)
  • Дубликат репо alatyr — старая копия, к архивации (задача 31a)
  • Путь /opt/alatyr/dist/ требует sudo для записи → workflow должен деплоить от юзера oswold, с sudo только для reload nginx (или через deploy-user с ограниченным sudoers)

Связанные файлы