📂 S3 Lists Manager
Веб-интерфейс для удобного управления текстовыми файлами (domains.txt, asns.txt) в S3-совместимом хранилище Yandex Cloud. Приложение позволяет в реальном времени просматривать, добавлять, редактировать, удалять и массово изменять записи в этих файлах.
✨ Возможности
- Два режима работы: Управление списками доменов и AS-номеров через вкладки.
- CRUD операции: Полный набор действий: создание, чтение, обновление и удаление записей.
- Поиск в реальном времени: Мгновенная фильтрация списков по мере ввода.
- Массовая замена: Быстрое обновление шлюзов для сотен записей в один клик.
- Сохранение в S3: Все изменения сохраняются непосредственно в файлах в бакете Yandex Cloud.
- Docker-контейнеризация: Готовый
Dockerfileдля сборки и запуска приложения в изолированном окружении. - CI/CD с Gitea Actions: Автоматическая сборка и публикация Docker-образа в Gitea Registry при пуше в
main.
🛠️ Технологический стек
| Область | Технология |
|---|---|
| Фронтенд | React + Vite |
| React-Bootstrap (UI-компоненты) | |
| 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]
end
A -- HTTP Requests --> B
B -- AWS SDK --> C
C --- D1
C --- D2
🚀 Установка и запуск
Предварительные требования
- Node.js (v18.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.
Сборка образа
Для сборки образа выполните команду в корневой директории проекта:
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.
⚙️ API Endpoints
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/domains |
Получить список всех доменов. |
POST |
/api/domains |
Сохранить изменения в domains.txt. |
GET |
/api/asns |
Получить список всех AS. |
POST |
/api/asns |
Сохранить изменения в asns.txt. |