Aller au contenu principal

Sujets

Cette espace vous permet de voir toutes les Sujets réalisées par ce membre. Vous ne pouvez voir que les Sujets réalisées dans les espaces auxquels vous avez accès.

Sujets - squid-f

1
Internet, réseaux et serveurs / Perfectionnement NGINX
Bonjour à toutes et tous

Maintenant que j'ai réussi à faire un serveur NEXTCLOUD sous NGINX, j'aimerais me perfectionner à l'utilisation de NGINX pour, par exemple, installer un serveur de document ONLYOFFICE ou héberger un petit site Web sur la même machine que mon serveur NEXTCLOUD.

Est-ce que vous auriez un bouquin à conseiller, abordable pour un autodidacte ?

Merci!

A+
2
Présentations / Squid-f
Bonjour à toutes et à tous.

Je n’aime pas bien parler de moi mais cela semble être l’usage de se présenter, voire même, une valeur liée à la solidarité et le contact humain de ce forum / association (in fine, cela fera toujours notre différence par rapport à nos machine, j’espère).

J’ai toujours été passionné par la technologie et l’innovation ; soif d’apprendre et de découvrir des choses nouvelles par moi-même.
Je suis arrivé à Linux au tout début des années 2000. Je voulais arrêter de jouer avec les anti-virus et j’en avais ras le bol de restaurer Windows et de voir ses registres se remplir sans jamais se vider (l’entropie est pour Microsoft une notion bien exploitée).
J’ai complètement basculé mon PC vers Linux à la naissance de ma fille en 2003. On sortait moins cette année là !   :D
En fait, le plus long a été de faire en sorte que le bureau ne soit pas trop perturbant pour mon épouse. Il fallait aussi que les logiciels de bureautique puissent suffisamment rivaliser avec ceux de Microsoft.

J’ai commencé par déployer Ubuntu pendant quelques années. Puis j’ai eu des soucis de compatibilités de carte wifi au fil des versions et avec l’agrandissement du parc informatique de la famille (quelle aubaine l’arrivée des portables abordables pour le chiffre d’affaire des fabricants !).

Je suis passé par Fedora puis j’ai découvert OpenSuse en 2013. J’ai eu un peu de mal à l’époque avec des versions de logiciels en décalage avec les dernières moutures. Je n’ai pas réussi à m’habituer à KDE et mon épouse avait du mal avec Gnome.
Du coup, on est passé à Linux Mint. Je dois reconnaître que je trouve beaucoup d’avantage au bureau Cinnamon.
Que j’ai  regretté Alionet par contre !

Il y a quelques mois, une régression lors de la mise à jour du noyau de Linux Mint m’a obligé à réinstaller mon serveur Nextcloud ; galère d’autant que je n’avais pas beaucoup de temps à y consacrer.
De plus, l’intégration perfectible de gnome calendar dans Linux Mint m’empêchait de déployer Nextcloud pour toute la famille (challenge personnel de sortir Google de la maison après avoir chassé Microsoft).
J’ai donc décidé un grand ménage : Opensuse pour mon serveurs HTPC/nextcloud et Manjaro Gnome pour le PC de bureau.

Et j’apprécie par l’occasion de revenir sur Alionet que je fréquentais régulièrement à une époque. J’apprécie votre ouverture, votre disponibilité et votre contribution aux logiciels libres. J’essayerai de mettre ma pierre (ou une humble petite brique) de temps à autre.

À bientôt donc.

Christian
3
Internet, réseaux et serveurs / Tuto d'installation serveur Nextcloud sous Leap 15.1
Bonjour à toutes et à tous.

Grâce à l’aide reçue sur ce forum, j’ai pu finaliser l’installation de mon serveur Nextcloud.
En fait, il y a beaucoup de tutos pour ubuntu mais très peu pour Opensuse. D’ailleurs, je n’ai rien trouvé pour Leap 15.x
Donc, sans prétentions, je poste ce tuto car j’ai passé beaucoup de temps à adapter les tutos des autres distributions à Opensuse (je ne suis pas un pro!). Si cela peut aider d’autres personnes, j’en serai ravi.
De plus, si les experts de ce forum ont des idées d’améliorations ou si j’ai fait des choses qui exposent mon serveur à la malveillance, je suis preneur de toute remarque.

Avant de commencer, voici les sources qui m’ont bien aidé :
https://www.c-rieger.de/nextcloud-installation-guide-ubuntu-18-04/
https://decatec.de/home-server/nextcloud-auf-ubuntu-server-18-04-lts-mit-nginx-mariadb-php-lets-encrypt-redis-und-fail2ban/
https://www.howtoforge.com/tutorial/owncloud-nginx-opensuse-leap-42.1/
https://nextcloud.com/support/
et notre cher sogal sur Alionet !

Installation de NGINX et PHP
J’ai choisi d’installer une autre version de php-fpm que celle d’origine de Leap 15.1 car le module password de Nextcloud ne va bientôt plus supporter php-fpm7.2.
La version 7.3 sera installée grâce à (php7-apcu et imagick sont dans extensions) :
zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/ php-devel
zypper addrepo https://download.opensuse.org/repositories/server:php:extensions:php7/php7_openSUSE_Leap_15.1/server:php:extensions:php7.repo
zypper refresh

Je garde les versions par défaut de nginx et mariadb car, d’après sogal, Opensuse Leap recevra les mises à jour de sécurité.

Installation de nginx
zypper in nginx 

Installation de PHP
En disséquant la documentation de Nextcloud, j’ai abouti à la liste et l’installation des modules suivants :
sudo zypper in php7 php7-APCu php7-bz2 php7-ctype php7-curl php7-dom php7-exif php7-fileinfo php7-fpm php7-gd php7-gmp php7-iconv php7-imagick php7-intl php7-json php7-ldap php7-mbstring php7-mysql php7-opcache php7-openssl php7-pcntl php7-pdo php7-posix php7-tokenizer php7-xmlreader php7-xmlwriter php7-zip  php7-zlib ffmpeg-3 

Tests initiaux NGINX et PHP-FPM
Test de NGINX
Créer  /srv/www/htdocs/index.html avec
<html>
<body>
<h1> NGINX fonctionne </h1>
</body>
</html>

Modifier /etc/nginx/nginx.conf
Ajouter index.php dans la ligne ci-dessous vers le début du fichier :
        
index  index.html index.htm index.php;

enlever les symboles # de commentaire pour la bloc ci-dessous :
location ~ \.php$ {
    root           /srv/www/htdocs/;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
 }

Tester la syntaxe des modifications avec la commande ci-dessous qui ne doit pas renvoyer d’erreur :
sudo nginx -t
Démarrer le service
sudo systemctl enable nginx
sudo systemctl start nginx

Dans navigateur taper : localhost et le message « NGINX fonctionne » doit apparaître

Test PHP-FPM
 Créer /srv/www/htdocs/info.php avec
<?php
phpinfo();
?>

Initialiser les fichiers de configuration
sudo cp /etc/php7/fpm/php-fpm.conf.default  /etc/php7/fpm/php-fpm.conf
sudo cp /etc/php7/fpm/php-fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm/php-fpm.d/www.conf

modifier php-fpm.conf en enlevant le symbole # de la ligne ci-dessous :
error_log = log/php-fpm.log

modifier www.conf  comme ci-dessous, en changeant user et group, et en enlevant le symbole de commentaire qui est cette fois ; pour d’autres:
user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

pour améliorer la performance, modifier www.conf de façon à écouter un socket et non un port. Pour cela, commenter la ligne listen = 127.0.0.1:9000 et ajouter une ligne pour pointer vers un socket :
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

Revenir sur /etc/nginx/nginx.conf et modifier comme suit le bloc location ~ \.php$ en ajoutant la ligne fastcgi_pass pointant le même socket que dans www.conf :
 location ~ \.php$ {
             root           /srv/www/htdocs/;
             #fastcgi_pass   127.0.0.1:9000;
             fastcgi_pass   unix:/var/run/php-fpm.sock;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include        fastcgi_params;
         }

Initialiser le service :
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Taper localhost/info.php pour avoir des informations sur la configuration php installée.
https://www.alionet.org/index.php?action=dlattach;sa=tmpattach;attach=post_tmp_33_2337f2e0a91756b5c1bf10c2d55698d9;topic=0

Maintenant que nous nous sommes assurés que NGINX et PHP-FPM fonctionnent, nous allons avancer dans leur optimisation et finir l’installation de NEXTCLOUD

Optimisation de NGINX

Modification du fichier /etc/nginx/nginx.conf
    • user : utilisateur du serveur web : nginx
    • worker_processes : nombre de coeurs du CPU : auto
    • pid : j’ai décommenté la ligne mais je n’ai pas trouvé d’explication. Je suis preneur d’information !
    • server_tokens : mettre à off pour la sécurité en limitant les informations fournies par nginx.
    • TCP_NOPUCH, TCP_NODELAY, SENDFILE : en les combinant on peut gagner jusqu’à 0,2s lors de l’envoi des données.

En repartant du fichier nginx.conf juste modifié, ajuster les lignes comme suit :
user  nginx;
worker_processes  auto;

pid        /var/run/nginx.pid;

tcp_nopush     on;
tcp_nodelay     on;

server_tokens off;

Test & Restart NGINX
sudo nginx -t 
sudo systemctl restart nginx

Optimisation de PHP
Modification de /etc/php7/fpm/php-fpm.d/www.conf

J’ai limité pm.max_children à 150 en utilisant la formule ci-dessous :
Total Max Processes = (Total Ram - (Used Ram + Buffer)) / (Memory per php process)
En allouant 5Go de ram à mon serveur et avec une taille de 35Mo par requête PHP, cela donne : (1024*5) / 35 = 146.
    • user / group : à mettre en consistence avec le serveur = nginx
    • Listen : pointer vers le même socket que les autres fichiers = /run/php/php-fpm.sock
    • Environment Variables: NEXTCLOUD à besoin de ces variables = bloc à décommenter.
    • Prévention d’un timeout de nextcloud à l’installation avec request_terminate_timeout = 300
     
Ajuster les lignes du fichier comme suit :
user = nginx
group = nginx

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

pm.max_children = 150

pm.start_servers = 20

pm.min_spare_servers = 10

pm.max_spare_servers = 20

pm.max_requests = 500

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

;ajout de la ligne ci-dessous
request_terminate_timeout = 300

modification de /etc/php7/cli/php.ini
    • cgi.fix_pathinfo : pour améliorer la sécurité = 0
    • expose_php = off évite d’avoir accès à la version de php depuis l’extérieur
    • Plus d’autres paramètres d’optimisation de fonctionnement (memory_limit = 512M est demandé par NEXTCLOUD).

Le fichier php.ini existe déjà dans le répertoire /etc/php7/cli ; ajuster les lignes du fichier comme suit :
 
implicit_flush = Off

expose_php = Off

max_execution_time = 1800

max_input_time = 3600
 
memory_limit = 512M
 
html_errors = On
 
register_argc_argv = Off

post_max_size = 10240M
 
cgi.fix_pathinfo=0
 
upload_max_filesize = 10240M
 
max_file_uploads = 100
 
date.timezone = Europe/Paris

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1


Création de /etc/php7/fpm/php.ini
A l’installation, ce fichier n’existe pas. J’ai donc juste copié le fichier php.ini du répertoire /etc/php7/cli que nous venons de modifier.
sudo cp /etc/php7/cli/php.ini /etc/php7/fpm

Modification de /etc/php7/fpm/php-fpm.conf
Pour faire redémarrer FPM en cas d’erreurs répétées dans un laps de temps.
Ajuster les lignes du fichier comme suit :
pid = /var/run/php-fpm.pid

error_log = /var/log/php-fpm.log
 
emergency_restart_threshold = 10
 
emergency_restart_interval = 1m
 
process_control_timeout = 10s

Mise à jour permission
Important car a empêché la connexion dans Nextcloud malgré les bons nom d’utilisateur et mot de passe.
sudo chown nginx:nginx /var/lib/php7

Création hôte virtuel Nextcloud dans NGINX
A noter que mon serveur nextcloud sera appelé par un sous-répertoire de mon nom domaine : https://mon_domaine/nextcloud
Mon fournisseur internet (free) me permet de créer gratuitement un nom de domaine (avec extension hd.free.fr) qui pointe vers mon serveur. Il ne faudra pas oublier sur la freebox de faire un transfert de port vers l’adresse IP de la machine qui sert de serveur.
Créer le fichier /etc/nginx/vhosts.d/nextcloud.conf (c’est une version sans certificat SSL car certbot s’en chargera ensuite) comme suit et en modifiant mon_domaine par votre nom de domaine :

https://www.alionet.org/index.php?action=dlattach;sa=tmpattach;attach=post_tmp_33_83030c2fc6f295c1024556022389228a;topic=0

Pare-feu
Avec Yast, autoriser http et https

Install Letsencrypt avec Certbot
On peut obtenir un certificat SSL gratuitement grâce à Let’s Encrypt.
Installation du client certbot conseillé par Let’s Encrypt. J’installe aussi le plugin nginx qui fera la modification du fichier nextcloud.conf
sudo zypper in python3-certbot-nginx

Pour obtenir le certificat, lancer la commande suivante et en remplaçant mon_email et mon_domaine par les vôtres :
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email[color=red] mon_email[/color] -d [color=red]mon_domaine[/color] --rsa-key-size 4096

Modification du ficher SSL créé par CERTBOT
Recommendation de sites comme SSLAB d’arrêter d’utiliser TLSv1
sudo nano /etc/letsencrypt/options-ssl-nginx.conf

remplacer :
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
par :
ssl_protocols TLSv1.3 TLSv1.2;

cron de renouvellement des certificats
En effet, au bout de 3 mois le certificat expire. Il faut le renouveler et pour cela un script cron est créé (source : sogal)
Créer script cron certbot à placer dans /etc/cron.weekly/

sudo nano /etc/cron.weekly/certbot

#!/bin/sh
# Stop nginx first
systemctl stop nginx
# Renew certs
certbot --standalone renew
# Restart nginx
systemctl start nginx

Penser à le rendre exécutable:
chmod +x /etc/cron.weekly/certbot

MariaDB

Installation par :
zypper in mariadb

puis initialiser par :
sudo rcmysql start

Securisation de MariaDB
sudo mysql_secure_installation
Vous allez devoir répondre aux questions comme suit :
Switch to unix_socket authentication [Y/n] N
Enter current password for root (enter for none): <ENTER>
Set root password? [Y/n] Y
[i]Entrer votre mot de passe et s’en rappeler[color=red][/color][/i]
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Création de la base de données
    • Nom de la base de données : nextcloud
    • Son administrateur nextcloud_admin
    • le mot de passe associé admin_password

sudo mysql -uroot -p
> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER nextcloud_admin@localhost identified by 'admin_password'; GRANT ALL PRIVILEGES on nextcloud.* to nextcloud_admin@localhost; FLUSH privileges; quit;

Installation serveur Nextcloud
    • Télécharger l’archive depuis le site de Nextcloud et la décompresser
    • Copier le répertoire nextcloud dans /srv/www (ATTENTION : l’archive décompressée contient un sous-répertoire avant celui de nextcloud…)
    • Puis donner le bon propriétaire (nginx) :
       
chown -R nginx:nginx /var/www/nextcloud

J’ai placé la base donner nextcloud dans un répertoire en-dehors de srvwwwnextcloud
J’ai créé le répertoire /data/nextcloud_data   pour cela :
sudo mkdir /data/nextcloud_data
puis   
sudo chown -R nginx:nginx /data/nextcloud_data

Lancer ensuite un navigateur internet (firefox par exemple) et taper l’adresse : https://mon_domaine/nextcloud

Vous obtiendrez l’interface de configuration de nextcloud.
Il faut créer l’utilisateur administrateur et entrer les informations de la configuration de la base de données mysql créée précédemment dans la section mariadb.

Ajout d’un cronjob pour Nextcloud
   
su -
crontab -u nginx -e
et taper :
*/5 * * * * php -f /srv/www/nextcloud/cron.php > /dev/null 2>&1

APCU cache pour Nextcloud
Pour améliorer les performances, ajouter dans le fichier /srv/nextcloud/config/config.php :
'memcache.local' => '\OC\Memcache\APCu',

FAIL2BAN
C’est pour bannir les adresses IP de personnes malveillantes qui tenteraient de s’identifier sur le serveur.
Au bout de 3 tentatives infructueuses de connexion, l’adresse IP sera bannie.

Installation de fail2ban :
zypper in fail2ban

(7 paquets d'installés :  ed fail2ban libgamin-1-0 python2-pyinotify python2-systemd python-gamin whois)

Ajouter des lignes suivantes dans /etc/fail2ban/filter.d/nextcloud.conf

[Definition]
failregex=^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}$
            ^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","app":"core".*","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)".*}$
            ^.*\"remoteAddr\":\"<HOST>\".*Trusted domain error.*$

Création d’un nouveau fichier prison pour nextcloud :
nano /etc/fail2ban/jail.d/nextcloud.local

et y copier les lignes suivantes :
[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 36000
findtime = 36000
logpath = /data/nextcloud_data/nextcloud.log
[nginx-http-auth]
enabled = true 

Redémarrer fail2ban-service et vérifier son statut :
sudo systemclt restart fail2ban
sudo fail2ban-client status nextcloud
Qui donne le résultat suivant :
Status for the jail: nextcloud
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list: /data/nextcloud_data/nextcloud.log
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:

Pour contrôler les IP bannies
sudo fail2ban-client status nextcloud 

Pour autoriser à nouveau une IP
sudo fail2ban-client set nextcloud unbanip ip_address

Vous pouvez aussi par la suite faire en sorte que fail2ban vous envoie un email en cas de blocage (configurer postfix pour cela).

Et voilà. Pour moi cela fonctionne du tonnerre.  8)
J’espère que cela pourra aider quelqu’un à se lancer !
N’oublier pas de faire des sauvegardes régulières de vos données et serveurs (voir documentation sur nextcloud.com).
Bien entendu, comme dit la maxime de nos jours, je me dois de décliner toute responsabilité en cas de perte de données ou de réinstallation du système...

A bientôt !

Christian
4
Internet, réseaux et serveurs / Projet Spamhaus
Bonjour à toutes et à tous

Que pensez-vous du projet SPAMHAUS et de sa liste d'adresse IP réputées novices qu'il faudrait bloquer ?

Je pose la question car j'ai un serveur Nextcloud ouvert sur l'extérieur et je me demande si c'est une sécurité intéressante à installer (via iptable du firewall, si j'ai bien compris).

Lien (en anglais car la version française est vraiment très succincte) : Spamhaus_wikipedia

Merci à vous!
5
Internet, réseaux et serveurs / Mise à jour de Leap 15.1 vers PHP7.3.11
Bonjour

J'ai fini l'installation de mon serveur Nextcloud sous Leap 15.1
J'ai utilisé la version d'origine de PHP : PHP 7.2.5 puis j'ai vu une alerte de sécurité sur le forum de Nextcloud recommandant de mettre à jour vers PHP7.2.24 ou 7.3.11
Tant qu'à faire, j'ai voulu passer en 7.3 qui a eu durée de vie plus longue mais j'ai quelques soucis que voici.

Tout d'abord, j'ai ajouté le dépôt : home:illuusio:php-next  
Puis j'ai lancé la mise à jour de PHP7 sous YAST. J'ai alors plein de mise à jour de modules complémentaires (7.2.5 vers 7.3.11).
Le redémarrage du service php-fpm se passe sans erreur dans la console (sudo systemctl restart php-fpm).
J'ai aussi redémarré le serveur nginx sans erreur (sudo systemctl restart nginx).

Par contre, en me connectant à mon serveur nextcloud, j'obtiens un message : Internal server error.

En fouinant un peu dans les logs de nextcloud, je trouve des alertes liées aux modules php7-apcu et php7-imagick.

D'ailleurs, bien qu'il n'y ait pas eu d'erreur au démarrage du service php-fpm, la commande php -v renvoie un message intéressant :
Kris@linux-arpr:~> php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'apcu.so' (tried: /usr/lib64/php7/extensions/apcu.so (/usr/lib64/php7/extensions/apcu.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/apcu.so.so (/usr/lib64/php7/extensions/apcu.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php7/extensions/imagick.so (/usr/lib64/php7/extensions/imagick.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/imagick.so.so (/usr/lib64/php7/extensions/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.3.11 (cli) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

En regardant les mises à jour, il semble effectivement que les modules php7-apcu et php7-imagick n'aient pas été mis à jour. J'ai essayé de les mettre à jour spécifiquement en cherchant dans les dépots communautaires mais cela n'a rien changé.

Est-ce que quelqu'un a déjà essayé de mettre à jour Leap 15.1 avec PHP7.3.1 ?

Pour info, j'ai finalement mis à jour en 7.2.24 grâce au dépot : home:ecsos:server:Sabre et c'est passé comme une lettre à la poste. 8)
Par contre, j'ai l'application Passwords de Nextcloud qui ne supportera plus PHP7.2 en début 2020 et je reste fortement intéressé par passer en 7.3

Merci pour votre aide!
6
Internet, réseaux et serveurs / [RESOLU]cronjob pour renouveler certificat CERTBOT
Bonjour à vous

Super clean ce nouveau forum. Merci!

Par contre, j'avais gardé précieusement un post dans lequel sogal donnait un exemple de cronjob pour renouveler automatiquement mon certificat créé par CERTBOT pour mon serveur NEXTCLOUD  (j'ai installé python3-certbot et son plugin NGINX). J'ai voulu faire cela aujourd'hui mais je ne le retrouve pas.

Est-ce qu'il y a un moyen de retrouver ce post de l'ancien forum ou est-ce que sogal pourrait avoir la gentillesse de me redonner la recette ?

Merci bien!