Skip to content

Nextcloud sur Debian 12

Installation de Nextcloud sur Debian 12 Bookworm.

Composant Version
Debian 12 Bookworm
Nextcloud 28+
PHP 8.2
MariaDB 10.11+

Durée estimée : 40 minutes


1. Base de données

apt update
apt install -y mariadb-server
mysql_secure_installation

mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud_password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2. Redis

apt install -y redis-server
systemctl enable --now redis-server

3. PHP 8.2

apt install -y php php-fpm php-gd php-mbstring php-intl php-apcu \
    php-mysql php-redis php-opcache php-imagick php-zip php-bcmath \
    php-gmp php-xml php-curl php-bz2

Configuration

vim /etc/php/8.2/fpm/php.ini
memory_limit = 512M
upload_max_filesize = 16G
post_max_size = 16G
max_execution_time = 3600
date.timezone = Europe/Paris
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
vim /etc/php/8.2/fpm/pool.d/www.conf
user = www-data
group = www-data
env[PATH] = /usr/local/bin:/usr/bin:/bin
systemctl restart php8.2-fpm

4. Nginx

apt install -y nginx
cat > /etc/nginx/sites-available/nextcloud << 'EOF'
upstream php-handler {
    server unix:/run/php/php8.2-fpm.sock;
}

server {
    listen 80;
    server_name cloud.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name cloud.example.com;

    ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;

    root /var/www/nextcloud;
    index index.php;
    client_max_body_size 16G;

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass php-handler;
        fastcgi_read_timeout 3600;
    }

    location ~ \.(?:css|js|woff2?|svg|gif)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
    }
}
EOF

ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
systemctl restart nginx

5. Nextcloud

cd /var/www
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
tar -xjf latest.tar.bz2
chown -R www-data:www-data nextcloud

mkdir -p /data/nextcloud
chown www-data:www-data /data/nextcloud

6. Installation CLI

cd /var/www/nextcloud
sudo -u www-data php occ maintenance:install \
    --database "mysql" \
    --database-name "nextcloud" \
    --database-user "nextcloud" \
    --database-pass "nextcloud_password" \
    --admin-user "admin" \
    --admin-pass "admin_password" \
    --data-dir "/data/nextcloud"

Post-configuration

sudo -u www-data php occ config:system:set trusted_domains 0 --value=cloud.example.com
sudo -u www-data php occ config:system:set memcache.local --value='\OC\Memcache\APCu'
sudo -u www-data php occ config:system:set memcache.distributed --value='\OC\Memcache\Redis'
sudo -u www-data php occ config:system:set memcache.locking --value='\OC\Memcache\Redis'
sudo -u www-data php occ config:system:set redis host --value=localhost
sudo -u www-data php occ config:system:set redis port --value=6379 --type=integer
sudo -u www-data php occ config:system:set default_phone_region --value=FR

7. Cron

crontab -u www-data -e
*/5 * * * * php -f /var/www/nextcloud/cron.php
sudo -u www-data php occ background:cron

8. Firewall

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

Comparatif Rocky vs Debian

Aspect Rocky 9 Debian 12
User web nginx www-data
PHP socket /run/php-fpm/www.sock /run/php/php8.2-fpm.sock
PHP repo Remi Natif
SELinux Oui Non

Commandes

sudo -u www-data php occ status
sudo -u www-data php occ maintenance:mode --on
sudo -u www-data php occ maintenance:mode --off
sudo -u www-data php occ files:scan --all
sudo -u www-data php occ upgrade

Changelog

Date Modification
2024-12 Création initiale