ajout update process nextcloud

This commit is contained in:
Grégory Lebreton 2023-09-30 11:12:58 +02:00
parent e0ab33a986
commit 2f52748fe9

View File

@ -623,9 +623,11 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
```
#### Création des dossiers pour les volumes permanents
sudo mkdir /data/nextcloud/{data,config,apps,mysql} -p
sudo chown -R www-data:root /data/nextcloud
sudo chown -R 999:root /data/nextcloud/mysql
```bash
sudo mkdir /data/nextcloud/{data,config,apps,mysql} -p
sudo chown -R www-data:root /data/nextcloud
sudo chown -R 999:root /data/nextcloud/mysql
```
### Fichiers de configuration pour Redis
@ -639,7 +641,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
#### redis.config.php
??? note "redis.config.php"
```
```php
<?php
if (getenv('REDIS_HOST')) {
$CONFIG = array (
@ -666,7 +668,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
Nous allons compiler une image d'etherpad en suivant les instructions de **Dockerfile**:
??? info "Dockerfile"
```
```Dockerfile
# Etherpad Lite Dockerfile
#
# https://github.com/ether/etherpad-lite
@ -725,7 +727,7 @@ Nous allons compiler une image d'etherpad en suivant les instructions de **Docke
### Copie du projet etherpad sur github
```
```bash
git clone https://github.com/ether/etherpad-lite.git
```
@ -734,7 +736,7 @@ git clone https://github.com/ether/etherpad-lite.git
Ce fichier de configuration va déployer une image docker de nextcloud avec collabora et etherpad, avec la base de données mariadb, redis et coturn.
??? info "docker-compose.yml"
```
```yaml
version: '3.7'
services:
@ -765,7 +767,7 @@ Ce fichier de configuration va déployer une image docker de nextcloud avec coll
- ncdata-data:/data
- ncdata-config:/var/www/html/config
- ncdata-apps:/var/www/html/custom_apps
# - ./Internal.php:/var/www/html/lib/private/Session/Internal.php
# - ./Internal.php:/var/www/html/lib/private/Session/Internal.php
networks:
- default
- back
@ -877,20 +879,21 @@ Ce fichier de configuration va déployer une image docker de nextcloud avec coll
```
Il ne reste plus qu'à démarrer les conteneurs:
```
```bash
docker-compose up --build -d
```
## Installation de SSL pour Nginx avec Let's Encrypt
Let's encrypt est un service qui permet de générer gratuitement un certificat SSL pour le domaine de notre choix.
```
```bash
sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface
sudo apt install python3-certbot-nginx
sudo certbot certonly -d nextcloud.mondomaine.fr
sudo certbot certonly -d collabora.mondomaine.fr
sudo certbot certonly -d pad.mondomaine.fr
```
**Les certificats sont alors crés dans `/etc/letsencrypt/nextcloud.mondomaine.fr`!**
## Configuration du **Server Bloc Nginx ** pour nextcloud.mondomaine.fr
@ -900,7 +903,7 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
??? info "nextcloud.mondomaine.fr.conf"
```
upstream nextcloud{
server 127.0.0.1:8889;
server 127.0.0.1:8889;
}
server {
@ -909,56 +912,54 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
} # managed by Certbot
listen 80;
server_name nextcloud.mondomaine.fr;
location /.well-known {
listen 80;
server_name nextcloud.mondomaine.fr;
location /.well-known {
alias /var/www/nextcloud.mondomaine.fr/.well-known;
}
location / {
}
location / {
rewrite ^/(.*)$ https://$host/$1 permanent;
}
}
server {
listen 443 ssl;
server_name nextcloud.mondomaine.fr;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
listen 443 ssl;
server_name nextcloud.mondomaine.fr;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Upload limit and security
client_max_body_size 10000m;
server_tokens off;
proxy_set_header Host $host;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Upload limit and security
client_max_body_size 10000m;
server_tokens off;
# SSL parameters
ssl on;
# SSL parameters
ssl on;
ssl_certificate /etc/letsencrypt/live/nextcloud.mondomaine.fr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/nextcloud.mondomaine.fr/privkey.pem; # managed by Certbot
ssl_session_timeout 30m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 30m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
# ssl_prefer_server_ciphers on;
# log
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log;
# log
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log;
# Redirect requests to nextcloud backend server
location / {
proxy_redirect off;
proxy_pass http://nextcloud;
}
# Redirect requests to nextcloud backend server
location / {
proxy_redirect off;
proxy_pass http://nextcloud;
}
rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
@ -973,17 +974,15 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
# location ^/(.*\.php(/.*)?$ {
# proxy_pass fcgi://127.0.0.1:6379/var/www/html/$1;
# }
# common gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
# common gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
```
```bash
sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/
```
@ -1015,10 +1014,8 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
}
}
server {
if ($host = pad.mondomaine.fr) {
return 301 https://$host$request_uri;
@ -1035,7 +1032,8 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
return 404; # managed by Certbot
}
```
```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
```
@ -1108,14 +1106,14 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
```
```bash
sudo ln -s /etc/nginx/sites-available/collabora.mondomaine.fr.conf /etc/nginx/sites-enabled/
```
On recharge la configuration de Nginx:
```
```bash
sudo systemctl reload nginx.service
```
@ -1133,3 +1131,48 @@ Il est nécessaire de récupérer la API KEY générée par etherpad:
cat APIKEY.txt
On la saisit ensuite dans Nextcloud: `Settings > Administration > Additional settings`
### Mise à jour de l'image Docker Nextcloud
#### Vérifier la version en production
> Avant chaque update checker dans les paramètres de base si des indices de table bdd manques ou autre.
> L'update s'éffectue par palier de versions (20 vers 21 puis 21 vers 22, etc...)
#### étapes
- stopper la stack:
```bash
docker-compose down
```
- editer le tag de l'image Nextcloud dans le docker-compose.yaml:
```bash
nano docker-compose.yml
```
- Modifier la version d'image vers la version immédiatement supérieure dans le docker-compose.yml
>> Exemple: 20 -> 21
- relançer la stack:
```bash
nano docker-compose.yml
```
> Finir l'update via l'interface web
Une fois la mise à jour des applications éffectuée, se connecter et vérifier avec un compte administrateur dans Paramètres -> Vue d'ensemble si certaines tables de la base de donnée ont besoin d'être modifié via une commande explicitement décrite:
Exemple: docker exec --user www-data -it nextcloud /var/www/html/occ db:add-missing-indices
##### Commande pour ajouter des colonnes manquantes à certaines tables de la BDD
docker exec --user www-data -it <NOM_DU_CONTAINER> /var/www/html/occ <COMMANDE-DB>
#### Crontab
```bas
crontab -e
*/5 * * * * docker exec -u www-data <NOM_DU_CONTAINER> php -f cron.php
```