Denozordec c14cf3953e
Docker / build (push) Failing after 30s
fix(tests): enhance fetch mocks and type safety in settings and audit tests
Updated fetch mocks in settings and audit test files to improve type safety by specifying the fetch type. Adjusted handling of mock call parameters to ensure proper access to request options. This enhances test reliability and clarity in error handling scenarios.
2026-08-02 19:52:18 +07:00
2026-03-17 23:19:28 +07:00

VPS Tracker

VPS Tracker — это веб-приложение для учёта виртуальных серверов, хостинг-провайдеров, счетов и балансов. Всё работает в браузере: данные хранятся у вас на компьютере или сервере, можно подключить синхронизацию с BILLmanager.

Ниже описано, как запустить готовую программу в Linux с помощью Docker. Отдельно устанавливать Node.js не нужно.


Скриншоты

Дашборд со сводкой по VPS, балансам и графикам:

Дашборд VPS Tracker

Список виртуальных серверов (IP-адреса на скриншоте замаскированы):

Список VPS

Хостеры Аккаунты хостеров
Платежи Активные тарифы
Отчёты Настройки

Содержание

  1. Скриншоты
  2. Что понадобится
  3. Самый простой способ: готовый образ
  4. Запуск через Docker Compose
  5. Production: Traefik + Cloudflare HTTPS
  6. Сборка образа у себя
  7. Сохранение данных и резервная копия
  8. Другой порт и доступ по сети
  9. Обновление программы
  10. Для разработчиков

Что понадобится

  • Компьютер или сервер с Linux (подойдут Ubuntu, Debian, Fedora и другие дистрибутивы).
  • Установленные Docker и плагин Compose. Официальные инструкции: Установка Docker Engine и обзор Compose.

Проверка в терминале:

docker --version
docker compose version

Самый простой способ: готовый образ

Подойдёт, если у вас есть только терминал и вы хотите быстро поднять сервис.

Шаг 1. Скачать образ

docker pull ghcr.io/denozordec/vps-tracker:latest

Если запросили логин: пакет на GitHub может быть закрытым. Войдите в аккаунт GitHub и создайте Personal Access Token с правом read:packages, затем выполните:

echo ВАШ_ТОКЕН | docker login ghcr.io -u ВАШ_ЛОГИН_GITHUB --password-stdin

Либо откройте на GitHub страницу пакета vps-trackerPackage settings и сделайте пакет public — тогда docker pull без входа.

Шаг 2. Папка для данных

Все записи приложения лежат в одном файле базы. Его нужно хранить вне контейнера, иначе при удалении контейнера данные пропадут.

mkdir -p ~/vps-tracker-data

Можно выбрать любой каталог вместо ~/vps-tracker-data — главное, запомнить путь для команды ниже.

Шаг 3. Запуск

Вариант А — в фоне (удобно на сервере, контейнер переживёт закрытие терминала):

docker run -d \
  --name vps-tracker \
  --restart unless-stopped \
  -p 3001:3001 \
  -v ~/vps-tracker-data:/app/data \
  ghcr.io/denozordec/vps-tracker:latest

Вариант Б — в переднем плане (логи видны в терминале, остановка — Ctrl+C):

docker run --rm \
  -p 3001:3001 \
  -v ~/vps-tracker-data:/app/data \
  ghcr.io/denozordec/vps-tracker:latest

Шаг 4. Открыть в браузере

На той же машине откройте:

http://localhost:3001

Если заходите с другого компьютера в сети — подставьте IP сервера: http://192.168.1.10:3001 (ваш адрес может отличаться). На сервере может понадобиться открыть порт в брандмауэре, например для Ubuntu с UFW:

sudo ufw allow 3001/tcp
sudo ufw reload

Остановка фонового контейнера:

docker stop vps-tracker
docker rm vps-tracker

Запуск через Docker Compose

Имеет смысл, если вы склонировали этот репозиторий: в docker-compose.yml указан готовый образ ghcr.io/denozordec/vps-tracker — при up он подтягивается с GitHub Container Registry (локальная сборка не нужна).

git clone https://github.com/denozordec/vps-tracker.git
cd vps-tracker
docker compose up -d

То же через Docker CLI (без Compose) — эквивалент docker-compose.yml: том ./data, порт 3001, переменная PORT=3001.

mkdir -p ./data
docker pull ghcr.io/denozordec/vps-tracker:latest
docker run -d \
  --name vps-tracker \
  --restart unless-stopped \
  -p 3001:3001 \
  -e PORT=3001 \
  -v "$(pwd)/data:/app/data" \
  ghcr.io/denozordec/vps-tracker:latest

В PowerShell из каталога проекта подставьте путь к данным так: -v "${PWD}/data:/app/data".

Данные по умолчанию сохраняются в папку data внутри каталога проекта на диске.

Остановка:

docker compose down

Production: Traefik + Cloudflare HTTPS (Linux)

На VPS с доменом в Cloudflare: Traefik (Let's Encrypt DNS-01) + контейнер VPS Tracker за HTTPS, без публикации порта 3001 наружу.

Пошаговая инструкция, compose и .env: docs/deploy-traefik.md
Файлы: deploy/docker-compose.traefik.yml, deploy/env.traefik.example.

Кратко:

mkdir -p /opt/vps-tracker/data && cd /opt/vps-tracker
curl -fsSL -o docker-compose.yml \
  https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/docker-compose.traefik.yml
curl -fsSL -o .env \
  https://raw.githubusercontent.com/denozordec/vps-tracker/main/deploy/env.traefik.example
nano .env   # CF_DNS_API_TOKEN, LETSENCRYPT_EMAIL, VPS_DOMAIN
docker compose pull && docker compose up -d
curl -fsS https://ВАШ_ДОМЕН/health

Сборка образа у себя

Если нужен свой образ из исходников (после git clone):

cd vps-tracker
docker build -t vps-tracker:local .
mkdir -p ./data
docker run -d \
  --name vps-tracker \
  --restart unless-stopped \
  -p 3001:3001 \
  -v "$(pwd)/data:/app/data" \
  vps-tracker:local

Сохранение данных и резервная копия

Файл базы в примерах выше лежит на хосте:

Способ запуска Где лежит база на диске
docker run с -v ~/vps-tracker-data:/app/data ~/vps-tracker-data/vps-tracker.db
Docker Compose из репозитория ./data/vps-tracker.db в папке проекта

Скопируйте файл vps-tracker.db в безопасное место — это и есть резервная копия. Пока приложение не запущено, можно просто скопировать файл обратно для восстановления.


Другой порт и доступ по сети

Внутри контейнера приложение слушает порт 3001. Сменить внешний порт (например, 8080 снаружи, 3001 внутри):

docker run -d \
  --name vps-tracker \
  --restart unless-stopped \
  -p 8080:3001 \
  -v ~/vps-tracker-data:/app/data \
  ghcr.io/denozordec/vps-tracker:latest

Тогда в браузере: http://localhost:8080

Чтобы сменить и внутренний порт (редко нужно), добавьте -e PORT=8080 и согласуйте с -p, например -p 8080:8080 и -e PORT=8080.


Обновление программы

Если используете образ с GitHub:

docker pull ghcr.io/denozordec/vps-tracker:latest
docker stop vps-tracker
docker rm vps-tracker

Затем снова выполните команду docker run из раздела «Самый простой способ» (том -v ...:/app/data оставьте тот же — данные сохранятся).

При Docker Compose из репозитория:

cd vps-tracker
git pull
docker compose up -d

Файл Compose настроен с pull_policy: always, поэтому при каждом up запрашивается актуальный образ с GHCR.


Для разработчиков

Локальный запуск без Docker: npm install и npm run dev. Подробности по коду, API и синхронизации — в AGENTS.md.

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%