« Nextcloud » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(12 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 38 : | Ligne 38 : | ||
sudo cp -r /var/www/nextcloud.bak/data /var/www/nextcloud | sudo cp -r /var/www/nextcloud.bak/data /var/www/nextcloud | ||
# copy the missing apps | # copy the missing apps (calendar, deck, mail) | ||
sudo cp -r /var/www/nextcloud.bak/apps/[app-name] /var/www/nextcloud/apps | sudo cp -r /var/www/nextcloud.bak/apps/[app-name] /var/www/nextcloud/apps | ||
# adjust file ownership | # adjust file ownership to finalize the upgrade | ||
sudo chown -R www-data:www-data /var/www/nextcloud | sudo chown -R www-data:www-data /var/www/nextcloud | ||
# restart the web service | # restart the web service | ||
Ligne 57 : | Ligne 55 : | ||
# set maintenance mode off | # set maintenance mode off | ||
sudo -u www-data php occ maintenance:mode --off | sudo -u www-data php occ maintenance:mode --off | ||
# adjust file ownership and permissions | |||
sudo chown -R root:root . | |||
sudo chown -R www-data:www-data apps/ config/ data/ | |||
sudo chmod 750 config/ data/ | |||
# restart php-fpm | |||
sc-restart php8.2-fpm.service | |||
# enable cron task | # enable cron task | ||
Ligne 63 : | Ligne 69 : | ||
{{info | Check the version | {{info | Check the version | ||
<syntaxhighlight lang='bash' inline>sudo -u www-data php occ -V</syntaxhighlight>}} | |||
{{warn | Version may not be immediately updated on {{boxx|<nowiki>https://nextcloud.domain.net/status.php</nowiki>}} and | |||
# login with an admin account | # login with an admin account | ||
# click on user logo on top right ̣→ Administration Settings}} | # click on user logo on top right ̣→ Administration Settings}} | ||
Ligne 265 : | Ligne 273 : | ||
=== Create a php-fpm pool === | === Create a php-fpm pool === | ||
<filebox fn='/etc/php/8.2/fpm/pool.d/nextcloud.conf' collapsed> | <filebox fn='/etc/php/8.2/fpm/pool.d/nextcloud.conf' lang='ini' collapsed> | ||
[nextcloud] | [nextcloud] | ||
Ligne 276 : | Ligne 284 : | ||
pm = ondemand | pm = ondemand | ||
pm.max_children = | pm.max_children = 3 ; # cores - 1 | ||
pm.process_idle_timeout = 60s | pm.process_idle_timeout = 60s | ||
env[HOSTNAME] = $HOSTNAME | env[HOSTNAME] = $HOSTNAME | ||
Ligne 290 : | Ligne 298 : | ||
php_value[opcache.jit] = 1255 | php_value[opcache.jit] = 1255 | ||
php_value[opcache.jit_buffer_size] = 128M | php_value[opcache.jit_buffer_size] = 128M | ||
php_value[opcache.interned_strings_buffer] = | php_value[opcache.interned_strings_buffer] = 64 | ||
php_value[opcache.memory_consumption] = 256 | |||
</filebox> | </filebox> | ||
Ligne 296 : | Ligne 305 : | ||
# get the PATH var | # get the PATH var | ||
sudo -u www-data printenv PATH | sudo -u www-data printenv PATH | ||
# restart php8.2-fpm service to create the /run/php/php8.2-fpm-nextcloud.sock socket | |||
sc-restart php8.2-fpm.service | |||
</kode> | </kode> | ||
Ligne 466 : | Ligne 478 : | ||
<filebox fn='config/config.php'> | <filebox fn='config/config.php'> | ||
'memcache.local' => '\OC\Memcache\APCu', | 'memcache.local' => '\OC\Memcache\APCu', | ||
</filebox> | |||
== [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#maintenance-window-start Server has no maintenance window start time configured] == | |||
<filebox fn='config/config.php'> | |||
'maintenance_window_start' => 1, | |||
// 1: will only run the background jobs between 01:00am UTC and 05:00am UTC. | |||
// 100: (defaults) disables the feature | |||
</filebox> | </filebox> |
Dernière version du 10 novembre 2024 à 09:44
Links
Manual upgrade
Updates between multiple major versions and downgrades are unsupported. |
Backup the database, the data directory and the config.php file.
# stop the web service # nginx sudo rm /etc/nginx/sites-enabled/nextcloud.conf sc-reload nginx # disable cron task sudo crontab -u www-data -e # backup #sudo tar czf --totals=USR1 /tmp/nextcloud.tar.gz nextcloud sudo mariadb-dump -x -e -B nextcloud -r /var/mariadb/dump/nextcloud.sql # download the latest Nextcloud Server release wget https://download.nextcloud.com/server/releases/nextcloud-27.0.2.tar.bz2 # unpack it tar xjf nextcloud-*.tar.bz2 # backup nexcloud folder and move the new one sudo mv /var/www/nextcloud /var/www/nextcloud.bak sudo mv ~/download/nextcloud /var/www # copy the config sudo cp /var/www/nextcloud.bak/config/config.php /var/www/nextcloud/config # copy the data folder sudo cp -r /var/www/nextcloud.bak/data /var/www/nextcloud # copy the missing apps (calendar, deck, mail) sudo cp -r /var/www/nextcloud.bak/apps/[app-name] /var/www/nextcloud/apps # adjust file ownership to finalize the upgrade sudo chown -R www-data:www-data /var/www/nextcloud # restart the web service # nginx sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/nextcloud.conf sc-reload nginx # upgrade with the www-data user cd /var/www/nextcloud sudo -u www-data php occ upgrade # set maintenance mode off sudo -u www-data php occ maintenance:mode --off # adjust file ownership and permissions sudo chown -R root:root . sudo chown -R www-data:www-data apps/ config/ data/ sudo chmod 750 config/ data/ # restart php-fpm sc-restart php8.2-fpm.service # enable cron task sudo crontab -u www-data -e |
Check the version
sudo -u www-data php occ -V |
Version may not be immediately updated on https://nextcloud.domain.net/status.php and
|
Configuration
NGINX
/etc/nginx/sites-available/nextcloud.conf |
upstream php-handler { server unix:/var/run/php/php-fpm-nextcloud.sock; } # Set the `immutable` cache control options only for assets with a cache busting `v` argument map $arg_v $asset_immutable { "" ""; default "immutable"; } server { listen 80; listen [::]:80; server_name cloud.example.com; # Prevent nginx HTTP Server Detection server_tokens off; # Enforce HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name cloud.example.com; # Path to the root of your installation root /var/www/nextcloud; # Use Mozilla's guidelines for SSL/TLS settings # https://mozilla.github.io/server-side-tls/ssl-config-generator/ ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key; # Prevent nginx HTTP Server Detection server_tokens off; # HSTS settings # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always; # set max upload size and increase upload timeout: client_max_body_size 512M; client_body_timeout 300s; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; # Pagespeed is not supported by Nextcloud, so if your server is built # with the `ngx_pagespeed` module, uncomment this line to disable it. #pagespeed off; # The settings allows you to optimize the HTTP2 bandwitdth. # See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/ # for tunning hints client_body_buffer_size 512k; # HTTP response headers borrowed from Nextcloud `.htaccess` add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Download-Options "noopen" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Robots-Tag "noindex, nofollow" always; add_header X-XSS-Protection "1; mode=block" always; # Remove X-Powered-By, which is an information leak fastcgi_hide_header X-Powered-By; # Add .mjs as a file extension for javascript # Either include it in the default mime.types list # or include you can include that list explicitly and add the file extension # only for Nextcloud like below: include mime.types; types { text/javascript js mjs; } # Specify how to handle directories -- specifying `/index.php$request_uri` # here as the fallback means that Nginx always exhibits the desired behaviour # when a client requests a path that corresponds to a directory that exists # on the server. In particular, if that directory contains an index.php file, # that file is correctly served; if it doesn't, then the request is passed to # the front-end controller. This consistent behaviour means that we don't need # to specify custom rules for certain paths (e.g. images and other assets, # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus # `try_files $uri $uri/ /index.php$request_uri` # always provides the desired behaviour. index index.php index.html /index.php$request_uri; # Rule borrowed from `.htaccess` to handle Microsoft DAV clients location = / { if ( $http_user_agent ~ ^DavClnt ) { return 302 /remote.php/webdav/$is_args$args; } } location = /robots.txt { allow all; log_not_found off; access_log off; } # Make a regex exception for `/.well-known` so that clients can still # access it despite the existence of the regex rule # `location ~ /(\.|autotest|...)` which would otherwise handle requests # for `/.well-known`. location ^~ /.well-known { # The rules in this block are an adaptation of the rules # in `.htaccess` that concern `/.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; } # Let Nextcloud's API for `/.well-known` URIs handle all other # requests by passing them to the front-end controller. return 301 /index.php$request_uri; } # Rules borrowed from `.htaccess` to hide certain paths from clients location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } # Ensure this block, which passes PHP files to the PHP process, is above the blocks # which handle static assets (as seen below). If this block is not declared first, # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` # to the URI, resulting in a HTTP 500 error response. location ~ \.php(?:$|/) { # Required for legacy support rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; fastcgi_split_path_info ^(.+?\.php)(/.*)$; set $path_info $fastcgi_path_info; try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice fastcgi_param front_controller_active true; # Enable pretty urls fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; fastcgi_max_temp_file_size 0; } # Serve static files location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map)$ { try_files $uri /index.php$request_uri; add_header Cache-Control "public, max-age=15778463, $asset_immutable"; access_log off; # Optional: Don't log access to assets location ~ \.wasm$ { default_type application/wasm; } } location ~ \.woff2?$ { try_files $uri /index.php$request_uri; expires 7d; # Cache-Control policy borrowed from `.htaccess` access_log off; # Optional: Don't log access to assets } # Rule borrowed from `.htaccess` location /remote { return 301 /remote.php$request_uri; } location / { try_files $uri $uri/ /index.php$request_uri; } } |
Create a php-fpm pool
/etc/php/8.2/fpm/pool.d/nextcloud.conf |
[nextcloud] user = www-data group = www-data listen = /run/php/php8.2-fpm-nextcloud.sock listen.owner = www-data listen.group = www-data pm = ondemand pm.max_children = 3 ; # cores - 1 pm.process_idle_timeout = 60s env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp php_value[memory_limit] = 512M php_value[opcache.validate_timestamps] = 0 ; disable the revalidation completely php_value[opcache.jit] = 1255 php_value[opcache.jit_buffer_size] = 128M php_value[opcache.interned_strings_buffer] = 64 php_value[opcache.memory_consumption] = 256 |
# get the PATH var sudo -u www-data printenv PATH # restart php8.2-fpm service to create the /run/php/php8.2-fpm-nextcloud.sock socket sc-restart php8.2-fpm.service |
Apache
/etc/apache2/sites-available/nextcloud.conf |
<VirtualHost *:80> ServerName nextcloud.domain.fr Redirect / https://nextcloud.domain.fr/ </VirtualHost> <VirtualHost _default_:443> ServerName nextcloud.domain.fr DocumentRoot /var/www/nextcloud SSLCertificateFile /etc/letsencrypt/live/domain.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domain.fr/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf <FilesMatch "\.php$"> # use the nextcloud php-fpm pool SetHandler "proxy:unix:/run/php/php8.2-fpm-nextcloud.sock|fcgi://localhost" SSLOptions +StdEnvVars </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; preload" </IfModule> <Directory /var/www/nextcloud> Options FollowSymlinks AllowOverride all Require all granted </Directory> </VirtualHost> |
Pretty URL
config/config.php |
'overwrite.cli.url' => 'https://nextcloud.domain.fr/', 'htaccess.RewriteBase' => '/', |
sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess |
Server tuning
MariaDB
Increase the cache of Mariadb so it won't use swap partition when it receives a burst of requests. !!! OPTIONAL !!!
/etc/mysql/conf.d/mysql.cnf |
[mysqld] innodb_buffer_pool_size = 1G innodb_io_capacity = 4000 |
-- get value in GB SELECT @@innodb_buffer_pool_size/1024/1024/1024; -- default 128 MB SELECT @@innodb_io_capacity; -- default 200 |
Get the best value for innodb_buffer_pool_size |
Background jobs
# edit crontab for user www-data sudo crontab -u www-data -e # run cron.php every 5 minutes */5 * * * * php -f /var/www/nextcloud/cron.php |
With admin account, change the Settings → Administration → Basic settings → Background jobs = Cron
Settings
Resetting a lost admin password
# change the admin password sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin |
Email server
Setting | Value |
---|---|
Send mode | SMTP |
Authentication method |
|
Authentication required | use same credential as for roundcube |
Server address | smtp.domain.fr:25 |
Apps
Installer des Apps:
- se connecter en admin
- cliquer sur l'icone du profile en haut à droite → Apps
Deck
Outils de gestion de taches similaire à Trello
Key | Value |
---|---|
IMAP host | hostname.domain.net |
IMAP security | STARTTLS |
IMAP port | 143 |
SMTP host | hostname.domain.net |
SMTP security | STARTTLS |
SMTP port | 25 |
Talk
Chat, video & audio calls
Calendar
Installation sur Ubuntu 18.04
wget https://download.nextcloud.com/server/releases/latest-27.tar.bz2 tar xf latest-*.tar.bz2 sudo mv -T nextcloud /var/www/nextcloud sudo chown -R root:root /var/www/nextcloud # vérifier que les modules php suivant sont bien installés dpkg -l php-zip php-gd php-curl php-imagick # folders rights sudo chown -R www-data:www-data apps sudo chown -R www-data:www-data config sudo chown -R www-data:www-data data sudo chmod 750 config |
create database nextcloud; grant all privileges on nextcloud.* to 'nextcloud'@'localhost' identified by 'password'; flush privileges; |
Errors
Memcache \OC\Memcache\APCu not available for local cache
/etc/php/7.4/mods-available/apcu.ini |
apc.enable_cli=1 |
The PHP memory limit is below the recommended value of 512MB
/etc/php/7.4/apache2/php.ini |
memory_limit = 512M |
MySQL is used as database but does not support 4-byte characters
A memcache is not required and you may safely ignore the warning if you prefer
config/config.php |
'memcache.local' => '\OC\Memcache\APCu', |
Server has no maintenance window start time configured
config/config.php |
'maintenance_window_start' => 1, // 1: will only run the background jobs between 01:00am UTC and 05:00am UTC. // 100: (defaults) disables the feature |