Ce guide est bien entendu réalisé à vos propres risques. Nous déclinons toute responsabilité.
Pourquoi choisir SFTP plutôt que MinIO ou S3 ?
Il existe plusieurs raisons de choisir SFTP comme solution de serveur de fichiers plutôt que MinIO / S3:
- Configuration plus facile, plus simple et moins encombrée
- Plus facile à mettre à jour qu'un serveur MinIO
- Utilise uniquement le port 22 (ou un autre port attribué)
Pourquoi choisir TransIP ou un fournisseur VPS ?
Voici quelques avantages de l’utilisation de TransIP ou d’un fournisseur VPS pour votre serveur SFTP :
- Infrastructure existante avec sauvegardes
- Possibilité de lier grand rangement pour une capacité de stockage accrue
- Options de mise à niveau faciles pour un espace disque supplémentaire. N'oubliez pas d'allouer le nouvel espace disque sous Linux.
D'autres partis comme NetCup dispose de serveurs de stockage dédiés. Nous ne les avons pas testés, nous ne sommes donc pas sûrs qu'ils soient évolutifs. Nous avons testé un VPS TransIP avec un Ajout d'un grand espace de stockage.
Configuration d'un serveur SFTP sans stockage important
Étape 1 : Configurer un serveur TransIP/VPS avec un groupe SSD SFTP
Choisissez TransIP comme fournisseur de serveur et configurez un groupe SFTP SSD :
sudo groupadd sftp
Étape 2 : Configurer le serveur SFTP sur Ubuntu
Suivez les instructions sur https://linuxhint.com/setup-sftp-server-ubuntu/ pour configurer le serveur SFTP.
sudo nano /etc/ssh/sshd_config
Ajoutez les lignes suivantes :
Groupe de correspondance sftp ChrootDirectory /home X11Forwarding non AllowTcpForwarding non ForceCommand internal-sftp
sudo systemctl redémarrer ssh
sudo addgroup sftp sudo useradd -m VOTREUTILISATEUR -g sftp sudo passwd VOTREUTILISATEUR sudo chmod 700 /home/ VOTREUTILISATEUR/
Étape 3 : Modifier la configuration SSH
Modifiez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config
Modifiez la ligne suivante :
Mot de passeAuthentification oui
C'est moins sécurisé, alors choisissez au moins un mot de passe fort. Mais encore mieux, utilisez des clés SSH, qui sont BIEN plus sécurisées (si vous ne les divulguez pas).
Redémarrer SSH :
sudo systemctl redémarrer ssh
Étape 4 : Configurer le pare-feu
Configurez votre pare-feu pour autoriser les connexions entrantes uniquement sur le port 22 à partir de votre IP personnelle, de votre IP de bureau et des IP de votre serveur si nécessaire.
Étape 5 : Connexion via le client SFTP
Utilisez un client comme FileZilla pour vous connecter à votre serveur SFTP :
sftp [email protected]
Étape 6 : Installer le pilote SFTP Flysystem Laravel
Installez le Pilote SFTP Flysystem Laravel pour activer l'intégration SFTP dans votre application Laravel :
compositeur nécessite league/flysystem-sftp-v3 "^3.0"
Étape 7 : Configurer SFTP dans Laravel
Modifiez la configuration du système de fichiers de votre Laravel (config/filesystems.php
):
'sftp' => [ 'driver' => 'sftp', 'host' => env('SFTP_HOST'), // Paramètres pour l'authentification de base... 'username' => env('SFTP_USERNAME'), 'password' => env('SFTP_PASSWORD'), 'throw' => env('APP_DEBUG'), 'root' => env('SFTP_USERNAME'), ],
Étape 8 : Créer un script de vérification de l’espace disque
Créer un script shell (vérification de l'espace disque.sh
) pour vérifier périodiquement l'espace disque sur votre serveur. Il existe plusieurs guides pour cela, comme : https://www.cyberciti.biz/tips/shell-script-to-watch-the-disk-space.html
Étape 9 : Ajouter un script à Cron
Ajoutez le script de vérification de l'espace disque au crontab pour l'exécuter à des intervalles spécifiés.
Commander TransIP Big Storage
Si vous avez besoin d'une capacité de stockage supplémentaire, suivez le guide à l'adresse https://www.transip.nl/knowledgebase/artikel/195-big-storage-aan-linux-koppelen/ pour commander du stockage de grande taille auprès de TransIP. En français : https://www.transip.eu/knowledgebase/entry/195-how-add-big-storage-linux/
Configuration d'un répertoire utilisateur ou alternatif Big Storage
Si vous souhaitez utiliser un autre répertoire ou utiliser TransIP Big Storage, qui est monté par exemple sur /mnt/bigstorage , suivez ces étapes. Commencez par créer un groupe sftp de stockage Big Storage :
sudo nano /etc/ssh/sshd_config
Ajoutez les lignes suivantes :
Groupe de correspondance sftpbigstorage ForceCommand internal-sftp ChrootDirectory /mnt/bigstorage/%u PermitTunnel non AllowAgentForwarding non AllowTcpForwarding non X11Forwarding non
Ensuite exécutez (remplacez myuser01 par votre nom d'utilisateur) :
sudo mkdir /mnt/bigstorage/myuser01 sudo chown racine:racine /mnt/bigstorage sudo chown -R racine:racine /mnt/bigstorage/myuser01 sudo chmod -R 755 /mnt/bigstorage/myuser01 sudo adduser --home /mnt/bigstorage/myuser01 myuser01 sudo usermod -a -G sftpbigstorage myuser01 sudo usermod -s /sbin/nologin myuser01 sudo systemctl restart sshd sudo mkdir /mnt/bigstorage/myuser01/files/ sudo chown -R myuser01:myuser01 /mnt/bigstorage/myuser01/files/ sudo systemctl restart ssh
Lors de la copie de fichiers via sftp, vous devrez peut-être réaffecter les autorisations :
sudo chown -R monutilisateur01:monutilisateur01 /mnt/bigstorage/monutilisateur01/fichiers/
REMARQUE LA PLUS IMPORTANTE : sftp nécessite que la racine possède /mnt/bigstorage et /mnt/bigstorage/USERNAME . Pour que l'utilisateur puisse modifier quelque chose, un sous-répertoire comme /mnt/bigstorage/USERNAME/files ou /mnt/bigstorage/USERNAME/www est requis. Ceci est parfaitement décrit dans ce post. Ce guide est également utile : https://thunderysteak.github.io/sftp-user-chroot
En suivant ces étapes, vous pouvez configurer un serveur de fichiers SFTP de base sur votre serveur à l'aide de TransIP ou d'un autre fournisseur VPS. SFTP offre une alternative plus simple et moins complexe aux services tels que MinIO ou S3, tout en permettant des transferts de fichiers sécurisés. L'intégration de SFTP avec Laravel/PHP permet une gestion transparente des fichiers dans vos applications.
Autres alternatives pour l'hébergement de fichiers avec SFTP
- Utiliser Amazon S3 : fonctionne bien, mais coûte cher
- Bunny Storage: alternative SFTP intéressante, à un prix assez raisonnable et facile à utiliser installation.
- MinIO: Alternative S3 auto-hébergée