Files
router-lists-ui/README.md
T
denozord 50aab806cc
Publish Docker image / build-and-push (push) Successful in 1m22s
docs: Remove Docker publish badge from README
2025-07-07 16:43:52 +07:00

6.2 KiB
Raw Blame History

📂 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. Настройка бэкенда

  1. Перейдите в директорию backend:
    cd backend
    
  2. Создайте файл .env на основе примера .env.example. Заполните его вашими учетными данными от Yandex Cloud S3:
    # .env
    S3_ACCESS_KEY_ID=ВАШ_КЛЮЧ_ДОСТУПА
    S3_SECRET_ACCESS_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ
    S3_BUCKET_NAME=ИМЯ_ВАШЕГО_БАКЕТА
    
  3. Установите зависимости:
    npm install
    

2. Настройка фронтенда

  1. Перейдите в директорию frontend:
    cd ../frontend
    
  2. Установите зависимости:
    npm install
    

3. Запуск приложения

  1. Запустите бэкенд-сервер. В директории backend выполните:

    npm start
    

    Сервер запустится на http://localhost:3001.

  2. Запустите фронтенд. В новой вкладке терминала, в директории 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.