Обзор развертывания RustFS на сервере¶
Предварительные требования¶
Для успешного развертывания приложения требуются следующие условия:
-
Операционная система: Ubuntu.
-
Права доступа: Права суперпользователя (
root) для установки системных пакетов и управления Docker. -
Доменное имя: Настроенный домен, соответствующий шаблону (см. раздел ниже).
-
Порты: Должны быть открыты порты 80 (HTTP) и 443 (HTTPS) в брандмауэре для доступа к веб-интерфейсу и API.
FQDN итоговой панели на домене hostkey.in¶
Для работы веб-консоли и API используется автоматическое формирование доменного имени по следующему шаблону:
| Параметр | Значение |
|---|---|
| Префикс | rustfs |
| Домен | hostkey.in |
| Полный шаблон | rustfs{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В процессе установки создаются следующие директории для хранения конфигураций, данных и сертификатов:
-
/root/rustfs— рабочая директория приложения и файлы окружения (.env). -
/data/rustfs— хранилище объектов (данных) RustFS. -
/root/nginx— конфигурационные файлы Docker Compose для прокси-сервера. -
/data/nginx— системные файлы Nginx и настройки SSL. -
/data/nginx/user_conf.d— пользовательские конфигурации виртуальных хостов. -
/data/nginx/letsencrypt— сертификаты SSL (Certbot).
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Очистка старых репозиториев Docker и установка необходимых системных пакетов (
ca-certificates,curl). -
Установка среды выполнения: Установка Docker и настройка окружения.
-
Развертывание контейнера приложения:
-
Создание директорий для данных с установленными правами доступа (UID/GID 10001).
-
Генерация файла
.envс учетными данными (RUSTFS_ACCESS_KEY). -
Запуск контейнера RustFS через Docker Compose.
-
Настройка проксирования и SSL:
-
Настройка Nginx для перенаправления трафика (HTTP -> HTTPS).
-
Получение SSL-сертификатов через Certbot.
-
Конфигурирование автоматического обновления сертификатов каждые 8 дней.
Версия приложения: docker.io/rustfs/rustfs:1.0.0.
Права доступа и безопасность¶
-
Пользователь: Приложение работает от имени пользователя с UID
10001для обеспечения безопасности данных. -
Брандмауэр (UFW): Автоматически разрешаются входящие соединения на порты 80/tcp и 443/tcp.
-
Безопасность контейнера: В Docker Compose включена опция
no-new-privileges:true, ограничивающая возможности повышения привилегий внутри контейнера.
Базы данных¶
В данной конфигурации база данных не используется; приложение работает как объектное хранилище, сохраняя данные непосредственно в файловой системе по пути /data/rustfs.
Контейнеры Docker и их запуск¶
Приложение использует два основных компонента:
RustFS¶
-
Образ:
docker.io/rustfs/rustfs:1.0.0 -
Имя контейнера:
rustfs -
Порты:
-
9000(S3 и Admin API) — доступен локально через Nginx. -
9001(Web Console) — доступен локально через Nginx. -
Тома:
/data/rustfsв контейнере привязан к/data/rustfsна хосте. -
Переменные окружения: Настройки путей, адресов и ключей доступа.
-
Политика перезапуска:
unless-stopped.
Nginx Proxy (Certbot)¶
-
Образ:
jonasal/nginx-certbot:6.2.0-nginx1.31.0 -
Сеть: Режим
host. -
Тома:
-
/etc/letsencryptдля хранения сертификатов. -
Конфигурации Nginx из
/data/nginx/user_conf.d. -
Политика перезапуска:
unless-stopped.
Инструкция по обновлению приложения¶
Для обновления основного приложения RustFS необходимо выполнить следующие действия:
-
Перейти в рабочую директорию приложения:
-
Обновить образ и перезапустить контейнер:
Расположение конфигурационных файлов и данных¶
| Тип данных | Путь на хосте |
|---|---|
Конфигурация приложения (.env) | /root/rustfs/.env |
| Данные (объекты) | /data/rustfs |
| Конфигурация Nginx | /data/nginx/user_conf.d/{domain}.conf |
| Docker Compose приложения | /root/rustfs/compose.yml |
Доступные порты для подключения¶
-
Веб-интерфейс (HTTPS):
443(через домен). -
S3 API:
9000(доступ через прокси по HTTPS). -
Административный доступ: Через веб-консоль на порту
443.
Запуск, остановка приложения¶
Управление контейнером RustFS осуществляется командами Docker Compose из директории /root/rustfs:
-
Запуск:
-
Остановка:
-
Проверка статуса: