Garage WebUI — это простой веб-интерфейс администратора для Garage, самостоятельно размещаемого, S3-совместимого распределённого сервиса объектного хранилища. Этот инструмент предоставляет удобный графический интерфейс для управления кластером Garage, корзинами (buckets), ключами доступа и объектами.
Основные возможности:
- Мониторинг состояния здоровья Garage
- Управление кластером и топологией
- Создание, обновление и просмотр информации о корзинах
- Встроенный браузер объектов и корзин
- Создание и назначение ключей доступа
Ссылки:
- GitHub проекта: https://github.com/khairul169/garage-webui
- Документация Garage: https://garagehq.deuxfleurs.fr/
- Репозиторий Garage: https://git.deuxfleurs.fr/Deuxfleurs/garage
Предварительные требования
Перед установкой убедитесь, что у вас:
- Установлен и настроен сервер Garage (минимум версия 2.0.0)
- В конфигурации Garage включен Admin API
- Открыты необходимые порты (по умолчанию 3909 для WebUI)
- Доступ к файлу конфигурации
garage.toml
Установка через Docker Compose
Если вы используете Docker для Garage, удобнее всего установить WebUI вместе с Garage через Docker Compose.
Создайте файл docker-compose.yml:
services:
garage:
image: dxflrs/garage:v2.0.0
container_name: garage
volumes:
- ./garage.toml:/etc/garage.toml
- ./meta:/var/lib/garage/meta
- ./data:/var/lib/garage/data
restart: unless-stopped
ports:
- 3900:3900 # S3 API
- 3901:3901 # RPC
- 3902:3902 # S3 Web
- 3903:3903 # Admin API
webui:
image: khairul169/garage-webui:latest
container_name: garage-webui
restart: unless-stopped
volumes:
- ./garage.toml:/etc/garage.toml:ro
ports:
- 3909:3909
environment:
API_BASE_URL: "http://garage:3903"
S3_ENDPOINT_URL: "http://garage:3900"
Запустите контейнеры:
docker-compose up -d
Настройка конфигурации Garage
Garage WebUI использует значения из конфигурационного файла Garage. Убедитесь, что ваш файл garage.toml содержит необходимые параметры:
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
metadata_auto_snapshot_interval = "6h"
replication_factor = 3
compression_level = 2
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "localhost:3901" # Обязательно!
rpc_secret = "YOUR_RPC_SECRET_HERE"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.domain.com"
[s3_web] # Опционально, для веб-хостинга корзин
bind_addr = "[::]:3902"
root_domain = ".web.domain.com"
index = "index.html"
[admin] # Обязательно!
api_bind_addr = "[::]:3903"
admin_token = "YOUR_ADMIN_TOKEN_HERE"
metrics_token = "YOUR_METRICS_TOKEN_HERE"
Важные параметры:
rpc_public_addr— должен быть указан- Секция
[admin]— обязательна для работы WebUI admin_token— используется для аутентификации
Переменные окружения
WebUI поддерживает следующие переменные окружения для настройки:
| Переменная | Описание | По умолчанию |
|---|---|---|
CONFIG_PATH |
Путь к файлу конфигурации Garage | /etc/garage.toml |
BASE_PATH |
Базовый путь или префикс для WebUI | — |
API_BASE_URL |
URL Admin API Garage | Из конфигурации |
API_ADMIN_KEY |
Ключ Admin API | Из конфигурации |
S3_REGION |
Регион S3 | Из конфигурации |
S3_ENDPOINT_URL |
URL конечной точки S3 | Из конфигурации |
PORT |
Порт для WebUI | 3909 |
Если WebUI не может загрузить параметры из конфигурации, вы можете задать их вручную через переменные окружения.
Настройка аутентификации
По умолчанию WebUI не требует аутентификации. Чтобы включить базовую аутентификацию, используйте переменную окружения AUTH_USER_PASS.
Генерация хеша пароля
Создайте имя пользователя и хеш пароля с помощью утилиты htpasswd:
htpasswd -nbBC 10 "YOUR_USERNAME" "YOUR_PASSWORD"
Если команда htpasswd не найдена, установите пакет apache2-utils:
# Debian/Ubuntu
sudo apt install apache2-utils
# RHEL/CentOS
sudo yum install httpd-tools
Применение аутентификации
Добавьте переменную окружения в секцию webui в файле docker-compose.yml:
webui:
image: khairul169/garage-webui:latest
environment:
AUTH_USER_PASS: "username:$2y$10$DSTi9o..."
API_BASE_URL: "http://garage:3903"
S3_ENDPOINT_URL: "http://garage:3900"
После изменений перезапустите контейнеры:
docker-compose down
docker-compose up -d
Настройка обратного прокси (Nginx)
Рекомендуется разместить WebUI за обратным прокси-сервером для защиты SSL/TLS.
Пример конфигурации Nginx
server {
listen 80;
server_name garage-ui.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name garage-ui.example.com;
ssl_certificate /etc/letsencrypt/live/garage-ui.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/garage-ui.example.com/privkey.pem;
location / {
proxy_pass http://localhost:3909;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
После настройки перезапустите Nginx:
sudo systemctl restart nginx
Использование WebUI
После успешной установки откройте веб-браузер и перейдите по адресу:
http://your-ip:3909(без прокси)https://garage-ui.example.com(с прокси)
В интерфейсе вы сможете:
- Просматривать статус кластера Garage
- Управлять топологией и узлами
- Создавать и настраивать корзины (buckets)
- Просматривать и загружать объекты
- Управлять ключами доступа
- Назначать права доступа
Устранение неполадок
WebUI не загружается
Проблема: Данные не загружаются в интерфейсе.
Решения:
- Убедитесь, что используется последняя версия Garage (минимум 2.0.0)
- Проверьте, что Admin API включен в конфигурации Garage
- Убедитесь, что порт 3903 (Admin API) доступен
- Проверьте логи:
docker logs garage-webuiилиjournalctl -u garage-webui
Ошибка подключения к Admin API
Проблема: WebUI не может подключиться к Garage Admin API.
Решения:
- Проверьте, что параметр
admin.api_bind_addrуказан вgarage.toml - Убедитесь, что
admin_tokenкорректный - Для Docker проверьте, что контейнеры находятся в одной сети
- Попробуйте задать
API_BASE_URLиAPI_ADMIN_KEYвручную
Порты заняты
Проблема: Порт 3909 уже используется.
Решение: Измените порт в docker-compose.yml:
webui:
image: khairul169/garage-webui:latest
environment:
PORT: 8080
ports:
- 8080:8080
После изменений перезапустите контейнер:
docker-compose up -d webui
Безопасность
Рекомендации по безопасности:
- Всегда включайте аутентификацию в продакшене
- Используйте HTTPS через обратный прокси
- Ограничьте доступ к WebUI по IP-адресам через firewall
- Регулярно обновляйте Garage и WebUI до последних версий
- Не публикуйте токены и секреты в открытых репозиториях
- Используйте сильные пароли для
admin_token
Обновление
Для обновления до последней версии:
# Получите последнюю версию образа
docker-compose pull webui
# Пересоздайте контейнер
docker-compose up -d webui
Или обновите все сервисы сразу:
docker-compose pull
docker-compose down
docker-compose up -d
Разработка
Если вы хотите собрать проект самостоятельно или добавить новые функции:
# Клонируйте репозиторий
git clone https://github.com/khairul169/garage-webui.git
cd garage-webui
# Установите зависимости
pnpm install
cd backend && pnpm install && cd ..
# Запустите в режиме разработки
pnpm run dev # Запустит клиент и сервер одновременно
# Или запустите отдельно
pnpm run dev:client # Клиентская часть
cd backend && pnpm run dev:server # Серверная часть
Технологии:
- Frontend: TypeScript + React
- Backend: Go
Полезные ссылки
- Официальная документация Garage: https://garagehq.deuxfleurs.fr/documentation/
- GitHub Garage WebUI: https://github.com/khairul169/garage-webui
- Быстрый старт Garage: https://garagehq.deuxfleurs.fr/documentation/quick-start/
- Issues и поддержка: https://github.com/khairul169/garage-webui/issues
Заключение
Garage WebUI предоставляет удобный графический интерфейс для управления S3-совместимым хранилищем Garage. Благодаря простой установке через Docker или бинарные файлы, вы можете быстро развернуть веб-интерфейс и начать управление вашим кластером через браузер.








