Nextcloud Apache2 : config

Petite tambouille dès le début... ça promet !

le 05-07-24 17:27

Supposons maintenant que vous avez installé tout ce que je mentionnais dans l'épisode précédent, c'est à dire OS et soft divers (les points 1 et 2). Je ne reprends pas ces installations (os, apache php etc.) le net regorge d'explications. Et encore une fois, faisons simple (Mais rappelez vous, je vous dis ce que MOI j'ai fait parce que ça m'arrangeait MOI et que je voulais le faire comme ça parce que ça ME plaisait. :))
Vous disposez donc d'un raspberry qui boot sur sa sdcard et qui charge une partition stockée sur les disques mis en miroir. Cette partition, je l'ai appelé "extend".

Vous avez également un apache qui se lance correctement avec php et un nextcloud installé quelque part.
Premiere intention, nextcloud est constitué de deux choses : le repertoire html avec son code et son répertoire de stockage pour toutes les données que vous y stockerez. Je me le note donc : modifier l'emplacement du stockage (dans ma todo). Je le veux sur extend et surtout pas sur la sdcard. (nb : sur la version d'origine à mon installation, le choix de l'emplacement n'était pas demandé, peut etre l'est il maintenant avec les version 28 ou 29)
Deuxieme intention, les fichiers log sont toujours sur la sdcard (à moins que vous n'ayez installé un outil de log pour les transferer ailleurs). Comme je veux surveiller et que les logs risquent de grossir assez vite, je change l'emplacement du /var/log/apache2 avec un coup de ln pour le fixer sur extend. (ce qui consiste à virer le rep d'origine, à en creer un sur extend et à faire un "sudo ln -s cheminVersExtend/apache2 /var/log/apache2"
Ensuite on va tout de suite commencer par mettre le serveur apache à l'équerre. Je veux que le serveur ne soit accessible que sur un canal httpS.
Donc un petit coup de config est nécéssaire. (je mettrais le fichier de config à la fin du texte)

  1. je créé un fichier nextcloud.conf dans "/etc/apache2/sites-available"
  2. dans ce fichier je fixe le port d'écoute pour mon virtualhost. Perso, je change et ne laisse pas celui par défaut (443) car je suis un gros parano. Comme les scans des hackers en herbe fouillent inlassablement le net pour trouver des failles, ils commencent toujours par chercher les standards, 80 et 443. Pour l'exemple ici, je dis qu'on le met sur 886 avec SSLengine on.
  3. j'ajoute les sécurités réclamées par Nextcloud
  4. je mets le reste des infos et j'enregistre
  5. je change le fichier /etc/apache2/ports.conf pour y ajouter le port 886 (sinon apache2 n'écoutera pas le port)
  6. je termine par la création d'un lien de fichier dans /etc/apache2/sites.enabled/ vers le fichier nextcloud créé (sinon le site ne sera pas accessible) avec : "ln -s /etc/apache2/sites.available/nextcloud.conf"

Voilà, on devrait être pas mal là. Bon, si vous avez envie de vérifier que tout va bien, vous pouvez redémarrer apache et vous saurez si vous n'avez pas écrit de boulettes...

Le fichier nextcloud.conf:
[prism="language-javascript"]
<VirtualHost *:444>

secu tout azimut...

Protocols h2 h2c http/1.1
Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains;"
Header always set Referrer-Policy "strict-origin"

def d'utilisation du protocol ssl

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA3>
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire

nom de l'admin server (où xxx=username yyy=nom defini dans dynu on va revenir la dessus plus tard)

ServerAdmin xxx#yyy.dynuddns.net

DocumentRoot /var/www/nextcloud
ServerName yyy.dynuddns.net
Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

Dav off

pas obligatoire mais peut etre pratique

RewriteEngine on
RewriteCond %{SERVER_NAME} =yyy.dynuddns.net:886
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

comme c'est en prod, on ne veut que les "alert" mais au besoin changez le niveau

LogLevel alert
ErrorLog /var/log/apache2/nextcloud-error_log
CustomLog /var/log/apache2/nextcloud-access_log common

on va en avoir besoin par la suite

Include /etc/letsencrypt/options-ssl-apache.conf

[/prism]

Image par 愚木混株 Cdd20 de Pixabay