Por supuesto, esta guía se realiza bajo su propio riesgo. No asumimos ninguna responsabilidad.
¿Por qué elegir SFTP en lugar de MinIO o S3?
Hay varias razones para elegir SFTP como solución de servidor de archivos en lugar de MiniIO / T3:
- Configuración más fácil, sencilla y ordenada
- Más fácil de actualizar que un servidor MinIO
- Utiliza solo el puerto 22 (u otro puerto asignado)
¿Por qué elegir TransIP o un proveedor de VPS?
Estas son algunas ventajas de utilizar TransIP o un proveedor de VPS para su servidor SFTP:
- Infraestructura existente con copias de seguridad
- Posibilidad de vincular gran almacenamiento para mayor capacidad de almacenamiento
- Opciones de actualización sencillas para obtener espacio adicional en disco. No olvide asignar el nuevo espacio en disco en Linux.
A otras fiestas les gusta NetCup tiene servidores de almacenamiento dedicadosNo los hemos probado, por lo que no estamos seguros de si son escalables. Probamos un VPS TransIP junto con un Ampliación de almacenamiento.
Configuración de un servidor SFTP sin gran capacidad de almacenamiento
Paso 1: Configurar el servidor TransIP/VPS con el grupo SFTP SSD
Elija TransIP como su proveedor de servidor y configure un grupo SFTP SSD:
sudo groupadd sftp
Paso 2: Configurar el servidor SFTP en Ubuntu
Siga las instrucciones en https://linuxhint.com/setup-sftp-server-ubuntu/ para configurar el servidor SFTP.
sudo nano /etc/ssh/sshd_config
Añade las siguientes líneas:
Grupo de coincidencias sftp ChrootDirectory /home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
sudo systemctl reiniciar ssh
sudo addgroup sftp sudo useradd -m TUUSUARIO -g sftp sudo passwd TUUSUARIO sudo chmod 700 /home/TUUSUARIO/
Paso 3: Editar la configuración de SSH
Editar el archivo de configuración SSH:
sudo nano /etc/ssh/sshd_config
Cambie la siguiente línea:
Autenticación de contraseña sí
Esto es menos seguro, así que elige al menos una contraseña segura. Pero mejor aún, usa claves SSH, que son MUCHO más seguras (si no las filtras).
Reiniciar SSH:
sudo systemctl reiniciar ssh
Paso 4: Configurar el firewall
Configure su firewall para permitir conexiones entrantes solo en el puerto 22 desde su IP residencial, IP de oficina e IP de servidor si es necesario.
Paso 5: Iniciar sesión a través del cliente SFTP
Utilice un cliente como FileZilla para conectarse a su servidor SFTP:
sftp TUUSUARIO@dirección.ip
Paso 6: Instalar el controlador SFTP Flysystem Laravel
Instalar el Controlador SFTP Flysystem Laravel Para habilitar la integración de SFTP en su aplicación Laravel:
El compositor requiere league/flysystem-sftp-v3 "^3.0"
Paso 7: Configurar SFTP en Laravel
Edite la configuración del sistema de archivos de su Laravel (config/sistemasdearchivos.php
):
'sftp' => [ 'driver' => 'sftp', 'host' => env('SFTP_HOST'), // Configuración para la autenticación básica... 'username' => env('SFTP_USERNAME'), 'password' => env('SFTP_PASSWORD'), 'throw' => env('APP_DEBUG'), 'root' => env('SFTP_USERNAME'), ],
Paso 8: Crear un script de verificación de espacio en disco
Crear un script de shell (comprobación de espacio en disco.sh
) para comprobar periódicamente el espacio en disco de su servidor. Existen varias guías para ello, como: https://www.cyberciti.biz/tips/shell-script-to-watch-the-disk-space.html
Paso 9: Agregar script a Cron
Agregue el script de verificación de espacio en disco al crontab para ejecutarlo en intervalos específicos.
Cómo solicitar almacenamiento de gran capacidad TransIP
Si necesita capacidad de almacenamiento adicional, siga la guía en https://www.transip.nl/knowledgebase/artikel/195-big-storage-aan-linux-koppelen/ Para solicitar almacenamiento de gran capacidad a TransIP. En inglés: https://www.transip.eu/knowledgebase/entry/195-how-add-big-storage-linux/
Configuración de un usuario de Big Storage o un directorio alternativo
Si desea utilizar un directorio diferente o desea utilizar TransIP Big Storage, que está montado, por ejemplo, en /mnt/bigstorage, siga estos pasos. Comience por crear un grupo SFTP de Big Storage:
sudo groupadd sftpbigstorage sudo nano /etc/ssh/sshd_config
Añade las siguientes líneas:
Grupo de coincidencias sftpbigstorage ForceCommand internal-sftp ChrootDirectory /mnt/bigstorage/%u PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Luego ejecuta (reemplaza myuser01 con tu nombre de usuario):
sudo mkdir /mnt/bigstorage/myuser01 sudo chown root:root /mnt/bigstorage sudo chown -R root:root /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
Al copiar archivos a través de sftp es posible que necesites reasignar los permisos:
sudo chown -R myuser01:myuser01 /mnt/bigstorage/myuser01/files/
NOTA MÁS IMPORTANTE: sftp necesita que el root sea el propietario de /mnt/bigstorage y /mnt/bigstorage/USERNAME. Para que el usuario pueda editar algo, se requiere un subdirectorio como /mnt/bigstorage/USERNAME/files o /mnt/bigstorage/USERNAME/www. Esto se describe perfectamente en Esta publicaciónTambién te resultará útil esta guía: https://thunderysteak.github.io/sftp-user-chroot
Si sigue estos pasos, podrá configurar un servidor de archivos SFTP básico en su servidor mediante TransIP u otro proveedor de VPS. SFTP ofrece una alternativa más simple y menos compleja a servicios como MiniIO o S3, al mismo tiempo que permite transferencias de archivos seguras. La integración de SFTP con Laravel/PHP permite una gestión de archivos sin inconvenientes en sus aplicaciones.
Otras alternativas para el alojamiento de archivos con SFTP
- Uso de Amazon S3: funciona bien, pero es caro
- Bunny Storage:Interesante alternativa SFTP, con un precio bastante decente y fácil de usar. configuración.
- MiniIO: Alternativa a S3 autoalojada