Настройка Linux

🔧 Как подключить S3-хранилище как директорию данных в Nextcloud Hub 10 (31.0.5)

Nextcloud Hub 10 (v31.0.5) поддерживает хранение данных на внешнем S3-хранилище, что позволяет масштабировать систему, оптимизировать хранение и упростить бэкап. В этой инструкции мы подключим S3-бакет (например, Yandex Cloud, Selectel или MinIO) как основную директорию datadirectory.

📋 Что понадобится

  • Установленный Nextcloud Hub 10 (31.0.5)
  • Доступ к S3-совместимому бакету
  • Linux-сервер с правами sudo
  • Пользователь www-data
  • Установленный s3fs

⚠️ Шаг 0. Перевод Nextcloud в режим обслуживания

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on

☁️ Шаг 1. Установка s3fs

sudo apt update
sudo apt install -y s3fs

Если пакет недоступен:

sudo add-apt-repository universe
sudo apt update
sudo apt install -y s3fs

🔐 Шаг 2. Создание файла с ключами доступа

sudo mkdir -p /home/www-data
echo "ACCESS_KEY:SECRET_KEY" | sudo tee /home/www-data/.passwd-s3fs
sudo chown www-data:www-data /home/www-data/.passwd-s3fs
sudo chmod 600 /home/www-data/.passwd-s3fs

📁 Шаг 3. Создание точки монтирования

sudo mkdir -p /media/nextcloud
sudo chown www-data:www-data /media/nextcloud
sudo chmod 755 /media/nextcloud

🔐 Важно: разрешение FUSE для других пользователей

Чтобы s3fs или goofys могли использовать опцию allow_other, необходимо включить её в настройках FUSE:

sudo nano /etc/fuse.conf

Найдите строку:

#user_allow_other

И раскомментируйте её (уберите #):

user_allow_other

Сохраните файл (Ctrl + O, Enter, Ctrl + X). Без этой настройки монтирование с allow_other завершится ошибкой.

💾 Шаг 4. Монтирование S3-бакета

sudo -u www-data s3fs my-bucket-name /media/nextcloud \
  -o passwd_file=/home/www-data/.passwd-s3fs \
  -o url=https://storage.yandexcloud.net \
  -o use_path_request_style \
  -o uid=33 \
  -o gid=33 \
  -o allow_other

📦 Шаг 5. Перенос текущих данных (если уже есть)

sudo rsync -av /var/www/nextcloud/data/ /media/nextcloud/
sudo chown -R www-data:www-data /media/nextcloud

⚙️ Шаг 6. Обновление config.php

sudo nano /var/www/nextcloud/config/config.php

Измените параметр:

'datadirectory' => '/media/nextcloud',

📌 Шаг 7. Создание файла .ncdata

echo "# Nextcloud data directory" | sudo -u www-data tee /media/nextcloud/.ncdata

🗂 Шаг 8. Переиндексация данных

sudo -u www-data php /var/www/nextcloud/occ files:scan --all

Или для конкретного пользователя:

sudo -u www-data php /var/www/nextcloud/occ files:scan admin

✅ Шаг 9. Выход из режима обслуживания

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

🔁 (Опционально) Автомонтирование S3 через systemd

Создайте файл:

sudo nano /etc/systemd/system/s3fs-nextcloud.mount

Добавьте:

[Unit]
Description=Mount S3 bucket to /media/nextcloud
After=network-online.target
Wants=network-online.target

[Mount]
What=my-bucket-name
Where=/media/nextcloud
Type=fuse.s3fs
Options=_netdev,passwd_file=/home/www-data/.passwd-s3fs,url=https://storage.yandexcloud.net,use_path_request_style,uid=33,gid=33,mp_umask=0022,allow_other

[Install]
WantedBy=multi-user.target

Активируйте:

sudo systemctl daemon-reexec
sudo systemctl enable --now s3fs-nextcloud.mount

✅ Готово!

Теперь Nextcloud использует ваш S3-бакет как основную директорию для хранения пользовательских данных.

📎 Полезные ссылки

0

Автор публикации

не в сети 1 неделя

Илья Коковин

Аватар 0
Комментарии: 0Публикации: 35Регистрация: 30-05-2019
Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
*
Генерация пароля