informatique

Nextcloud Apache2 : config

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 vo...
Fiji
Nextcloud Apache2 : config

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:

<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
    <IfModule mod_dav.c>
        Dav off
    </IfModule>
</Directory>

#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
</VirtualHost>

Image par 愚木混株 Cdd20 de Pixabay

Écrit par Fiji