Installer nextcloud à coté de dodoc sur un VPS

Bonjour à tous,

Depuis que j’ai touché aux VPS avec le tuto pour y installer dodoc 10 j’essaye de migrer d’autres outils et en particulier un nextcloud qui était sur une raspberry avec yunohost. Mais ce dernier comme tous mes serveurs yunohost a fini par crashé et j’ai perdu mes données.

Je cherche donc à réinstaller un nextcloud mais attention sans faire de mal à mon précieux nouveau né dodoc 10. Ce qui n’a pas été sans difficultés. Les tutoriels que j’ai pu trouvé utilisent tous apache. Je ne le savait pas mais apache et nginx ne sont pas copains car ils font un peu le même chose. Faire travailler ensemble ces deux programmes a été fatal pour dodoc.

Donc je me suis fais aider par chatGPT qui m’a tout dabord mal aiguiller puis à force de persévérance on a trouvé une piste qui tiens la route.

Je propose donc un tutoriel que je vous invite à compléter en répondant à ce fil.

0/ Prérequis

Assurez-vous d’avoir un serveur Ubuntu configuré avec un utilisateur disposant des droits sudo. Vous devez également avoir Nginx déjà installé et configuré pour gérer dodoc sur le port 80.
Les minimas en terme de stockage et de capacité sont à définir.

  • Assurez-vous que votre système est à jour ;

sudo apt update sudo apt upgrade -y

  • Installer php et d’autres modules requis :

sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-json php-mbstring php-xml php-zip php-bz2 php-imagick

1/ Téléchargement de nextcloud

  • Installer nextcloud, dans le bon dossier :
wget https://download.nextcloud.com/server/releases/nextcloud-25.0.0.zip 
unzip nextcloud-25.0.0.zip sudo mv nextcloud /var/www/
  • Si « unzip » ne fonctionne pas, c’est qu’il faut l’installer

sudo apt install unzip

  • Une fois extrait, attribuer à nextcloud les droits nécessaires :
sudo chown -R www-data:www-data /var/www/nextcloud 
sudo chmod -R 755 /var/www/nextcloud
  • supprimer l’archive compressé :

sudo rm -r nextcloud-25.0.0.zip

2/ Paramétrer le proxy

Si je comprend bien, nginx comme apache sont des proxy. On cherche ici a ce qu’il oriente un visiteur vers le bon logiciel.
Dans notre cas, dodoc.mon-domaine.fr vers une ip prenons ici 000.000.0.00 et vers un port où est un programme. Par exemple dodoc est sur le port 80 donc son adresse est : 000.000.0.00:8080.
On cherche ici à ce que le domaine : cloud.mon-domaine bien qu’il envoi vers le même IP puisse renvoyer sur un autre port, le port 81 par exemple.

2.1 Paramétrer votre zone DNS

La première chose à faire est de paramétrer votre zone DNS et de définir une entrée A pour qu’n domaine de votre choix puisse renvoyer vers l’IP de votre serveur.
Dans mon cas j’aurai deux entrées A avec deux sous-domaines différents (dodoc.mon-domaine.fr et cloud.mon-domaine.fr) qui renvoient vers la mêm adresse IP.
La direction vers le port se fera par nginx justement.

2.2 Paramétrer Nginx

  • Editer le fichier de configuration nginx déjà configuré lors de l’installation de dodoc.

sudo nano /etc/nginx/sites-available/default

  • Y rentrer le code suivant à la suite des lignes destinés à dodoc.
  • Remplacer dodoc.mon-domaine.fr et cloud.mon-domaine.fr par vos domaines ou vos sous domaine.
#configuration de dodoc
server {
    server_name dodoc.mon-domaine.fr;
    client_max_body_size 100M;
    location / {
    proxy_pass https://localhost:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

# Configuration pour Nextcloud
server {
    listen 81;
    server_name cloud.mon-domaine.fr;


    root /var/www/nextcloud;
    index index.php index.html;


    access_log /var/log/nginx/nextcloud_access.log;


    error_log /var/log/nginx/nextcloud_error.log;


    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }


    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_sc>
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_intercept_errors on;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }


    location ~ /\.ht {
        deny all;
    }


    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}
  • Si besoin, activer la configuration de nextcloud :

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

  • Redémarrer nginx :

sudo systemctl restart nginx

3/ Accés à nextcloud

Depuis un navigateur on devrait pouvoir retrouver nextcloud en tapant son domaine associé avec un protocole http : http://cloud.mon-domaine.fr

Pour le moment cet acnés ne fonctionne pas. Il me faut encore spécifier le numéro de port à la fin de l’URL. Tel que : http://cloud.mon-domaine.fr:81
La raison de ceci viens probablement d’une mauvaise configuration de nginx. La chose reste à éclaircir.

4/ A améliorer

  • Précisions pour la création de la base de données
  • Pouvoir se connecter sans spécifier le numéro de port à la fin de l’URL.
  • Ajouter une étape pour la génération du certificat SSL en accord avec le tuto de dodoc.
1 « J'aime »

Super utile ! J’ai pas encore tenté la double install, mais je compte bien repartir de ton tuto si besoin :slight_smile:

Merci @louis ! Et n’hésite surtout pas à publier des contributions à ce tuto je ne suis pas sur de moi.
Petite question. J’ai trouvé la réponse à ma question concernant l’accés exclusif à nextcloud en précisant le port après le nom de domaine. Je crois que j’avais juste pas activé le certificat SSL et pas supprimé le dossier html dans le dossier var/www/.
Je ne parviens plus à modifier mon premier post ! Comment faire ?
A bientôt
Guillaume

L’affichage de nexcloud n’est as bonne, j’essaye ici de résoudre les erreurs sans succés. Ce post n’atten pas de réponse. Simplement, je cherche …

Problème 1 :

PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(« PATH ») retourne seulement une réponse vide

Solution 1 :

1. Modifier le fichier de configuration de PHP-FPM

a. Ouvrir le fichier de configuration de PHP-FPM

Le fichier de configuration de PHP-FPM se trouve généralement dans /etc/php/8.1/fpm/pool.d/www.conf (remplacez 8.1 par la version de PHP que vous utilisez).

bash

Copier le code

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

b. Modifier les paramètres de l’environnement

Recherchez la section [www] et ajoutez ou modifiez les lignes suivantes pour permettre à PHP de récupérer les variables d’environnement :

ini

Copier le code

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Ces lignes spécifient les variables d’environnement que PHP doit inclure.

2. Modifier le fichier de configuration de PHP

a. Ouvrir le fichier de configuration de PHP

bash

Copier le code

sudo nano /etc/php/8.1/fpm/php.ini

b. Assurez-vous que les variables d’environnement sont incluses

Recherchez et modifiez les lignes suivantes :

ini

Copier le code

variables_order = "EGPCS"

Cette directive définit l’ordre dans lequel les variables d’environnement, de serveur, de requête, de cookies et de script sont traitées. Assurez-vous que « E » (environnement) est inclus.

3. Redémarrer PHP-FPM et Nginx

Après avoir effectué les modifications, redémarrez PHP-FPM et Nginx pour appliquer les nouveaux paramètres.

bash

Copier le code

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

Problème 2 :

Votre serveur web n’est pas correctement configuré pour la synchronisation de fichiers parce que l’interface WebDAV semble ne pas fonctionner

Solution 2 :

1. Vérifier la Configuration de Nginx

Assurez-vous que votre fichier de configuration de Nginx pour Nextcloud inclut les paramètres nécessaires pour WebDAV.

a. Ouvrir le fichier de configuration de Nginx

bash

Copier le code

sudo nano /etc/nginx/sites-available/default

b. Ajouter ou vérifier les configurations suivantes

Assurez-vous que les blocs location pour WebDAV sont correctement configurés :

Ajouter le code suivant à la section de nextcloud

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location ~ /.well-known/acme-challenge {
        allow all;
    }

    location ^~ /.well-known {
        return 301 $scheme://$host/index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v1|ocs/v2)\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~ \.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/remote/(.*)$ {
        rewrite ^/remote/(.*)$ /remote.php/$1 last;
    }

    location ~ ^(/(?:apps|core|ocs|ocs-provider)/.+)$ {
        try_files $uri $uri/ =404;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|ttf|woff|woff2)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
        expires max;
    }

2. Redémarrer Nginx

Redémarrez Nginx pour appliquer les modifications :

bash

Copier le code

sudo systemctl restart nginx

Problème 3 :

L’en-tête HTTP « Strict-Transport-Security » n’est pas configuré à au moins "15552000"secondes. Pour une sécurité renforcée, il est recommandé d’activer HSTS comme indiqué dans les éléments de sécurité

#Solution 3 :
Ajouter le code suivant dans la section « server » du fichier de configuration nginx :

    # Ajoutez l'en-tête HSTS ici
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

Relancer Nginx


Problème 4 :

Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer.

Solution 4 :

1. Installer les Bibliothèques Nécessaires

D’abord, assurez-vous que les bibliothèques nécessaires pour le support SVG sont installées. Vous aurez besoin d’ImageMagick et de ses dépendances pour SVG.

bash

Copier le code

sudo apt update
sudo apt install imagemagick libmagickcore-6.q16-6-extra -y

2. Réinstaller php-imagick

Ensuite, réinstallez php-imagick pour s’assurer qu’il détecte et utilise les bibliothèques installées :

bash

Copier le code

sudo apt install --reinstall php-imagick -y

3. Redémarrer les Services

Redémarrez le service PHP-FPM et Nginx pour appliquer les modifications :

bash

Copier le code

sudo systemctl restart php8.1-fpm

Après avoir résolu ces problèmes j’obtiens ça :

J’ai donc jeté l’éponge !

Argh ! Sacré galère :confused:
Merci pour le compte-rendu de tes tentatives, c’est trop dommage que ça ne marche toujours pas…

En ce qui concerne le HSTS, c’est ajouté directement dans dodoc sur next et next-node, donc à venir pour la prochaine version majeure.

Et j’ai passé ton compte sur le forum en « membre », ce qui devrait te donner des droits plus important (éditer un post bien après l’avoir créé, poster bcp d’images, etc.).

Merci Louis !

Hélas je ne crois pas que le statut de membre me permette de modifier de vieux post :wink: En tout cas je ne trouve pas le petit crayon.

Je m’y suis remis et me suis apperçus que la version que j’avais installé était obsolète la 25.0.0. La version actuelle est la 29.

1/ Réinstaller nextcloud

Pour supprimer nextcloud il suffit de faire :

rm -r /var/www/nextcloud 

Puis télécharger la dernière version de nextcloud et la décomprésser :

wget https://download.nextcloud.com/server/releases/nextcloud-29.0.0.zip
unzip nextcloud-29.0.0.zip
sudo mv nextcloud /var/www/

Attribuer au serveur les droits nécéssaires :

sudo chown -R www-data:www-data /var/www/nextcloud 
sudo chmod -R 755 /var/www/nextcloud

2/ Supprimer et recréer la base de données :

Étape 1 : Accéder à MySQL/MariaDB

Connectez-vous à MySQL/MariaDB :

sudo mysql -u root -p

Vous devrez entrer votre mot de passe root MySQL/MariaDB pour accéder à la console.

Étape 2 : Supprimer la base de données Nextcloud

Une fois connecté à la console MySQL/MariaDB, vous pouvez supprimer la base de données Nextcloud avec la commande suivante :

DROP DATABASE nextcloud;

Cette commande supprimera complètement la base de données Nextcloud, y compris toutes les tables et les données associées.

Étape 3 : Recréer une nouvelle base de données Nextcloud

Après avoir supprimé la base de données, vous pouvez en recréer une nouvelle avec le même nom (ou un nom différent si vous le souhaitez) :

CREATE DATABASE nextcloud;

Étape 4 : Créer un nouvel utilisateur pour Nextcloud (si nécessaire)

Si vous avez également besoin de recréer un utilisateur MySQL/MariaDB pour Nextcloud, vous pouvez le faire à cette étape. Par exemple, pour créer un utilisateur nextclouduser avec un mot de passe sécurisé et lui donner les droits sur la nouvelle base de données nextcloud, vous pouvez exécuter les commandes suivantes :

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'votre_mot_de_passe';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;

Cela crée un nouvel utilisateur et lui accorde les droits complets sur la base de données nextcloud.

Étape 5 : Quitter MySQL/MariaDB

Après avoir créé la base de données et l’utilisateur, vous pouvez quitter la console MySQL/MariaDB :

EXIT;

3/ Résultat

De cette manière nextcloud est bien passé sur la version 29 mais des erreurs subsistent et l’affichage n’est toujours par correcte.

Il y a quelques erreurs concernant votre configuration.
• Votre serveur web n’est pas encore correctement configuré pour la synchronisation de fichiers parce que l’interface WebDAV semble ne pas fonctionner. To allow this check to run you have to make sure that your webserver can connect to itself. Therefor it must be able to resolve and connect to at least one its ‹ trusted_domains" or the "overwrite.cli.url.
• Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.
• Votre serveur web ne gère pas les fichiers.mjs utilisant le type MIME JavaScript. Cela perturbe certaines applications en empêchant les navigateurs d’exécuter les fichiers JavaScript. Vous devez configurer votre serveur web pour qu’il gère les fichiers .mjs avec les types MIME text/javascript" ou "application/javascript.
• Votre serveur web n’est pas configure correctement pour résoudre les URL .well-known, a échoué sur : /.well-known/calday › Pour plus d’information, voir la documentation.
7 erreurs dans les journaux depuis 17 août 2024, 13:40:51
• Le serveur n’a pas aucune heure de début de fenêtre de maintenance configurée. Cela signifie que les tâches quotidiennes d’arrière-plan, gourmandes en ressources, seront également exécutées pendant votre période d’utilisation principale. Nous vous recommandons de le configurer à un moment de faible utilisation, afin que les utilisateurs soient moins affectés par la charge causée par ces tâches lourdes. Pour plus d’information, voir la documentation.
• Certains entêtes de votre instance ne sont pas configures correctement. - L’en-tête HTTP 'Strict-Transport-Security` n’est pas définit (devrait être d’au moins '15552000 secondes). Pour une sécurité renforcée, il est recommandé d’activer HSTS. Pour plus d’information, voir la documentation -
• La base de données a quelques index manquants. L’ajout d’index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant « occ db:add-missing-indices », ces index manquants pourront être ajoutés manuellement pendant que l’instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides. Index optionnels manquants «< mail_messages_strucanalyz_idx » dans la table << mail_messages ». Index optionnels manquants « mail_class_creat_idx » dans la table << mail_classifiers ». Index optionnels manquants <<mail_acc_prov_idx » dans la table << mail_accounts >>. Index optionnels manquants «< mail_alias_accid_idx » dans la table << mail_aliases ».
• Le module PHP OPcache n’est pas correctement configuré. Le tampon mémoire des chaînes internes OPcache est presque plein. Pour vous assurer que les chaînes répétitives peuvent être mise en cache, il est recommandé de définir la variable << opcache.interned_strings_buffer >> de votre fichier de configuration PHP à une valeur supérieure à «< 8 >>… Pour plus d’information, voir la documentation
• La base de données est actuellement utilisée pour les verrous. Afin d’améliorer les performances, veuillez si possible configurer un cache mémoire. Pour plus d’information, voir la documentation ^-
• Aucun cache mémoire n’a été configuré. Pour améliorer les performances, veuillez configurer un memcache, si disponible. Pour plus d’information, voir la documentation /
• Votre installation n’a pas de préfixe de région par défaut. C’est nécessaire pour valider les numéros de téléphone dans les paramètres du profil sans code pays. Pour autoriser les numéros sans code pays, veuillez ajouter « default_phone_region >> avec le code ISO 3166-1 respectif de la région dans votre fichier de configuration. Pour plus d’information, voir la documentation /
Vous n’avez pas encore paramétré ou vérifié la configuration de votre serveur mail. Merci de le faire sur la page << Paramètres de base ». Ensuite, utilisez le bouton << Envoyer un courriel >> sous le formulaire pour vérifier vos paramètres. Pour plus d’information, voir la documentation /
Merci de consulter les guides d’installation et de vérifier les erreurs ou avertissements des journaux.
Vérifier la sécurité de votre Nextcloud grâce à notre scan de sécurité

Capture d’écran :

Bonjour à toustes,

Je crois qu’il est impossible pour moi d’abandonner si près du but :wink:

J’ai continué mes recherches et j’ai posté plusieurs questions sur différents forums :

Sur le forum nextcloud

Sur le forum de yunohost
Car je sais que nextcloud est facile à installer avec yunohost mais ce dernier ne peut s’installer manifestement qu’avec debian. Ce qui n’est pas le cas du VPS que j’ai pour dodoc. Egalement, j’ai peur que le script d’installation de yunohost efface dodoc et tout son paramétrage et en particulier nginx que j’ai galéré à paramétrer.

La réponse indique qu’il est impossible d’installer yunohost sur ubuntu22. Que ce dernier va probablement faire sa tambouille avec nginx…
Donc si je ne parviens pas à finaliser l’installation de nexcloud sur mon VPS actuel, je passerai tout sur un autre serveur debian. Mais ce sera l’ultime solution.

Sur le forum d’ubuntu
Il y a une section pour les serveur. J’ai tenté ma chance. A l’heure actuel je n’ai pas de réponse. Erreurs après installation de Nextcloud sur un VPS / Serveurs / Forum Ubuntu-fr.org

Affaire à suivre

Guillaume

Mais laissez moi tranquille :exploding_head:

Je vois je vois :slight_smile:
La piste docker est plutôt pertinente oui, je suis pas calé sur le sujet mais y a un docker-compose qui traine pour dodoc, je pourrai le retrouver.
À voir :slight_smile:

Salut Louis,
Je crois que je vais reformater mon serveur, et y installer un docker pour y remettre dodoc.
Y a t-il une marche à suivre pour sauver l’instance dodoc ? Avec les Data ?
Je penssais à ouvrir un dépot github et y mettre mon archive. Puis recharger ce dépot plutôt que le votre. Qu’en dis -tu ?
Merci et a très vite

À priori tu as juste besoin de sauvegarder ton dossier de contenu (lourd, max taille d’un fichier pour github = 100mo), et le fichier de config de dodoc settings.json
Je ferai une nouvelle installation de dodoc depuis github / git clone etc.
Sauvegarder / renvoyer les contenus en sFTP.
Remettre le fichier de config dans le dossier de l’app dodoc.

Mmh Ok merci,
Donc si je comprend bien :

  1. je copie l’archive placé sur /home/ubuntu/dodoc sur un disque dure
  2. J copie le settings.json. Mais où se trouv t-il déjà ?
  3. Je fais ma tambouille avec docker
  4. Je réinstalle tout comme précisé dans la doc d’installation de dodoc
  5. Je replace les données au bon endroit. Reste à trouver le chemin .

J’ai retrouvé l’image docker mais elle date d’il y a 4 ans : https://hub.docker.com/r/luceole/dodoc Ca marche quand même ?

Bonne soirée

Il y a plus récent, mais je te recommande d’attendre que @Petitprof et son fils documentent pour avoir un docker-compose à jour :slight_smile:

Les docs sont par défaut dans /Documents/dodoc , le chemin que tu indique ressemble plutôt à celui contenant l’installation de dodoc (ou tu peux aussi trouver le fichier de config settings.json si tu l’as créé).