Denozordec a32f3420f9
Docker / build (push) Failing after 2m55s
Update README and server configuration for VPS Tracker application
- Renamed project from "React + Vite" to "VPS Tracker" and updated the README to reflect the application's purpose and usage instructions.
- Added detailed Docker setup instructions, including two methods for running the application: using Docker Compose and standalone Docker.
- Implemented static file serving in the server configuration to serve the frontend from the 'dist' directory if it exists, enhancing the application's deployment capabilities.
2026-03-20 23:24:32 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00
2026-03-17 23:19:28 +07:00

VPS Tracker

Приложение для учёта виртуальных серверов (VPS), провайдеров, аккаунтов, платежей и балансов. Поддерживается синхронизация с BILLmanager 6 API.

Ниже — основной сценарий запуска в Docker. Разработка без контейнера описана кратко в конце. Подробности по коду и доменам — в AGENTS.md.


Запуск в Docker

Требования

Важно: база данных

SQLite хранится в файле data/vps-tracker.db внутри рабочей директории приложения (/app/data в контейнере). Без тома (volume) при удалении или пересборке контейнера база пропадёт. Для постоянного хранения всегда монтируйте каталог на хосте в /app/data.

Вариант 1: Docker Compose (рекомендуется)

В корне репозитория:

docker compose up --build

Откройте в браузере: http://localhost:3001 (и API на том же хосте, префикс /api/...).

Данные БД по умолчанию пишутся в ./data на хосте (см. docker-compose.yml). Каталог data можно создать заранее или он появится при первом запуске.

Остановка: Ctrl+C или в другом окне:

docker compose down

Вариант 2: только Docker (без Compose)

Сборка образа:

docker build -t vps-tracker:local .

Запуск с томом для БД (пример для PowerShell — подставьте свой путь):

New-Item -ItemType Directory -Force -Path .\data | Out-Null
docker run --rm -p 3001:3001 -v "${PWD}\data:/app/data" vps-tracker:local

Снова открывайте http://localhost:3001.

Переменные окружения

Переменная Описание По умолчанию
PORT Порт HTTP внутри контейнера 3001

При смене PORT пробросьте тот же порт наружу, например -p 8080:8080 и -e PORT=8080.

Образ из GitHub Container Registry (GHCR)

После push в ветку main workflow .github/workflows/docker.yml собирает образ и публикует его в GHCR.

  1. На GitHub: Packages → пакет образа для этого репозитория (при необходимости сделайте пакет public, чтобы не требовалась авторизация для docker pull).
  2. Имя образа: ghcr.io/<владелец>/<репозиторий>:latest (в GHCR имя образа задаётся в нижнем регистре).

Пример (замените OWNER и REPO):

docker pull ghcr.io/OWNER/REPO:latest
New-Item -ItemType Directory -Force -Path .\data | Out-Null
docker run --rm -p 3001:3001 -v "${PWD}\data:/app/data" ghcr.io/OWNER/REPO:latest

Обновление: снова docker pull ...:latest и перезапуск контейнера.

CI/CD (кратко)

  • Pull request в main: в GitHub Actions выполняется только сборка образа (проверка, что Dockerfile валиден).
  • Push в main: сборка и push в GHCR с тегами latest и SHA коммита.

Локальная разработка (без Docker)

npm install
npm run dev

Поднимаются Vite (фронт) и Express (API); API по умолчанию на порту 3001, прокси настроен в vite.config.js.

Сборка фронта отдельно: npm run build. Для проверки production-сборки на одном порту: после npm run build запустите npm run server — сервер отдаст статику из dist, если каталог существует.


Документация для разработчиков

  • AGENTS.md — структура репозитория, сущности, где искать sync, тарифы, API.
S
Description
No description provided
Readme
3.8 MiB
Languages
TypeScript 89.1%
JavaScript 4.8%
Shell 4.2%
RouterOS Script 1.6%
CSS 0.2%