Ce tutoriel vous montrera comment installer ProjectSend sur Ubuntu 20.04 LTS avec le serveur Web Nginx.
Qu'est-ce que ProjectSend ?
ProjectSend est une solution gratuite de partage de fichiers auto-hébergée open source. Fonctionnalités de ProjectSend :
- Statistiques en temps réel
- Créer des groupes de clients
- auto-inscription et connexion sociale
- Modèles d'e-mail personnalisés
Prérequis
ProjectSend est écrit en langage de programmation PHP. Pour suivre ce tutoriel, vous devez d'abord installer la pile LEMP sur Ubuntu 20.04 . Si vous ne l'avez pas déjà fait, veuillez consulter le didacticiel suivant.
- Comment installer la pile LEMP (Nginx, MariaDB, PHP7.4-FPM) sur Ubuntu 20.04
Vous pouvez installer ProjectSend sur votre serveur domestique ou sur un VPS (serveur privé virtuel). Vous avez également besoin d'un nom de domaine, vous pourrez donc plus tard activer HTTPS pour chiffrer le trafic HTTP. J'ai enregistré mon nom de domaine auprès de NameCheap car le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie. ProjectSend peut être installé sans nom de domaine, mais cela n'a vraiment aucun sens si vous ne cryptez pas la connexion HTTP pour empêcher l'espionnage. Je recommande d'acheter un nom de domaine, si vous voulez vraiment bricoler avec un logiciel serveur et l'utiliser au maximum de son potentiel.
Installons maintenant ProjectSend.
Étape 1 :Téléchargez ProjectSend sur Ubuntu 20.04
Connectez-vous à votre serveur Ubuntu 20.04. Téléchargez ensuite l'archive zip ProjectSend sur votre serveur. La dernière version stable est r1295 au moment d'écrire ces lignes. Vous devrez peut-être modifier le numéro de version. Allez sur https://www.projectsend.org/#download pour voir la dernière version.
Vous pouvez exécuter la commande suivante pour le télécharger sur votre serveur.
wget -O projectsend.zip https://www.projectsend.org/download/387/
Une fois téléchargé, extrayez l'archive avec unzip
.
sudo apt install unzip sudo mkdir -p /usr/share/nginx/projectsend/ sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/
Le -d
L'option spécifie le répertoire cible. Les fichiers Web ProjectSend seront extraits vers /usr/share/nginx/projectsend/
. Ensuite, nous devons changer le propriétaire de ce répertoire en www-data
afin que le serveur Web (Nginx) puisse écrire dans ce répertoire.
sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R
Étape 2 :Créer une base de données et un utilisateur pour ProjectSend dans le serveur de base de données MariaDB
Connectez-vous au serveur de base de données MariaDB avec la commande suivante. Puisque MariaDB utilise maintenant unix_socket
plugin pour authentifier la connexion de l'utilisateur, il n'est pas nécessaire d'entrer le mot de passe root MariaDB. Nous avons juste besoin de préfixer le mysql
commande avec sudo
.
sudo mysql
Créez ensuite une base de données pour ProjectSend. Ce tutoriel nomme la base de données projectsend. Vous pouvez utiliser le nom de votre choix.
create database projectsend;
Créez l'utilisateur de la base de données. Encore une fois, vous pouvez utiliser votre nom préféré pour cet utilisateur. Remplacez your-password
avec votre mot de passe préféré.
create user projectsenduser@localhost identified by 'your-password';
Accordez à cet utilisateur tous les privilèges sur le projectsend
base de données.
grant all privileges on projectsend.* to projectsenduser@localhost;
Vider les privilèges et quitter.
flush privileges; exit;
Étape 3 :Configurer ProjectSend
Aller au includes
répertoire.
cd /usr/share/nginx/projectsend/includes/
Copiez l'exemple de fichier de configuration et renommez-le en sys.config.php
.
sudo cp sys.config.sample.php sys.config.php
Modifiez maintenant le nouveau fichier de configuration avec un éditeur de texte en ligne de commande comme Nano.
sudo nano sys.config.php
Recherchez les lignes suivantes et remplacez les textes rouges par le nom de la base de données, le nom d'utilisateur et le mot de passe que vous avez créés à l'étape 2.
/** Database name */ define('DB_NAME', 'database'); /** Database host (in most cases it's localhost) */ define('DB_HOST', 'localhost'); /** Database username (must be assigned to the database) */ define('DB_USER', 'username'); /** Database password */ define('DB_PASSWORD', 'password');
Enregistrez et fermez le fichier. Pour enregistrer le fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O
, puis appuyez sur Enter
confirmer. Ensuite, appuyez sur Ctrl+X
pour quitter.
Étape 4 :Créer un fichier de configuration Nginx pour ProjectSend
Créez un projectsend.conf
fichier dans /etc/nginx/conf.d/
répertoire, avec un éditeur de texte en ligne de commande comme Nano.
sudo nano /etc/nginx/conf.d/projectsend.conf
Copiez et collez le texte suivant dans le fichier. Remplacez projectsend.example.com
avec votre propre sous-domaine préféré. N'oubliez pas de créer un enregistrement DNS A pour ce sous-domaine dans votre éditeur de zone DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
server { listen 80; listen [::]:80; server_name projectsend.example.com; # Add headers to serve security related headers add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; # Path to the root of your installation root /usr/share/nginx/projectsend/; index index.php index.html; access_log /var/log/nginx/projectsend.access; error_log /var/log/nginx/projectsend.error; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /.well-known/acme-challenge { allow all; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; try_files $fastcgi_script_name =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Enregistrez et fermez le fichier. (Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O
, puis appuyez sur Enter
confirmer. Pour quitter, appuyez sur Ctrl+X
.)
Testez ensuite la configuration de Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
Étape 5 :Installer et activer les modules PHP
Exécutez les commandes suivantes pour installer les modules PHP requis ou recommandés par ProjectSend.
sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
Étape 6 :Activer HTTPS
Vous pouvez désormais accéder à l'assistant d'installation Web de ProjectSend dans votre navigateur Web en saisissant le nom de domaine de votre installation ProjectSend.
projectsend.example.com/install/index.php
Si la page Web ne peut pas se charger, vous devez probablement ouvrir le port 80 dans le pare-feu.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Et le port 443 également.
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Avant de saisir des informations sensibles, nous devons activer la connexion HTTPS sécurisée sur ProjectSend. Nous pouvons obtenir un certificat TLS gratuit auprès de Let's Encrypt. Installez le client Let's Encrypt (certbot) à partir du référentiel Ubuntu 20.04.
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
est le plugin Nginx. Ensuite, exécutez la commande suivante pour obtenir un certificat TLS gratuit à l'aide du plugin Nginx.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com
Où :
- –nginx :Utilisez l'authentificateur et le programme d'installation Nginx
- –d'accord :Acceptez les conditions d'utilisation de Let's Encrypt
- –redirection : appliquez HTTPS en ajoutant une redirection 301.
- –hsts :activez la sécurité du transport strict HTTP. Cela protège contre les attaques de suppression SSL/TLS.
- –agrafe-ocsp :Activer l'agrafage OCSP.
- –e-mail :E-mail utilisé pour l'enregistrement et le contact de récupération.
- -d flag est suivi d'une liste de noms de domaine, séparés par une virgule. Vous pouvez ajouter jusqu'à 100 noms de domaine.
Il vous sera demandé si vous souhaitez recevoir des e-mails de l'EFF (Electronic Frontier Foundation). Après avoir choisi O ou N, votre certificat TLS sera automatiquement obtenu et configuré pour vous, ce qui est indiqué par le message ci-dessous.
Étape 7 :terminez l'installation dans votre navigateur Web
Vous pouvez désormais accéder à l'assistant d'installation Web de ProjectSend à l'aide d'une connexion HTTPS.
https://projectsend.example.com/install/index.php
Pour terminer l'installation, vous devez lui donner un nom de site et créer un compte administrateur.
Cliquez sur Install
bouton, vous pourrez vous connecter à l'interface Web de ProjectSend.
Comment configurer la notification par e-mail ProjectSend
Si votre instance ProjectSend sera utilisée par plusieurs personnes, il est important que votre serveur ProjectSend puisse envoyer des e-mails transactionnels, tels que des e-mails de réinitialisation de mot de passe. Allez dans Options -> Notifications par e-mail . Vous trouverez les paramètres du serveur de messagerie. Il existe quatre modes d'envoi :
- Messagerie PHP (de base)
- SMTP
- Gmail
- Envoyer un e-mail
Vous pouvez choisir le sendmail
mode si votre hôte ProjectSend a un serveur SMTP en cours d'exécution. Laissez les autres champs vides.
Si vous souhaitez utiliser un serveur SMTP exécuté sur un autre hôte, choisissez SMTP
mode et entrez l'adresse du serveur SMTP et les identifiants de connexion comme ci-dessous. Choisissez STARTTLS pour le chiffrement.
Pour savoir comment configurer un serveur de messagerie, veuillez consulter le didacticiel suivant. Remarque que je recommande fortement d'exécuter le serveur de messagerie iRedMail sur un nouveau système d'exploitation propre. L'installation d'iRedMail sur un système d'exploitation doté d'autres applications Web peut échouer et probablement casser les applications existantes.
- Comment configurer facilement un serveur de messagerie complet sur Ubuntu 20.04 avec iRedMail
Étape 8 :Augmenter la limite de mémoire PHP
La limite de mémoire PHP par défaut est de 128 Mo. ProjectSend recommande 512 Mo pour de meilleures performances. Pour modifier la limite de mémoire PHP, modifiez le php.ini fichier.
sudo nano /etc/php/7.4/fpm/php.ini
Trouvez la ligne suivante. (ligne 409)
memory_limit = 128M
Modifiez la valeur.
memory_limit = 512M
Enregistrez et fermez le fichier. Vous pouvez également exécuter la commande suivante pour modifier la valeur sans ouvrir manuellement le fichier.
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini
Rechargez ensuite PHP-FPM service pour que les modifications prennent effet.
sudo systemctl reload php7.4-fpm
Étape 9 :Augmentez la limite de taille du fichier de téléchargement
La limite de taille de fichier de téléchargement maximale par défaut définie par Nginx est de 1 Mo. Pour autoriser le téléchargement de fichiers volumineux sur votre serveur ProjectSend, modifiez le fichier de configuration Nginx pour ProjectSend.
sudo nano /etc/nginx/conf.d/projectsend.conf
Nous avons déjà défini la taille de fichier maximale dans ce fichier, comme indiqué par
client_max_body_size 512M;
Vous pouvez le changer si vous préférez, comme 1G.
client_max_body_size 1024M;
Enregistrez et fermez le fichier. Rechargez ensuite Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
PHP définit également une limite de taille de fichier de téléchargement. La taille de fichier maximale par défaut pour le téléchargement est de 2 Mo. Pour augmenter la taille limite de téléchargement, modifiez le fichier de configuration PHP.
sudo nano /etc/php/7.4/fpm/php.ini
Trouvez la ligne suivante (ligne 846).
upload_max_filesize = 2M
Modifiez la valeur comme ci-dessous :
upload_max_filesize = 1024M
Enregistrez et fermez le fichier. Vous pouvez également exécuter la commande suivante pour modifier la valeur sans ouvrir manuellement le fichier.
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini
Redémarrez ensuite PHP-FPM.
sudo systemctl restart php7.4-fpm
Ajout d'une entrée DNS locale
Il est recommandé de modifier le /etc/hosts
fichier sur votre serveur ProjectSend et ajoutez l'entrée suivante, afin que ProjectSend lui-même n'ait pas à interroger le DNS public, ce qui peut améliorer la stabilité globale. Si votre serveur ProjectSend ne peut pas résoudre le problème projectsend.example.com
nom d'hôte, vous risquez de rencontrer un délai de passerelle 504 erreur.
127.0.0.1 localhost projectsend.example.com
Une adresse IP dans le /etc/hosts
Le fichier peut avoir plusieurs noms d'hôte, donc si vous avez d'autres applications installées sur la même boîte, vous pouvez également ajouter d'autres noms d'hôte ou sous-domaines sur la même ligne comme ceci :
127.0.0.1 localhost focal ubuntu projectsend.example.com nextcloud.example.com
Conseils de dépannage
Si vous rencontrez des erreurs, vous pouvez consulter l'un des fichiers journaux suivants pour déterminer ce qui ne va pas.
- Journal des erreurs Nginx :
/var/log/nginx/error.log
- Journal d'erreurs Nginx pour l'hôte virtuel ProjectSend :
/var/log/nginx/projectsend.error