По темата съм пъсал на Инсталиране и настройка на собствен облак. Не е зле информативно да прегледате статията. Сега ще инсталираме облака върху Debian 12. Първо да инсталираме необходимите за тази цел пакети.
apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu libmagickcore-dev php-redis php-memcached
Не се притеснявайте, че имате част от пакетите инсталирани. Тях просто ще ги пропусне системата и ще сложи само тези които нямате. Да проверим версията на PHP и инсталираните пакети.
php --version php -m
Следващата стъпка е редактиране на php.ini.
nano /etc/php/8.2/apache2/php.ini ;date.timezone = date.timezone = Europe/Sofia memory_limit = 512M upload_max_filesize = 500M post_max_size = 600M max_execution_time = 300 file_uploads = On allow_url_fopen = On display_errors = Off output_buffering = Off zend_extension=opcache opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1 systemctl restart apache2
mariadb -u root -p CREATE DATABASE nextcloud_db; CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword'; GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost; FLUSH PRIVILEGES; SHOW GRANTS FOR nextclouduser@localhost; +----------------------------------------------------------------------------------------------------------------------+ | Grants for nextclouduser@localhost | +----------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `nextclouduser`@`localhost` IDENTIFIED BY PASSWORD '*98AA1D1CBE27FFF36829AE7E604EBEF2C9695BEC' | | GRANT ALL PRIVILEGES ON `nextcloud_db`.* TO `nextclouduser`@`localhost` | +----------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.000 sec) quit
apt install curl unzip -y cd /var/www/ curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip unzip nextcloud.zip chown -R www-data:www-data nextcloud rm nextcloud.zip
nano /etc/apache2/conf-available/nextcloud.conf # phpMyAdmin default Apache configuration Alias /nextcloud /var/www/nextcloud <Directory /var/www/nextcloud> Options Indexes FollowSymLinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> a2enconf nextcloud Enabling conf nextcloud. To activate the new configuration, you need to run: systemctl reload apache2 apachectl configtest Syntax OK systemctl reload apache2
Обърнете внимание!!! AllowOverride All, трябва да същесвува за да може да се пренасочват адреси. На по-късен етап ще ремонтираме именно тази грешка. Да проверим работата на NextCloud. Пишем в браузъра https://my.tlan.net/nextcloud
Добра практика е данните от облака да се съхраняват на отделен диск. За целата: - конфигураме втория диск
lsblk parted /dev/sdb (parted) unit mib (parted) mklabel gpt (parted) p mkpart Partition name? []? nextcloud ### Име на дяла File system type? [ext2]? ext4 ### Тип на файловата система ext4 Start? 1 ### 1 ознчава от началото на диска End? -1 ### -1 означава до края на диска (parted) p (parted) q lsblk /usr/sbin/mkfs.ext4 /dev/sdb1 nano /etc/fstab UUID=38c4e62f-3449-417a-b3b7-2d5570fde65e /var/www/nextcloud/data ext4 errors=remount-ro 0 1
https://www.howtoforge.com/step-by-step-installing-nextcloud-on-debian-12/● Your web server is not properly set up to resolve `.well-known` URLs, failed on: `/.well-known/caldav` For more details see the documentation ↗.
За да отстраним грешката трябва да е активиран модула mod_rewrite. Ако не е активиран, то тогава:
a2enmod rewrite systemctl restart apache2
Сега можем да пренасочваме адреси чрез .htaccess или чрез комндата Redirect. По подразбиране Apache забранява използването на .htaccess. За целата добавихме в блока <Directory> реда AllowOverride All и така разрешихме да се ползва. Да проверим:
nano /etc/apache2/conf-available/nextcloud.conf Alias /nextcloud /var/www/nextcloud <Directory /var/www/nextcloud> Options Indexes FollowSymLinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory>
До тук всичко е правилно. Да оправим и самата грешка:
nano /etc/apache2/mods-available/ssl.conf ### Най-отгоре добавяме: Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo
Проверяваме за грешката, трябва да изчезне.
Ако пък в PHP не стигат настройките за размера на файла "Administration settings >> System >> PHP Version, Upload max size" и т.н.
nano /var/www/nextcloud/.htaccess php_value memory_limit 2G php_value upload_max_filesize 16G php_value post_max_size 16G php_value max_input_time 3600 php_value max_execution_time 3600 <IfModule mod_headers.c> <IfModule mod_setenvif.c> <IfModule mod_fcgid.c>
В този ред на мисли добавяме параметрите които са ни необходими.
● Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks. За повече подробности вижте документацията ↗. Сървърът няма конфигуриран начален час на прозореца за поддръжка. Това означава, че ресурсоемките ежедневни фонови задания също ще се изпълняват по време на основното ви използване. Препоръчваме да го настроите на време на ниска употреба, така че потребителите да са по-малко засегнати от натоварването, причинено от тези тежки задачи. ● One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations. Налични са една или повече mimetype миграции. Понякога се добавят нови типове mime за по-добра обработка на определени типове файлове. Мигрирането на mimetypes отнема много време при по-големи екземпляри, така че това не се прави автоматично по време на надграждане. Използвайте командата `occ maintenance:repair --include-expensive`, за да извършите миграциите ● Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them. Missing indices: "systag_by_objectid" in table "systemtag_object_mapping". За повече подробности вижте документацията ↗. Открити са някои липсващи незадължителни индекси. Понякога се добавят нови индекси (от Nextcloud или инсталирани приложения), за да се подобри производителността на базата данни. Добавянето на индекси понякога може да отнеме известно време и временно да навреди на производителността, така че това не се прави автоматично по време на надграждане. След като индексите бъдат добавени, заявките към тези таблици трябва да бъдат по-бързи. Използвайте командата `occ db:add-missing-indices`, за да ги добавите. Липсващи индекси: "systag_by_objectid" в таблица "systemtag_object_mapping". ● The database is used for transactional file locking. To enhance performance, please configure memcache, if available. За повече подробности вижте документацията ↗. Базата данни се използва за транзакционно заключване на файлове. За да подобрите производителността, моля, конфигурирайте memcache, ако е наличен. ● No memory cache has been configured. To enhance performance, please configure a memcache, if available. За повече подробности вижте документацията ↗. Не е конфигуриран кеш памет. За да подобрите производителността, моля, конфигурирайте memcache, ако има такъв. ● Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add "default_phone_region" with the respective ISO 3166-1 code of the region to your config file. За повече подробности вижте документацията ↗. Вашата инсталация няма зададен телефонен регион по подразбиране. Това е необходимо за валидиране на телефонни номера в настройките на профила без код на държава. За да разрешите номера без код на държава, моля, добавете „default_phone_region“ със съответния ISO 3166-1 код на региона към вашия конфигурационен файл. ● You have not set or verified your email server configuration, yet. Please head over to the "Basic settings" in order to set them. Afterwards, use the "Send email" button below the form to verify your settings. За повече подробности вижте документацията ↗. Все още не сте задали или потвърдили конфигурацията на своя имейл сървър. Моля, преминете към „Основни настройки“, за да ги зададете. След това използвайте бутона „Изпращане на имейл“ под формата, за да потвърдите настройките си.
https://www.youtube.com/watch?v=ORnaW984d88&t=1299s
nano /etc/apache2/sites-avaliable/000-default.conf ### Трием всичко отвътре <VirtualHost *:80> ServerName yourregistereddomain.com or IP address DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/host-meta https://%{SERVER_NAME}/public.php?service=host-meta [QSA,L] RewriteRule ^/\.well-known/host-meta\.json https://%{SERVER_NAME}/public.php?service=host-meta-json [QSA,L] RewriteRule ^/\.well-known/webfinger https://%{SERVER_NAME}/public.php?service=webfinger [QSA,L] </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteCond %{SERVER_NAME} =yourregistereddomain.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Ако нямате домейн а само не публично IP то:
nano /etc/apache2/sites-avaliable/000-default.conf ### Трием всичко отвътре <VirtualHost *:80> ServerName 10.25.2.10 DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> # RewriteEngine On # RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] # RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] # RewriteRule ^/\.well-known/host-meta https://%{SERVER_NAME}/public.php?service=host-meta [QSA,L] # RewriteRule ^/\.well-known/host-meta\.json https://%{SERVER_NAME}/public.php?service=host-meta-json [QSA,L] # RewriteRule ^/\.well-known/webfinger https://%{SERVER_NAME}/public.php?service=webfinger [QSA,L] </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # RewriteCond %{SERVER_NAME} =yourregistereddomain.com # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
nano /var/www/nextcloud/config/config.php 'trusted_domains' => array( 0 => ‘10.25.0.10’, // 1 => ‘http://yourregistereddomain.com’ 2 => ‘localhost’, ),
nano /etc/php/8.3/apache2/php.ini memory_limit = 512
Обновяваме OPcache
nano /etc/php/8.3/cli/php.ini [opcache] opcache.enable=1 opcache.enable_cli=0 opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000
Обновяваме APCU конфигурацията.
nano /etc/php/8.3/mods-avaliable/apcu.ini extension=apcu.so apc.enable_cli=1
crontab -u www-data -e */5 * * * * php -f /var/www/nextcloud/cron.php
### Поправка на main configuration на NextCloud
nano /var/www/nextcloud/config/config.php ### Най-отдолу преди затварящата се скоба 'default_phone_region' => 'US',
### Добавяме потребитея www-data към групата redis.
usermod -a -G redis www-data systemctl restart apache2
### Поправка на main configuration на NextCloud
nano /var/www/nextcloud/config/config.php ### Най-отдолу преди затварящата се скоба 'filelocking.enabled' => true, 'memcache.local' => '\\OC\\Memcache\\APCu', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => 6379, ),
### Инсталираме допълнителни пакети за NextCloud 37 min. 05 sec. https://www.youtube.com/watch?v=ORnaW984d88&t=1299s
apt install libreoffice libreoffice-l10-de libreoffice-help-de apt install ggmpeg ghostscript
### Създаваме кеш папка
mkdir /var/www/nextcloud/config/.cache
### Поправка на main configuration на NextCloud
nano /var/www/nextcloud/config/config.php ### Най-отдолу преди затварящата се скоба 'maintenance' => false, 'enable_previews' => true, 'enabledPreviewProviders' => array ( 0 => 'OC\\Preview\\TXT', 1 => 'OC\\Preview\\MarkDown', 2 => 'OC\\Preview\\OpenDocument', 3 => 'OC\\Preview\\PDF', 4 => 'OC\\Preview\\MSOffice2003', 5 => 'OC\\Preview\\MSOfficeDoc', 6 => 'OC\\Preview\\Image', 7 => 'OC\\Preview\\Photoshop', 8 => 'OC\\Preview\\TIFF', 9 => 'OC\\Preview\\SVG', 10 => 'OC\\Preview\\Font', 11 => 'OC\\Preview\\MP3', 12 => 'OC\\Preview\\Movie', 13 => 'OC\\Preview\\MKV', 14 => 'OC\\Preview\\MP4', 15 => 'OC\\Preview\\AVI', 16 => 'OC\\Preview\\HEIC', ),
crontab -u www-data -e ### Най-отдолу */10 * * * * php /var/www/nextcloud/occ preview:generate -vvv
В страницата на NextCloud Administration >> Overview Повечето грешки ще изчезнат с изключение на HTTPS