2025-08-08 18:08:29 +07:00
2025-07-07 13:07:26 +07:00

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

  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 с двумя вариантами интерфейса.

Доступные образы

Основная версия (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.
S
Description
No description provided
Readme
4.5 MiB
Languages
JavaScript 89.4%
Dockerfile 4.7%
CSS 3.9%
HTML 2%