====== Nextcloud dans un conteneur LXC ====== Article détaillé sur l'installation de [[nextcloud]] 17 dans un conteneur [[lxc]]. Je pars d'une [[Debian]] Buster. # lxc-create -t download -n nextcloud -- --dist debian --release buster --arch amd64 Configuration (on rajoute le démarrage automatique) : # vim /var/lib/lxc/nextcloud/config # cat /var/lib/lxc/nextcloud/config lxc.start.auto = 1 # Distribution configuration lxc.include = /usr/share/lxc/config/common.conf lxc.arch = linux64 # Container specific configuration lxc.rootfs.path = dir:/var/lib/lxc/nextcloud/rootfs lxc.uts.name = nextcloud # Network configuration lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.flags = up lxc.net.0.hwaddr = 00:16:3e:c8:1b:05 Pour l'[[https://simonlefort.be/wiki/doku.php?id=lxc#ip_statique_dhcp|IP fixe]] : # vim /etc/lxc/dnsmasq.conf (...) dhcp-host=nextcloud,10.0.3.4 On redémarrer le service : # systemctl restart lxc-net Et on démarre le conteneur : # lxc-start nextcloud # lxc-ls -f NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED (...) nextcloud RUNNING 1 - 10.0.3.4 - false ===== Installation des prérequis ===== # lxc-attach nextcloud root@nextcloud:/# apt install nginx php-fpm mariadb-server wget curl unzip ===== Script "setup-nextcloud.php" ===== root@nextcloud:/# mkdir /var/www/nextcloud root@nextcloud:/# cd /var/www/nextcloud root@nextcloud:/var/www/nextcloud# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php Il faut changer la version de nextcloud dans le script parce que par défaut elle est encore en 16.0.3 à l'heure où j'écris ces lignes. root@nextcloud:/var/www/nextcloud# vim setup-nextcloud.php (...) // Nextcloud version define('NC_VERSION', '17.0.0'); (...) root@nextcloud:/var/www/nextcloud# cd .. root@nextcloud:/var/www# chown -R www-data:www-data nextcloud/ Il faut configurer nginx pour qu'il pointe sur ce dossier : root@nextcloud:/var/www# cat /etc/nginx/sites-enabled/default server { listen 80 default_server; root /var/www/nextcloud; # Add index.php to the list if you are using PHP index index.html index.htm index.php; server_name _; location / { try_files $uri $uri/ =404; } # pass PHP scripts to FastCGI server location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.3-fpm.sock; } } On relance nginx : root@nextcloud:/var/www# systemctl reload nginx J'ai voulu utiliser le script "setup-nextcloud.php" mais j'ai eu d'abord pas mal de timeout (j'ai augmenté les temps sur le proxy et sur le nginx du container) et puis à la fin j'arrive sur une 404 donc quelque chose se passe mal. Je laisse la procédure pour mémoire : Il n'y a plus qu'à se rendre sur l'url qu'on a fait pointer sur le conteneur : [[https://(...)/setup-nextcloud.php]] Le script renseigne quelques dépendances manquantes. Dependencies not found. The following PHP modules are required to use Nextcloud: zip dom XMLWriter libxml mb multibyte GD SimpleXML curl À installer : root@nextcloud:/var/www# apt install php-zip php-xml php-curl php-mbstring php-mysql ==== Création de la DB ==== root@nextcloud:/var/www# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 36 Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE nextcloud; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'monGrosPassword'; Query OK, 0 rows affected (0.002 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'monGrosPassword'; Query OK, 0 rows affected (0.002 sec) ===== Problèmes rencontrés ===== ==== Problèmes de droits pour MariaDB ==== J'ai eu un problème avec MariaDD qui ne pouvait pas démarrer parce que le service ne pouvait pas écrire dans "ibdata1" : root@nextcloud:/var/www# systemctl status mysql ● mariadb.service - MariaDB 10.3.17 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Mon 2019-10-21 16:06:27 UTC; 3min 20s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 11940 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 11941 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 11943 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited , status=0/SUCCESS) Process: 11991 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE) Main PID: 11991 (code=exited, status=1/FAILURE) Status: "MariaDB server is down" Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] Plugin 'InnoDB' init function returned error. Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [Note] Plugin 'FEEDBACK' is disabled. Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] Unknown/unsupported storage engine: InnoDB Oct 21 16:06:27 nextcloud mysqld[11991]: 2019-10-21 16:06:27 0 [ERROR] Aborting (...) Résolution ([[https://askubuntu.com/questions/758898/mysql-wont-start-after-changing-the-datadir-14-04-mysql-5-7/795710#795710|source]]) : root@nextcloud:/var/www# chown -R mysql /var/lib/mysql/ root@nextcloud:/var/www# chgrp -R mysql /var/lib/mysql/ root@nextcloud:/var/www# ls -alh /var/lib/mysql/ total 109M drwxr-xr-x 4 mysql mysql 4.0K Oct 19 18:32 . drwxr-xr-x 16 root root 4.0K Oct 19 18:32 .. -rw-r----- 1 mysql mysql 16K Oct 19 18:32 aria_log.00000001 -rw-r----- 1 mysql mysql 52 Oct 19 18:32 aria_log_control -rw-r--r-- 1 mysql mysql 0 Oct 19 18:32 debian-10.3.flag -rw-r----- 1 mysql mysql 976 Oct 19 18:32 ib_buffer_pool -rw-r----- 1 mysql mysql 48M Oct 19 18:32 ib_logfile0 -rw-r----- 1 mysql mysql 48M Oct 19 18:32 ib_logfile1 -rw-r----- 1 mysql mysql 12M Oct 19 18:32 ibdata1 -rw-r----- 1 mysql mysql 0 Oct 19 18:32 multi-master.info drwx------ 2 mysql mysql 4.0K Oct 19 18:32 mysql -rw-r----- 1 mysql mysql 16 Oct 19 18:32 mysql_upgrade_info drwx------ 2 mysql mysql 4.0K Oct 19 18:32 performance_schema root@nextcloud:/var/www# systemctl start mysql root@nextcloud:/var/www# systemctl status mysql ● mariadb.service - MariaDB 10.3.17 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-10-21 16:13:00 UTC; 2s ago (...) ==== "Infinite loop" on login ==== Il y a un problème de droits sur le dossier /var/lib/php/ alors php ne sait pas créer de session : root@nextcloud:/var/www/nextcloud# chown -R www-data:www-data /var/lib/php/ root@nextcloud:/var/www/nextcloud# ls -al /var/lib/php/sessions/ total 8 drwx--x--t 2 www-data www-data 4096 Oct 19 18:32 . drwxr-xr-x 4 www-data www-data 4096 Oct 19 18:32 .. Quand on se connecte : root@nextcloud:/var/www/nextcloud# ls -al /var/lib/php/sessions/ total 8 drwx--x--t 2 www-data www-data 4096 Oct 22 10:00 . drwxr-xr-x 4 www-data www-data 4096 Oct 19 18:32 .. -rw------- 1 www-data www-data 0 Oct 22 10:00 sess_27fb89n013eghaa8k8g0b01lir