📂 S3 Lists Manager
Веб-интерфейс для удобного управления файлами в S3-совместимом хранилище Yandex Cloud. Приложение позволяет в реальном времени просматривать, добавлять, редактировать, удалять и массово изменять записи в следующих файлах:
- domains.txt - список доменов и их шлюзов
- asns.txt - список AS номеров и их шлюзов
- servers.json - список серверов с расширенной информацией (IP, DNS, страна, провайдер, тип туннеля)
✨ Возможности
- Три режима работы: Управление списками доменов, AS-номеров и серверов через вкладки.
- CRUD операции: Полный набор действий: создание, чтение, обновление и удаление записей.
- Поиск в реальном времени: Мгновенная фильтрация списков по мере ввода.
- Массовая замена: Быстрое обновление шлюзов для сотен записей в один клик.
- Сохранение в S3: Все изменения сохраняются непосредственно в файлах в бакете Yandex Cloud.
- Docker-контейнеризация: Готовый
Dockerfileдля сборки и запуска приложения в изолированном окружении. - CI/CD с Gitea Actions: Автоматическая сборка и публикация Docker-образа в Gitea Registry при пуше в
main. - Современный интерфейс: Полностью интегрированный Tabler UI с официальными компонентами.
🛠️ Технологический стек
| Область | Технология |
|---|---|
| Фронтенд | React + Vite |
| @tabler/core (UI-компоненты для Tabler версии) | |
| Tabler Icons (иконки) | |
| Axios (HTTP-клиент) | |
| Бэкенд | Node.js + Express |
| AWS SDK for JS (для работы с Yandex Cloud S3) | |
| CI/CD | Docker, Gitea Actions |
🏗️ Архитектура
Приложение состоит из двух основных частей: фронтенд на React и бэкенд на Node.js/Express, которые взаимодействуют через REST API.
graph TD
subgraph Browser
A[React Frontend]
end
subgraph Server
B(Node.js/Express API)
end
subgraph Yandex Cloud
C{S3 Bucket}
D1[domains.txt]
D2[asns.txt]
D3[servers.json]
end
A -- HTTP Requests --> B
B -- AWS SDK --> C
C --- D1
C --- D2
🚀 Установка и запуск
Предварительные требования
- Node.js (v20.x или выше)
- npm или yarn
- Доступ к бакету Yandex Cloud S3 и сервисный аккаунт с правами на чтение и запись.
1. Настройка бэкенда
- Перейдите в директорию
backend:cd backend - Создайте файл
.envна основе примера.env.example. Заполните его вашими учетными данными от Yandex Cloud S3:# .env S3_ACCESS_KEY_ID=ВАШ_КЛЮЧ_ДОСТУПА S3_SECRET_ACCESS_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ S3_BUCKET_NAME=ИМЯ_ВАШЕГО_БАКЕТА - Установите зависимости:
npm install
2. Настройка фронтенда
- Перейдите в директорию
frontend:cd ../frontend - Установите зависимости:
npm install
3. Запуск приложения
-
Запустите бэкенд-сервер. В директории
backendвыполните:npm startСервер запустится на
http://localhost:3001. -
Запустите фронтенд. В новой вкладке терминала, в директории
frontend, выполните:npm run devПриложение будет доступно по адресу
http://localhost:5173и будет автоматически проксировать API-запросы на бэкенд.
🐳 Docker
Приложение полностью готово к запуску в Docker с двумя вариантами интерфейса.
Доступные образы
Основная версия (main branch)
git.shts.su/[repository]:latest
Tabler версия (tabler branch)
git.shts.su/[repository]:tabler
Быстрый запуск
Основная версия
docker run -d \
--name s3-lists-manager \
-p 3001:3001 \
--env-file ./backend/.env \
git.shts.su/[repository]:latest
Tabler версия
docker run -d \
--name s3-lists-manager-tabler \
-p 3002:3001 \
--env-file ./backend/.env \
git.shts.su/[repository]:tabler
Локальная сборка
Для сборки образа выполните команду в корневой директории проекта:
docker build -t s3-lists-manager .
Запуск контейнера
Для запуска контейнера необходимо передать переменные окружения. Это можно сделать с помощью флага -e или через --env-file.
docker run --rm -p 3001:3001 --env-file ./backend/.env s3-lists-manager
После этого приложение будет доступно по адресу http://localhost:3001.
Docker Compose
Создайте файл docker-compose.yml:
version: '3.8'
services:
s3-lists-manager:
image: git.shts.su/[repository]:latest
container_name: s3-lists-manager
ports:
- "3001:3001"
restart: unless-stopped
env_file:
- ./backend/.env
s3-lists-manager-tabler:
image: git.shts.su/[repository]:tabler
container_name: s3-lists-manager-tabler
ports:
- "3002:3001"
restart: unless-stopped
env_file:
- ./backend/.env
Запуск:
docker-compose up -d
Подробная документация по Docker образам доступна в файле DOCKER.md.
⚙️ API Endpoints
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/domains |
Получить список всех доменов. |
POST |
/api/domains |
Сохранить изменения в domains.txt. |
GET |
/api/asns |
Получить список всех AS. |
POST |
/api/asns |
Сохранить изменения в asns.txt. |
GET |
/api/servers |
Получить список всех серверов. |
POST |
/api/servers |
Сохранить изменения в servers.json. |