Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
server:free:nextcloud [2019/09/14 20:37] tfeneuil [Serveur mail] |
server:free:nextcloud [2020/03/04 20:40] (Version actuelle) tfeneuil [Configuration du stockage primaire] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
===== Installation des prérequis ===== | ===== Installation des prérequis ===== | ||
- | [[https://docs.nextcloud.com/server/16/admin_manual/installation/source_installation.html | + | Ressource : [[https://docs.nextcloud.com/server/16/admin_manual/installation/source_installation.html |
- | |Installation Guide]] | + | |Documentation officielle - Installation Guide]] |
==== Installation de PHP7.3 ==== | ==== Installation de PHP7.3 ==== | ||
+ | |||
+ | Ressource : [[https://tecadmin.net/install-php-debian-9-stretch/|How To Install PHP (7.3, 7.2 & 5.6) on Debian 9 Stretch]] | ||
Depuis la version 16 de NextCloud, il faut une version supérieure à PHP7.1. Actuellement, la version la plus récente de PHP est la version 7.3, donc c'est celle-ci que tu vas installer. | Depuis la version 16 de NextCloud, il faut une version supérieure à PHP7.1. Actuellement, la version la plus récente de PHP est la version 7.3, donc c'est celle-ci que tu vas installer. | ||
Ligne 21: | Ligne 23: | ||
sudo apt-get install php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring | sudo apt-get install php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring | ||
sudo apt-get install php7.3-intl php-imagick php7.3-xml php7.3-zip php7.3-ldap | sudo apt-get install php7.3-intl php-imagick php7.3-xml php7.3-zip php7.3-ldap | ||
+ | | ||
+ | ==== Préparation de l'annuaire LDAP ==== | ||
+ | |||
+ | Ressource : [[https://tylersguides.com/guides/openldap-memberof-overlay/ | OpenLDAP memberOf overlay]] | ||
+ | |||
+ | Pour faire fonctionner correctement LDAP avec NextCloud, il faut que le module ''%%memberOf%%'' soit activé. | ||
+ | |||
+ | Exécute la commande suivante pour voir s'il y a déjà des modules dans ton serveur LDAP : | ||
+ | |||
+ | slapcat -n 0 | grep olcModuleLoad | ||
+ | | ||
+ | S'il y en a (si des lignes apparaissent), charge le module de la manière suivante. | ||
+ | |||
+ | ldapmodify -Q -Y EXTERNAL -H ldapi:/// | ||
+ | dn: cn=module{0},cn=config | ||
+ | changetype: modify | ||
+ | add: olcModuleLoad | ||
+ | olcModuleLoad: memberof.la | ||
+ | | ||
+ | Et s'il y en a pas, charge le module de la manière suivante. | ||
+ | |||
+ | ldapadd -Y EXTERNAL -Q -H ldapi:/// | ||
+ | dn: cn=module,cn=config | ||
+ | cn: module | ||
+ | objectClass: olcModuleList | ||
+ | olcModulePath: /usr/lib/ldap | ||
+ | olcModuleLoad: memberof.la | ||
+ | |||
+ | Pour terminer, active le ! | ||
+ | |||
+ | ldapadd -Y EXTERNAL -H ldapi:/// | ||
+ | dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config | ||
+ | objectClass: olcOverlayConfig | ||
+ | objectClass: olcMemberOf | ||
+ | olcOverlay: memberof | ||
+ | olcMemberOfRefint: TRUE | ||
+ | | ||
+ | Pour plus d'informations, va voir ''%%man slapo-memberof%%''. | ||
==== Préparation de Apache2 ==== | ==== Préparation de Apache2 ==== | ||
Ligne 78: | Ligne 118: | ||
==== Préparation de la base de données MySQL ==== | ==== Préparation de la base de données MySQL ==== | ||
+ | |||
+ | Ressource : [[https://docs.nextcloud.com/server/15/admin_manual/configuration_database/mysql_4byte_support.html|Enabling MySQL 4-byte support]] | ||
Afin de pouvoir profiter au maximum des services que nous propose NextCloud. Il faut changer l'encodage de la base de données. La procédure suivante est valable pour MariaDB10.2 ou inférieur (ce qui était mon cas). Sinon trouve la procédure sur ... . Pour connaître ta version de Maria, exécute ''%%mysql -e "SELECT version();"%%''. | Afin de pouvoir profiter au maximum des services que nous propose NextCloud. Il faut changer l'encodage de la base de données. La procédure suivante est valable pour MariaDB10.2 ou inférieur (ce qui était mon cas). Sinon trouve la procédure sur ... . Pour connaître ta version de Maria, exécute ''%%mysql -e "SELECT version();"%%''. | ||
Ligne 124: | Ligne 166: | ||
==== Configuration du cache mémoire ==== | ==== Configuration du cache mémoire ==== | ||
+ | |||
+ | Ressource : [[https://docs.nextcloud.com/server/15/admin_manual/configuration_server/caching_configuration.html|Memory caching]] | ||
Je te propose (conseil de la documentation de NextCloud) d'utiliser APCu pour le cache local et Redis pour le cache distribué. | Je te propose (conseil de la documentation de NextCloud) d'utiliser APCu pour le cache local et Redis pour le cache distribué. | ||
Ligne 197: | Ligne 241: | ||
?> | ?> | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Si tu as déjà installé NextCloud (via l'interface graphique ou via l'API), il faut que tu rajoutes ces options directement dans le fichier ''%%/var/www/nextcloud/config/config.php%%''. | ||
+ | </WRAP> | ||
+ | |||
+ | ==== Configuration du gestion des fichiers supprimés ==== | ||
+ | |||
+ | Il est possible de configurer Nextcloud pour qu'il ait une certaine gestion des fichiers supprimés. Au bout de 6 mois d'utilisation, je me suis dit que la facture n'était pas en adéquation avec le volume des fichiers dans mon cloud. Et en fait, c'était parce que j'avais plus de 60 Go dans ma corbeille (qui s'était accumulé durant tous les mois), et que le volume dans la corbeille ne compte pas lorsque Nextcloud affiche la taille totale de tes fichiers. | ||
+ | |||
+ | Du coup, il est judicieux de configurer Nextcloud pour qu'il gère comme on le souhaite les fichiers supprimés. Il existe plusieurs options possibles (clique [[https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#deleted-items-trash-bin|ici]] pour voir toutes les possibilités), mais j'ai choisi de configurer Nextcloud pour qu'il supprime définitivement les fichiers supprimés au bout de 30 jours (et j'autorise qu'il les supprime avant s'il a besoin de place). | ||
+ | |||
+ | |||
+ | Crée le fichier ''%%/var/www/nextcloud/config/trashbin.config.php%%'' avec le contenu suivant : | ||
+ | |||
+ | <?php | ||
+ | $CONFIG = array( | ||
+ | 'trashbin_retention_obligation' => 'auto, 30', | ||
+ | ); | ||
+ | ?> | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Ligne 203: | Ligne 266: | ||
==== Configuration du stockage primaire ==== | ==== Configuration du stockage primaire ==== | ||
+ | |||
+ | Ressource : [[https://github.com/nextcloud/server/issues/5865|Object storage as primary storage is broken in Nextcloud12]] | ||
Si tu voulais faire une installation classique où les fichiers sont sauvegardés dans un dossier du serveur (et non pas sur un Object Storage), tu peux sauter cette étape. | Si tu voulais faire une installation classique où les fichiers sont sauvegardés dans un dossier du serveur (et non pas sur un Object Storage), tu peux sauter cette étape. | ||
- | Créer le fichier ''%%/var/www/nextcloud/config/storage.config.php%%'' avec le contenu suivant : | + | Crée le fichier ''%%/var/www/nextcloud/config/storage.config.php%%'' avec le contenu suivant : |
<?php | <?php | ||
$CONFIG = array( | $CONFIG = array( | ||
+ | 'objectstore' => array( | ||
+ | 'class' => '\\OC\\Files\\ObjectStore\\Swift', | ||
+ | 'arguments' => array( | ||
+ | 'autocreate' => true, | ||
+ | 'user' => array( | ||
+ | 'name' => '************', | ||
+ | 'password' => '************', | ||
+ | 'domain' => array( | ||
+ | 'name' => 'default', | ||
+ | ), | ||
+ | ), | ||
+ | 'scope' => array( | ||
+ | 'project' => array( | ||
+ | 'name' => '************', | ||
+ | 'domain' => array( | ||
+ | 'name' => 'default', | ||
+ | ), | ||
+ | ), | ||
+ | ), | ||
+ | 'tenantName' => '************', // Same value as 'scope/project/name' | ||
+ | 'serviceName' => 'swift', | ||
+ | 'region' => 'GRA', | ||
+ | 'url' => 'https://auth.cloud.ovh.net/v3/', | ||
+ | 'bucket' => 'nextcloud', | ||
+ | ), | ||
+ | ), | ||
); | ); | ||
?> | ?> | ||
Ligne 216: | Ligne 307: | ||
Il est fortement déconseillé de changer la configuration de l'espace primaire de stockage après l'installation de NextCloud (via l'interface graphique ou l'API). En effet, cela aurait pour conséquence de rendre tous les fichiers sur le Cloud inaccessible et cela augmenterait les probabilités d'avoir une installation cassée (pendant mes tests, cela m'est arrivé plusieurs fois). | Il est fortement déconseillé de changer la configuration de l'espace primaire de stockage après l'installation de NextCloud (via l'interface graphique ou l'API). En effet, cela aurait pour conséquence de rendre tous les fichiers sur le Cloud inaccessible et cela augmenterait les probabilités d'avoir une installation cassée (pendant mes tests, cela m'est arrivé plusieurs fois). | ||
</WRAP> | </WRAP> | ||
+ | |||
==== Installation de NextCloud ==== | ==== Installation de NextCloud ==== | ||
Ligne 297: | Ligne 389: | ||
* Slogan : Géré par Thibauld Feneuil | * Slogan : Géré par Thibauld Feneuil | ||
* Couleur : #43A72A | * Couleur : #43A72A | ||
+ | |||
+ | ===== Plugins ===== | ||
+ | |||
+ | ==== Liste des plugins ==== | ||
+ | |||
+ | Voici une liste de plugins intéressants (sur le principe) : | ||
+ | |||
+ | * Fichiers : | ||
+ | * //Automated PDF Conversion// | ||
+ | * //Draw.io// | ||
+ | * //Extract// | ||
+ | * //File Access Control// | ||
+ | * //File Clipboard// | ||
+ | * //Files From Mail// | ||
+ | * //Group Folder// | ||
+ | * //**MetaData**// | ||
+ | * Multimedia : | ||
+ | * //Phone Sync// | ||
+ | * //Phone Track// | ||
+ | * //**Talk**// | ||
+ | * //Video Convertor// | ||
+ | * Bureautique : | ||
+ | * //Calendar// | ||
+ | * //Carnet// | ||
+ | * //**Collabora Online**// | ||
+ | * //Mail// | ||
+ | * //Markdown editor// | ||
+ | * //Notes// | ||
+ | * //Notifications for calendar event updates// | ||
+ | * //**Task**// | ||
+ | * Organisation : | ||
+ | * //Contacts// | ||
+ | * //Forms// | ||
+ | * //Map// | ||
+ | * //**Polls**// | ||
+ | * Security : | ||
+ | * //Antivirus for files// | ||
+ | * //Guests// | ||
+ | * //Passwords// | ||
+ | |||
+ | Sont **en gras** les plugins que j'ai installés. | ||
+ | |||
+ | ==== Collabora Online ==== | ||
+ | |||
+ | Parlons de l'installation de //Collabora Online//, un plugin pour faire de l'édition collaborative (comme avec Google drive). Attention, //Collabora Online// nécessite l'utilisation d'un Docker, donc pour suivre ce qui suit, installe Docker si ce n'est pas déjà fait. | ||
+ | |||
+ | Télécharge et lance le Docker de //Collabora Online//. | ||
+ | |||
+ | docker pull collabora/code | ||
+ | docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.aprilas\\.fr' --restart always --cap-add MKNOD collabora/code | ||
+ | |||
+ | Maintenant, il faut configurer //Apache2//. //Collabora Online// a besoin des modules suivants : | ||
+ | |||
+ | a2enmod proxy proxy_wstunnel proxy_http ssl | ||
+ | | ||
+ | Crée un certificat SSL pour ''%%office.aprilas.fr%%'' qui va héberger l'édition collaborative. | ||
+ | |||
+ | /etc/init.d/apache2 stop | ||
+ | /opt/letsencrypt/letsencrypt-auto --rsa-key-size 4096 certonly --standalone -d office.aprilas.fr | ||
+ | /etc/init.d/apache2 start | ||
+ | | ||
+ | Crée le fichier ''%%/etc/apache2/sites-available/office.conf%%'' avec le contenu suivant : | ||
+ | |||
+ | <VirtualHost *:443> | ||
+ | ServerName office.aprilas.com:443 | ||
+ | | ||
+ | # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! | ||
+ | Include /etc/letsencrypt/options-ssl-apache.conf | ||
+ | SSLCertificateFile /etc/letsencrypt/live/office.aprilas.fr/fullchain.pem | ||
+ | SSLCertificateKeyFile /etc/letsencrypt/live/office.aprilas.fr/privkey.pem | ||
+ | | ||
+ | # Encoded slashes need to be allowed | ||
+ | AllowEncodedSlashes NoDecode | ||
+ | | ||
+ | # Container uses a unique non-signed certificate | ||
+ | SSLProxyEngine On | ||
+ | SSLProxyVerify None | ||
+ | SSLProxyCheckPeerCN Off | ||
+ | SSLProxyCheckPeerName Off | ||
+ | | ||
+ | # keep the host | ||
+ | ProxyPreserveHost On | ||
+ | | ||
+ | # static html, js, images, etc. served from loolwsd | ||
+ | # loleaflet is the client part of LibreOffice Online | ||
+ | ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 | ||
+ | ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet | ||
+ | | ||
+ | # WOPI discovery URL | ||
+ | ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 | ||
+ | ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery | ||
+ | | ||
+ | # Main websocket | ||
+ | ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon | ||
+ | | ||
+ | # Admin Console websocket | ||
+ | ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws | ||
+ | | ||
+ | # Download as, Fullscreen presentation and Image upload operations | ||
+ | ProxyPass /lool https://127.0.0.1:9980/lool | ||
+ | ProxyPassReverse /lool https://127.0.0.1:9980/lool | ||
+ | | ||
+ | # Endpoint with information about availability of various features | ||
+ | ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0 | ||
+ | ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities | ||
+ | </VirtualHost> | ||
+ | | ||
+ | Active l'hôte créé et redémarre //Apache2//. | ||
+ | |||
+ | a2ensite office | ||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | Active le plugin "Collabora Online" dans la section "Bureautique & texte" des applications de NextCloud. Et dans les paramètres d'administration, dans l'onglet "Collabora Online", renseigne les paramètres suivants : | ||
+ | * Serveur : https://office.aprilas.fr |