Nextcloud — это открытое программное обеспечение для создания и использования собственного облачного хранилища. Оно позволяет пользователям хранить данные, синхронизировать их между различными устройствами и делиться файлами в рамках удобного и контролируемого интерфейса. Это решение особенно ценно для тех, кто стремится к повышению уровня конфиденциальности и безопасности своих данных по сравнению с общедоступными облачными сервисами. Nextcloud предлагает широкий спектр функционала, включая управление файлами, календарями, контактами, а также возможность интеграции с другими сервисами и приложениями.
В контексте развертывания, Docker предоставляет удобные и эффективные средства для установки и управления Nextcloud. Он использует технологию контейнеризации для изоляции приложений, что упрощает процесс развертывания и конфигурации, а также обеспечивает более легкую масштабируемость и переносимость приложений. Использование Docker в сочетании с Docker Compose позволяет автоматизировать и стандартизировать развертывание приложений, что делает его доступным даже для пользователей без глубоких технических знаний в области серверного администрирования.
В этой статье будет рассмотрена процедура установки Nextcloud с применением Docker Compose. Будет также затронута тема конфигурирования Nginx как обратного прокси и детально рассмотрен процесс получения SSL-сертификата через Certbot, что необходимо для создания защищённого соединения.
cloud
Docker предоставляет обширную среду для разработчиков, предназначенную для эффективного развёртывания и запуска приложений в контейнерах. Docker Compose, являясь инструментом в этом процессе, облегчает оркестровку многоконтейнерных приложений с помощью конфигурационных файлов в YAML-формате, что упрощает компоновку и администрирование комплексных приложений.
Скачайте скрипт установки командой:
curl -fsSL https://get.docker.com -o get-docker.sh
Этот скрипт предназначен для автоматизации процесса установки Docker на различные дистрибутивы Linux.
Запустите скрипт:
sudo sh ./get-docker.sh
Это обеспечит установку Docker и Docker Compose. Опция --dry-run
позволяет просмотреть действия скрипта без их выполнения.
После выполнения скрипта убедитесь, что Docker и Docker Compose корректно установлены. Для этого воспользуйтесь командами:
docker -v
docker compose version
Эти команды должны вывести версии установленных утилит соответственно, подтверждая успешную установку.
Для установки сторонних приложений в системах Linux часто используется директория /opt
. Переходите в эту директорию с помощью команды:
cd /opt
Создайте папку twnextcloud
в директории /opt
. Эта папка будет служить рабочим каталогом для вашего экземпляра Nextcloud:
mkdir twnextcloud
После создания директории перейдите в неё:
cd twnextcloud
Настройки Docker Compose будут определены в файле docker-compose.yml
. Чтобы его отредактировать, можно воспользоваться текстовым редактором, например nano
или vim
, открыв файл следующим образом:
nano docker-compose.yml
В нем следует указать:
version: '2'
volumes:
twnextcloud:
db:
services:
db:
image: mariadb:10.6
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=RootPass
- MYSQL_PASSWORD=NextPass
- MYSQL_DATABASE=nextcloudtw
- MYSQL_USER=nextcloudtw
app:
image: nextcloud
restart: unless-stopped
ports:
- 8081:80
links:
- db
volumes:
- twnextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=NextPass
- MYSQL_DATABASE=nextcloudtw
- MYSQL_USER=nextcloudtw
- MYSQL_HOST=db
Значения параметров:
version: '2'
: Указывает версию Docker Compose, используемую в данной конфигурации. Версия 2 предназначена для более простых и стабильных конфигураций.
volumes
: Определяет два именованных тома: twnextcloud
и db
. Эти тома используются для хранения данных за пределами контейнеров, что обеспечивает их сохранность даже после удаления или перезапуска контейнеров.
services
: Определяет два сервиса — db
и app
.
db
:
image: mariadb:10.6
: Использует образ MariaDB версии 10.6.
restart: unless-stopped
: Автоматический перезапуск сервиса, если он не был остановлен вручную.
command
: Задает специальные параметры запуска MariaDB для оптимизации производительности и безопасности.
volumes
: Связывает именованный том db
с директорией /var/lib/mysql
в контейнере для хранения данных базы данных.
environment
: Устанавливает переменные окружения для конфигурации базы данных, включая пароли и названия базы данных и пользователя.
app
:
image: nextcloud
: Использует образ Nextcloud.
restart: unless-stopped
: Аналогично сервису db
, обеспечивает автоматический перезапуск.
ports
: Пробрасывает порт 8081 хост-системы на порт 80 в контейнере, что позволяет получить доступ к приложению через порт 8081.
links
: Связывает контейнер app
с контейнером db
, обеспечивая взаимодействие между приложением и базой данных.
volumes
: Связывает именованный том twnextcloud
с директорией /var/www/html
в контейнере для хранения данных приложения.
environment
: Устанавливает переменные окружения, связанные с базой данных, аналогичные тем, что в сервисе db
, и указывает хост базы данных.
С помощью этой конфигурации вы создали основу для вашего экземпляра приложения, включая базу данных и само приложение. Теперь можем перейти к запуску и первоначальной настройке.
После описания конфигурации в docker-compose.yml
, пора запустить проект.
В директории twnextcloud
, где находится ваш docker-compose.yml
, выполните эти команды для скачивания образов и запуска контейнеров:
docker compose pull
docker compose up
Команда docker compose pull
сначала загрузит необходимые образы для Nextcloud и MariaDB. После этого docker compose up
запустит контейнеры на основе вашей конфигурации.
Во время первого запуска начнется процесс предварительной настройки. Этот процесс может занять некоторое время.
Как только вы увидите сообщения:
nextcloud-app-1 | New nextcloud instance
nextcloud-app-1 | Initializing finished
— значит, первичная настройка завершена.
После завершения предварительной настройки, вы можете обратиться к приложению из браузера. Введите http://ip-сервера:8081
в адресную строку вашего браузера.
На открывшейся странице вам будет предложено создать учетную запись администратора. Здесь вы вводите желаемое имя пользователя и пароль.
В процессе первичной конфигурации вы также можете выбрать дополнительные приложения для установки.
После первоначальной настройки и проверки его работы через веб-интерфейс, нужно перезапустить контейнеры в фоновом режиме. Это позволит выполнять дальнейшие настройки, такие как установка и конфигурирование обратного прокси.
Если контейнеры все еще работают в интерактивном режиме (после использования docker compose up
без -d
), остановите их, нажав Ctrl+C в терминале.
Для перезапуска контейнеров в фоновом режиме (так, чтобы они продолжали работать в фоне даже после закрытия терминала), используйте команду:
docker compose up -d
Флаг -d
означает «detached mode», что позволяет контейнерам работать независимо от вашего текущего сеанса терминала.
Контейнеры теперь активны и работают в фоне. Если у вас имеется домен для использования с приложением, предстоит настроить сервер так, чтобы он служил обратным прокси.
В качестве обратного прокси часто выбирают Nginx за его производительность и гибкость. Установить его можно, выполнив команду:
sudo apt install nginx
Создайте файл конфигурации Nginx для вашего домена (например, nextcloud-twtest.com
). Используйте текстовый редактор для создания файла в директории /etc/nginx/sites-available/
:
sudo nano /etc/nginx/sites-available/nextcloud-twtest.com
Добавьте в файл следующие директивы:
server {
listen 80;
server_name nextcloud-twtest.com;
location / {
proxy_pass http://localhost:8081;
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;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}
location ^~ /.well-known {
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location /.well-known/acme-challenge { try_files $uri $uri/ =404; }
location /.well-known/pki-validation { try_files $uri $uri/ =404; }
return 301 /index.php$request_uri;
}
}
Эта конфигурация настраивает веб-сервер для проксирования запросов к Nextcloud, работающему на порту 8081, и устанавливает различные заголовки для поддержки проксирования и безопасности.
Вот подробное объяснение основных параметров:
server {
listen 80;
server_name nextcloud-twtest.com;
location / {
proxy_pass http://localhost:8081;
...
}
}
Здесь мы настраиваем сервер для прослушивания порта 80 (стандартный HTTP) и обрабатываем запросы, направленные на nextcloud-twtest.com
. Все запросы перенаправляются на локальный сервер на порту 8081 с помощью proxy_pass
. Это наш контейнер Docker, в котором запущен Nextcloud.
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;
Эти строки гарантируют, что информация о первоначальном запросе (такая как IP-адрес клиента и протокол запроса) передается в приложение, что важно для корректной работы и безопасности.
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
Этот заголовок усиливает безопасность, указывая браузерам использовать только HTTPS для доступа к вашему сайту в течение следующих 180 дней.
location ^~ /.well-known {
...
}
Этот блок обрабатывает специальные запросы к /.well-known URI
, которые часто используются для обнаружения сервисов (например, CalDAV и CardDAV) и проверки владения доменом (например, при получении SSL-сертификатов от Let's Encrypt).
/.well-known/carddav
и /.well-known/caldav
перенаправляются на соответствующие точки входа в Nextcloud.
Запросы к /.well-known/acme-challenge
и /.well-known/pki-validation
обрабатываются для поддержки получения и проверки SSL-сертификатов.
Все остальные запросы к /.well-known
перенаправляются на front-end-контроллер.
Сделайте символическую ссылку на созданный файл конфигурации из директории /etc/nginx/sites-enabled/
:
sudo ln -s /etc/nginx/sites-available/nextcloud-twtest.com /etc/nginx/sites-enabled/
Теперь перезагрузим nginx для применения новой конфигурации:
sudo systemctl restart nginx
Теперь веб-сервер настроен как обратный прокси для приложения, и вы можете обращаться к Nextcloud через ваш домен (если обратиться по домену сейчас, вы увидите ошибку «Access through untrusted domain», ее исправлением мы займемся позже) .
Certbot — это инструмент от Electronic Frontier Foundation (EFF), предназначенный для управления сертификатами Let's Encrypt. Он автоматизирует процесс получения, установки и обновления SSL-сертификатов, что способствует повышению безопасности вашего сайта, обеспечивая защиту данных, передаваемых между сервером и клиентами.
Для установки Certbot и соответствующего плагина для Nginx, используйте команду:
sudo apt install certbot python3-certbot-nginx
Для получения SSL-сертификата для вашего домена и настройки веб-сервера для использования полученного сертификата, выполните команду:
sudo certbot --non-interactive -m admin@nextcloud-twtest.com --agree-tos --no-eff-email --nginx -d nextcloud-twtest.com
В этой команде:
--non-interactive
: Запускает Certbot в режиме без взаимодействия с пользователем.
-m admin@nextcloud-twtest.com
: Указывает адрес электронной почты для уведомлений о сертификате.
--agree-tos
: Соглашается с условиями использования Let's Encrypt.
--no-eff-email
: Отказывается от получения электронных писем от EFF.
--nginx
: Использовать плагин Nginx для автоматической настройки SSL.
-d nextcloud-twtest.com
: Указываем доменное имя, для которого будет выпущен сертификат.
Certbot автоматически скорректирует конфиг Nginx для использования SSL-сертификата, включая перенаправление с HTTP на HTTPS.
После завершения процесса перезапустите Nginx, чтобы применить изменения:
sudo systemctl restart nginx
Теперь ваш экземпляр Nextcloud защищен SSL-сертификатом, и весь трафик между сервером и клиентами будет зашифрован. Это обеспечивает дополнительный уровень безопасности и является важным аспектом для любого веб-приложения, доступного через интернет.
При попытке доступа к Nextcloud через наш доменный адрес вы можете столкнуться с ошибкой «Access through untrusted domain». Это происходит, поскольку первоначальная настройка была выполнена при обращении по IP-адресу сервера.
Так как наше приложение работает в контейнере, для редактирования конфигурационного файла config.php
мы можем использовать один из двух методов: через docker exec
или редактирование Docker Volume. Мы выберем второй метод, так как ранее в docker-compose.yml
были созданы тома для хранения конфигураций.
Для начала необходимо узнать имя интересующего нас тома. Выполните команду:
docker volume ls
Эта команда покажет список всех томов. Нас интересует twnextcloud_twnextcloud
.
Для получения доступа к тому выполните:
docker volume inspect twnextcloud_twnextcloud
В выводе команды найдите строку Mountpoint
, которая покажет путь до тома.
Перейдите в него, используя:
cd /var/lib/docker/volumes/twnextcloud_twnextcloud/_data
Перейдите в директорию config
и откройте файл config.php
для редактирования:
cd config
nano config.php
В файле найдите и измените следующие строки:
Измените overwrite.cli.url
с http://ip_сервера:8081
на https://ваш_домен
.
В секции trusted_domains
замените ip_сервера:8081
на ваш домен.
Добавьте строку 'overwriteprotocol' => 'https'
, сразу после overwrite.cli.url
, чтобы обеспечить загрузку всех ресурсов по HTTPS.
После внесения изменений сохраните файл config.php
(в nano
это делается комбинацией клавиш Ctrl + O), а затем выйдите из редактора (Ctrl + X).
После сохранения изменений в config.php
вы можете обратиться к приложению по указанному вами домену и убедиться, что ошибка «Access through untrusted domain» больше не возникает.
Поднимите Nextcloud на серверах Timeweb Cloud
Процедура установки Nextcloud при помощи Docker Compose значительно упрощает процесс, минимизируя необходимость ручной настройки и подготовки сервера, делая его доступным даже для пользователей без глубоких знаний в области серверного администрирования.
Мы обсудили этапы инсталляции Docker и Docker Compose, составления конфигурационного файла docker-compose.yml
и инициализации работы контейнеров. Кроме того, были изучены методы настройки Nginx как обратного прокси для повышения безопасности и производительности сервиса. В дополнение, мы изложили процедуру получения SSL-сертификата с использованием Certbot, что важно для защиты трафика между сервером и клиентами.
Следуя представленным инструкциям, можно быстро настроить собственный экземпляр Nextcloud, который будет функционировать в контейнеризованной среде, обеспечивая легкость масштабирования и удобство в обслуживании. Это решение подходит как для личного использования, так и для небольших компаний, стремящихся к повышению уровня контроля и безопасности данных.
Обновил nextcloud до версии 30.0.2.2: docker-compose down docker-compose pull docker-compose up -d Обновление прошло успешно. Однако после обновления проверка безопасности и параметров не выполняется. В логах журнала следующие ошибки:
DbalException An exception occurred while executing a query: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away Exception running check OCA\Settings\SetupChecks\SchedulingTableSize: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
DbalException An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known Exception running check OCA\Settings\SetupChecks\SupportedDatabase: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known
DbalException An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known
Can not determine user count for OC\User\Database
DbalException An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known Exception running check OCA\Settings\SetupChecks\PushService: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known
Invalid defaultDaemonConfig data provided to provideInitialState by settings
До обновления ошибок не было. Проверка безопасности и параметров выполнялась успешно. Подскажите что делать.
Добрый день!
Воспроизвести проблему не удалось. При обновлении с версии 29.0.9 до 30.0.2 ситуация не воспроизводится.
На официальном форуме Nextcloud пользователи с похожей проблемой отмечали, что им помогло обновление и перезагрузка системы. Рекомендуем попробовать этот вариант.
Не помогает. Ерунда какая то, не пойму в чем причина. В таком случае подскажите, может быть имеет смысл полностью переустановить nextcloud в docker? Подскажите как это сделать. Имею ввиду начиная с удаления и заканчивая переустановкой его в docker.
Добрый день!
Перед тем как переустанавливать Nextcloud, стоит создать резервную копию, чтобы не потерять файлы и данные. Как создать резервную копию писали в комментарии пользователю denkarter чуть ниже.
После создания резервной копии выполните следующие шаги:
— Остановите контейнеры:
— Измените имена volumes в docker-compose.yaml. Это нужно, чтобы создать новые тома для новой установки, сохранив старые на случай, если потребуется вернуть все обратно.
— Запустите контейнеры снова:
Это создаст новую, чистую установку Nextcloud. Перейдите в браузер и завершите настройку нового экземпляра.
— Восстановите данные из резервной копии:
Для восстановления базы данных:
Для восстановления данных:
Если что-то пойдет не так, вы всегда можете откатиться к предыдущей версии, вернув старые имена volumes в
docker-compose.yaml
.как настроить certbot на автоматическое обновление сертификата?
Добрый день!
Автоматическое обновление сертификата можно настроить с помощью crontab. Воспользуйтесь инструкцией и добавьте в crontab такую задачу:
Эта команда проверяет сертификаты каждый вторник в 03:30 утра. Если до истечения срока действия останется менее 30 дней, certbot выполнит автоматическое обновление, а затем перезагрузит Nginx.
Здравствуйте! Подскажите пожалуйста как установить свой сертификат для nginx файлы с ключём и сертификатом создал, пути для сертификата и ключа в конфиге тоже, но при входе через https выдаёт - 403 Forbidden, при создании сертификата через certbot то же самое, думаю что проблема в конфиге nginx, root и index.
Добрый день!
Настроить сертификат вы можете по этой инструкции. Скорее всего, проблема связана не с самим сертификатом, а с конфигурацией Nginx. Возможных причин может быть несколько, поэтому лучше создать тикет в поддержку — коллеги проверят, из-за чего возникает ошибка.
не знаю, как правильно скопировать код и прислать сюда
У меня сервер не поднимается, ничего не понимаю, всё перепробовал уже
Server version: 10.8.2-MariaDB-1:10.8.2+maria~focal-log db-1 | key_buffer_size=134217728 db-1 | read_buffer_size=131072 db-1 | max_used_connections=0 db-1 | max_threads=153 db-1 | thread_count=0 db-1 | It is possible that mysqld could use up to db-1 | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 468004 K bytes of memory db-1 | Hope that's ok; if not, decrease some variables in the equation. db-1 | db-1 | Thread pointer: 0x0 db-1 | Attempting backtrace. You can use the following information to find out db-1 | where mysqld died. If you see no messages after this, something went db-1 | terribly wrong... db-1 | stack_bottom = 0x0 thread_stack 0x49000 db-1 | Printing to addr2line failed db-1 | mariadbd(my_print_stacktrace+0x30)[0x5556398c6de0] db-1 | mariadbd(handle_fatal_signal+0x45c)[0x5556393e80dc] app-1 | [Fri Nov 01 07:35:57.826228 2024] [mpm_prefork:notice] [pid 1:tid 1] AH00163: Apache/2.4.62 (Debian) PHP/8.2.25 configured -- resuming normal operations db-1 | linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0x7fff8926c7b0] app-1 | [Fri Nov 01 07:35:57.830594 2024] [core:notice] [pid 1:tid 1] AH00094: Command line: 'apache2 -D FOREGROUND' db-1 | mariadbd(+0xc81624)[0x5556396f1624] db-1 | mariadbd(+0xd44424)[0x5556397b4424] db-1 | mariadbd(+0xd4549c)[0x5556397b549c] db-1 | mariadbd(+0xc47924)[0x5556396b7924] db-1 | mariadbd(+0x6512c0)[0x5556390c12c0] db-1 | mariadbd(+0xc169c8)[0x5556396869c8] db-1 | mariadbd(_Z24ha_initialize_handlertonP13st_plugin_int+0x74)[0x5556393eafac] db-1 | mariadbd(+0x78b164)[0x5556391fb164] db-1 | mariadbd(_Z11plugin_initPiPPci+0x81c)[0x5556391fc17c] db-1 | mariadbd(+0x686408)[0x5556390f6408] db-1 | mariadbd(_Z11mysqld_mainiPPc+0x40c)[0x5556390fba44] db-1 | /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe8)[0x7fff888e4090] db-1 | mariadbd(+0x680c80)[0x5556390f0c80] db-1 | The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains db-1 | information that should help you find out what is causing the crash. db-1 | Writing a core file... db-1 | Working directory at /var/lib/mysql db-1 | Resource Limits: db-1 | Limit Soft Limit Hard Limit Units
db-1 | Max cpu time unlimited unlimited seconds
db-1 | Max file size unlimited unlimited bytes
db-1 | Max data size unlimited unlimited bytes
db-1 | Max stack size 8388608 unlimited bytes
db-1 | Max core file size unlimited unlimited bytes
db-1 | Max resident set unlimited unlimited bytes
db-1 | Max processes unlimited unlimited processes db-1 | Max open files 1048576 1048576 files
db-1 | Max locked memory 8388608 8388608 bytes
db-1 | Max address space unlimited unlimited bytes
db-1 | Max file locks unlimited unlimited locks
db-1 | Max pending signals 30841 30841 signals
db-1 | Max msgqueue size 819200 819200 bytes
db-1 | Max nice priority 0 0
db-1 | Max realtime priority 0 0
db-1 | Max realtime timeout unlimited unlimited us
db-1 | Core pattern: core
Добрый день!
По логам сложно точно определить причину, но, вероятно, проблема связана с нехваткой памяти. Для стабильной работы MariaDB требуется минимум 512 МБ ОЗУ.
хорошо бы знать для какой версии Linux это написано, на Debian 12 не работает
Добрый день!
Инструкция актуальна для большинства операционных систем, поддерживающих Docker. Отличия могут возникнуть только при установке и настройке Nginx и сертификатов.
Обратили внимание, что в статье было нарушено форматирование некоторых команд, из-за чего они сливались в одну строку. Это, вероятно, и стало причиной ошибки. Мы исправили форматирование, и сейчас команды отображаются корректно.
Также проверили инструкцию на Debian 12 — проблем не обнаружено. Единственное уточнение: перед выполнением команды:
необходимо установить пакет
curl
, выполнив следующую команду:Если у вас всё равно возникают ошибки, пожалуйста, опишите их подробнее. На каком этапе и какая именно ошибка появляется?
Здравствуйте! Столкнулся с проблемой на этапе получения сертификата подскажите как решить. Вот ошибка: Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems: Domain: nextcloud-twtest.com Type: dns Detail: DNS problem: NXDOMAIN looking up A for nextcloud-twtest.com - check that a DNS record exists for this domain; DNS problem: NXDOMAIN looking up AAAA for nextcloud-twtest.com - check that a DNS record exists for this domain Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.
Добрый день!
Судя по ошибке, вы не изменили значение
server_name
в конфигурационном файле Nginx. Проверьте, пожалуйста, правильно ли вы указали свой домен в файле:Также при выпуске сертификата убедитесь, что вы указываете свой домен и почтовый ящик. В команде:
замените значения после флагов
-m
и-d
на ваш почтовый ящик и домен соответственно.Очень толково, спасибо! Вопрос: если нужно указать свое размещение тома с данными (NEXTCLOUD_DATADIR), указывать надо так:
... services: app: environment: - NEXTCLOUD_DATADIR=/my_own_datapath
или по-другому?
Здравствуйте. Благодарю за подробную инструкцию, всё получилось!
Подскажите, пожалуйста, как делать бэкапы nextcloud, установленный по данной инструкции?
Добрый день! Для создания бэкапов можно использовать эти команды:
Первые две создают архивы директорий
/var/www/html/data
и/var/www/html/config
в директории, в которой запускаются. Для создания используется промежуточный контейнер с Ubuntu, который удаляется после создания архивов. Последняя команда создает дамп базы данных в директории, в которой запущена команда.Восстановить Nextcloud из полученных резервных копий можно следующими командами:
Первые две команды восстанавливают директории
data
иconfig
из архивов, размещенных в директории, в которой запускаются команды. Для восстановления также используется промежуточный контейнер. Последняя команда восстанавливает базу данных из дампа. При восстановлении файлов стоит останавливать контейнеры командойdocker compose down
.Отличная статья! Все по полочкам. Единственное пока не получается интегрировать с OnlyOffice в контейнере, если у Вас будет отдельная статья, или дополнение к этому, было бы замечательно.
Спасибо за Ваши труды!
Чтобы большие файлы заливались в nextcloud нужно добавить в конфигурацию
client_max_body_size 512M;
и перегрузить службу nginx
Добрый день. Установил в докере NC. Все работает, но выдает ошибки:
Этот сервер не подключён к интернету: множество конечных устройств не могут быть доступны. Это означает, что не будут работать некоторые функции, такие как подключение внешнего хранилища, уведомления об обновлениях или установка сторонних приложений. Так же могут не работать удалённый доступ к файлам и отправка уведомлений по электронной почте. Для использования всех возможностей рекомендуется разрешить серверу доступ в Интернет.
Уже и в фаервол порты пробрасывал, и вообще отключал, не могу понять, почему нет доступа образа к интернет
Добрый день! Попробуйте выполнить следующее:.
docker exec -it bash
Имя контейнера можно узнать, выполнив
docker ps
.В файле
/etc/resolv.conf
поменять значениеnameserver
на, например, DNS Гугла:8.8.8.8
.Перезапустить контейнеры и проверить, сохраняется ли проблема:
docker compose restart
Остался вопрос в том, как включить вот эту настройку внутри докера?
he external storage FTP/FTPS needs the allow_url_fopen PHP setting to be set to 1. When having connection problems make sure that it is not set to 0 in your php.ini. See PHP version and information to learn how to find the right php.ini file to edit.
Значение
allow_url_fopen
выставлено вOn
по умолчанию в образе, который использовался в статье.Если у вас значение в
Off
, можно попробовать изменить его таким образом:(
twnextcloud-app-1
— имя контейнера docker)On
:Проблема такая. В начале по инструкции запустил все на vmware, удалось зайти и установить приложения. Далее тоже самое решил сделать на VPS сервере и после того, как пытаюсь завести учетную запись, страница выдает ошибку "Страница недоступна, Сайт 1xx.xxx.xxx.35 не отправил данные. ERR_EMPTY_RESPONSE". Сервер Убунты сообщает "db-1 | 2024-03-07 3:59:45 15 [Warning] Aborted connection 15 to db: "nextcloudtw" user: "nextcloudtw" host: "172.18.0.3" (Got an error reading communication packets)".
Подскажите, в чем собственно проблема?
Добрый день! У данной ошибки может быть много причин. На Github есть обсуждение с разными вариантами решения.
Например, вы можете попробовать удалить и заново создать том с базой данных. Учитывайте, что все данные в БД будут удалены.
Для этого найдите имя тома:
Далее остановите контейнеры, если они запущены:
Теперь удалите том:
А после запустите контейнеры вновь:
Кроме того, проверьте журналы логов MySQL и Docker. Это может помочь определить причину вашей проблемы.
Как обновить nextcloud установленный по данной инструкции?
Добрый день! Если в
docker-compose.yml
не указана версия Nextcloud, значит подразумевается, что используется последняя версия. В этом случае, для обновления, остановите контейнеры командой:Далее обновите образ:
И наконец, создайте и запустите контейнер с обновленным образом:
образы обновились, однако при переходе на сайт постоянно висит надпись «Этот сервер находится в режиме технического обслуживания, которое может занять некоторое время. Эта страница обновится автоматически когда сервер снова станет доступен.
Обратитесь к вашему системному администратору если это сообщение не исчезает или появляется неожиданно.»
Как ее убрать?
Попробуйте выполнить:
Где
twnextcloud-app-1
— имя контейнера, которое можно узнать, выполнивdocker ps
При попытке получения сертификата certbot выдает ошибку
Что делать?
При перезагрузке хоста ошибка исчезла, однако certbot не может выпустить ssl сертификат. При запуске команды sudo
certbot --non-interactive -m admin@nextcloud-twtest.com --agree-tos --no-eff-email --nginx -d nextcloud-twtest.com
(почту и адрес сайта естественно поменял на свои), certbot выдает ошибку:IP адрес у меня белый и статический. Порты 80 и 443 через роутер проброшены к хосту на порт 8081.
При переходе на мой домен, доступ к nextcloud из внешней сети работает только по протоколу http.
Делал все в точности по вашей инструкции. Помогите понять в чем дело. Спасибо.
Проверили несколько раз с разными условиями, но никак не получается воспроизвести ошибку :confused: На всех тестовых установках всегда получаем 200 OK. Возможно, поможет полный лог из файла /var/log/letsencrypt/letsencrypt.log. Вы можете прислать его нам content@timeweb.cloud — передадим автору и попробуем еще раз разобраться.
отправил
К сожалению, так и не смогли определить причину ошибки. Можем предположить пару вариантов:
спасибо. Решение № 1 помогло. Однако nextcloud заметно медленный. Необходимо настроить фоновые задания через cron и настроить memcache. Также для повышения производительности nextcloud просит установить модуль PHP- bz2. Есть инструкция как это сделать?
Что касается PHP-bz2, то модуль можно установить, выполнив команды в директории с
docker-compose
:Добрый день! Обсуждение о том, как лучше настроить выполнение cron-задач, ведется в коммьюнити Nextcloud. Наиболее простой способ — запускать скрипт через
docker exec
при помощи cron на хосте.Для решения проблемы с memcache вы можете добавить Redis в
docker-compose.yml
, чтобы файл выглядел так:После этого перезапустите контейнеры.
Отличная статья. Очень помогла. Подскажите следующий вопрос. Примонтировал к хосту usb hdd. Как его пробросить в nextcloud установленный по данной инструкции? Мне это необходимо для расширения дискового пространства nextcloud.
Добрый день! Для решения этой задачи можно использовать плагин "External storage". Для установки нажмите на иконку пользователя (администратора) в правом верхнем углу -> Apps -> в поиске найдите "External storage support" и установите плагин.
Далее, в
docker-compose.yml
нужно добавить диск как том. Делается это в разделеapp
.Где
/run/media/user/SSD
— точка монтирования диска.После выполните:
Теперь, в Nextcloud нажмите на иконку пользователя в правом верхнем углу -> "Administration settings" -> "External storage " (тут важно выбрать пункт именно из раздела "Administration", так как выше, в "Personal", тоже есть этот пункт)
В настройке "External storage" укажите имя, тип "Local", "Authentication" — none, "Configuration" —
/var/www/html/data/ssd
и сохраните, нажав на галочку.Теперь диск будет доступен во всех файлах, в папке
ssd
.Спасибо. Заработало
Пробую добавить это приложение, оно скачивается, но при включение отображается сообщение, что возникла ошибка и все, где смотреть логи и что может быть за ошибка?
Спасибо за качественную инструкцию .
В параметрах сервера - внешнее хранилище вот такое сообщение .
Модуль «smbclient» не установлен, монтирование «"SMB/CIFS", "SMB/CIFS с использованием реквизитов входа"» невозможно.
В инете решение для свежих версий найти не удалось . Как добавить в докер ?
Добрый день! Установить smbclient можно таким образом:
docker ps
, чтоб узнать имя контейнера.docker exec -it twnextcloud-app-1 bash
.apt update
и устанавливаем smbclient командойapt install smbclient
.docker compose restart
в директории сdocker-compose.yml
.Стоит отметить, что при пересоздании контейнера настройка не сохранится, поэтому лучше добавить все это в Dockerfile. Это выходит за рамки приведенной инструкции, но вы можете найти примеры на Гитхабе.
разобрался, не то приложение пытался включить