В статье рассказывается об установке и настройке своего сервера NextCloud на FreeBSD 14.2, Nginx, php 8.3, PostgreSQL 17. База данных и web-сервер находятся на этой же машине.
Часть 1. Установка необходимого софта
Самое простое - это поставить всё из портов:
1. PostgreSQL
cd /usr/ports/databases/postgresql17-client
make config, оставляем OPTIMIZED_CFLAGS
cd /usr/ports/databases/postgresql17-server
make config, также оставляем OPTIMIZED_CFLAGS
Настройка и запуск
echo 'postgresql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/postgresql initdb
service postgresql start
passwd postgres
su - postgres
psql
CREATE ROLE nextcloud WITH NOSUPERUSER LOGIN PASSWORD 'password';
CREATE DATABASE nextcloud WITH OWNER nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
\q
exit
2. Redis
cd /usr/ports/databases/redis
make config ничего выделять не надо
echo 'redis_enable="YES"' >> /etc/rc.conf
В файл /usr/local/etc/redis.conf добавьте строки из этого файла
Запускаем:cd /usr/local/etc/rc.d
./redis start
3. Nginx
cd /usr/ports/www/nginx
make config
Ну или просто в каталог /var/db/ports/www_nginx/ положите файл options.
Настройка
Файл /usr/local/etc/nginx/nginx.conf выглядит так
Файл виртуального хоста /usr/local/etc/nginx/vhosts/nextcloud.example.com.conf выглядит так
4. PHP
cd /usr/ports/lang/php84
make config
Создаём файлы конфигурации php:
Файл /usr/local/etc/php-fpm.conf
Файл /usr/local/etc/php.ini
5. Nextcloud
cd /usr/ports/www/nextcloud
make config
IMAGICK ставить не рекомендую, так как он потянет за собой длинную цепочку портов и не факт, что эта цепочка встанет.
Так как порт FreeBSD периодически на пару версий отстаёт от актуального, то можно пойти двумя путями:
- Наплевать на отставание и поставить, что есть - make install clean
В этом случае поставятся все зависимости и в папку /usr/local/www распакуется каталог nextcloud - Поставить актуальную версию. Для этого - make depends (поставятся все необходимые для работы порты)
Затем идём на https://download.nextcloud.com/server/releases/ и скачиваем свежую версию, которую закидываем на сервер и распаковываем в папку /usr/local/www
Естественно не забываем выставить нужные права:chown -R www:www /usr/local/www/nextcloud
Запуск
Прописываем в /etc/rc.conf
echo 'php_fpm_enable="YES"' >> /etc/rc.conf
echo 'nginx_enable="YES"' >> /etc/rc.conf
Стартуем
cd /usr/local/etc/rc.d
./php_fpm start
./nginx start
Часть 2
Так как я ставил Nextcloud вторым путём, пришлось немного костылизировать данный продукт.
На момент 16.12.2024 nextcloud не поддерживал версию php 8.4.1, что лечилось редактированием файла lib/versioncheck.php
Находим строку if (PHP_VERSION_ID >= 80400) {
и меняем на
if (PHP_VERSION_ID >= 80410) {
Обновим. При установке подставим название базы, пользователя и пароля.
После установки проводим окончательную настройку:
1. Добавим кое-что в файл конфигурации Nextcloud, который лежит в папке /usr/local/www/nextcloud/config/. Мой файл выглядит так.
2. Далее придется немного поработать руками:cd /usr/local/www/nextcloud/
chown root:www config/config.php
php occ db:add-missing-columns
php occ db:add-missing-indices
php occ db:convert-filecache-bigint
php occ db:add-missing-primary-keys
php occ maintenance:repair --include-expensive
chown www:www config/config.php
3. Для решения проблемы "Последняя фоновая задача была выполнена в сколько-то часов назад. Похоже, что-то не в порядке."
Создаем файл ./cron.sh с содержимым:#!/bin/sh
chown root:www /usr/local/www/nextcloud/config/config.php
php -f //usr/local/www/nextcloud/cron.php
chown www:www /usr/local/www/nextcloud/config/config.php
Даём ему права на выполнение:chmod 555 ./cron.sh
В файл /etc/crontab вписываем строку*/5 * * * * root /usr/local/www/nextcloud/./cron.sh
4. Проблема "Некоторые файлы не прошли проверку целостности. List of invalid files…"
Ничего страшного, это система ругается на изменённый lib/versioncheck.php