Con los precios que tenemos ahora de almacenamiento S3 en CONTABO, a 9.96€ + IVA el Tera hasta un total de 25TB no hay razón por la que no puedas montar tu VPS con este almacenamiento como backend de datos, hay veces que lo que necesitas mas que potencia de procesamiento es capacidad de almacenamiento y con este tutorial voy a explicarte cómo montar almacenamiento S3 como almacenamiento local en VPS Ubuntu 20.04 con rclone.
Que es rclone
Rclone es una herramienta de software con interface de línea de comandos utilizada para copiar, sincronizar, gestionar y migrar archivos y directorios a un servidor remoto, a la nube o a otro tipo de almacenamiento. Se puede instalar en Linux, Windows, macOS, Debian, OpenBSD y otros sistemas operativos. Actualmente, es compatible con más de 40 almacenamientos en la nube incluyendo, AWS, Google Cloud, Google Drive, Dropbox, pCloud, Zoho, Mega y más. También soporta los protocolos SSH y SFTP para sincronizar archivos entre servidores Linux.
que es almacenamiento S3
S3 es la abreviatura de Amazon Simple Storage Service o Amazon S3. Es un servicio en la nube proporcionado por AWS para el almacenamiento de datos seguro, altamente disponible y redundante. Es utilizado por una infinidad de clientes de muchos tamaños diferentes para realizar alguna o varias de estas tareas
- Copia de seguridad y restauración (Bakcup)
- Recuperación de desastres (Disaster recovery)
- Archivo ( Archiving)
- Aplicaciones de Internet
- Lagos de datos
- Análisis de grandes datos (Data Anlisys)
- Almacenamiento en la nube híbrida
- Almacenamiento de datos de aplicaciones nativas de la nube
Una consola web, S3 Management Console, ofrece funciones de administración fáciles de usar para organizar los datos y configurar controles de acceso bien ajustados. También se pueden utilizar protocolos estandarizados para acceder a Amazon S3.
Las unidades de almacenamiento de Amazon S3 son objetos que se organizan en cubos (buckets). Los cubos se utilizan para organizar los archivos, como una carpeta. Se puede almacenar una cantidad infinita de datos en los buckets. No hay límite en el número de objetos que se pueden cargar y cada objeto puede contener hasta 5 TB de datos.
Los cubos pueden administrarse con la consola de administración de S3, utilizando el SDK de AWS o con la API REST de Amazon S3. También se puede utilizar la interfaz HTTP GET y el protocolo BitTorrent para descargar objetos. Los objetos de un bucket también pueden servirse como un feed de BitTorrent para reducir los costes de ancho de banda de las descargas.
La ubicación de los buckets de Amazon S3 se especifica mediante el protocolo s3 (s3:// Protocol). También se especifica el prefijo que se utilizará para leer o escribir archivos en un cubo.
Los permisos, las revisiones y otros ajustes pueden definirse a nivel de cubo. Los permisos de carga y descarga pueden concederse a un máximo de tres tipos de usuarios. La autenticación protege los datos del acceso no autorizado.
Cuando se activa el registro, los registros se almacenan en cubos y pueden utilizarse para analizar información, como por ejemplo
- Fecha y hora de acceso al contenido solicitado
- El protocolo utilizado (por ejemplo, HTTP, FTP)
- Códigos de estado HTTP
- Tiempo de respuesta
- Mensaje de solicitud HTTP
Estos registros pueden ser analizados y gestionados con herramientas de terceros.
Contratando los servicios
Lo primero de todo, si aun no tienes un VPS es contratarlo tienes que contratarlo, Te dejo en enlace (sin afiliados ni comisiones) https://contabo.com/en/vps/vps-s-ssd/?image=ubuntu.267&qty=1&contract=1&storage-type=vps-s-200-gb-ssd Si contratas mes a mes tendrás un coste de implantación inicial solo el primer mes. A partir de ahí 4.99€ + IVA.
Ahora que ya tienes tu VPS puedes contratar tu almacenamiento S3 en CONTABO, te dejo el enlace (también sin afiliados ni comisiones) https://contabo.com/en/object-storage/order/?region=european-union&size=250 En la captura de pantalla he preseleccionado 5TB pero podéis seleccionar desde 250GB con un coste de 2,50€ mas IVA al mes.
Una simple suma os confirma que algo menos de 60€ + IVA dispones de un VPS (4 CPU 8 Gb de RAM 200GB de almacenamiento local) con 5 Tb de almacenamiento de objetos remoto, que a continuación te explico como integrar.
Cómo montar almacenamiento S3 como almacenamiento local en VPS Ubuntu 20.04 con rclone
Instalar Rclone
Ejecuta un simple comando para instalar Rclone
apt install rclone -y
Comprueba la versión que has instalado
rclone --version
En el momento de este tutorial la versión que utilice fue:
rclone v1.50.2 - os/arch: linux/amd64 - go version: go1.13.8
Configurar sitio remoto
En Rclose se denomina remoto a cada uno de los almacenamientos remotos de los que dispones para montar en tu VPS, para configurar un remoto, creamos un fichero en esta ruta
mkdir -p ~/.config/rclone/
Editamos el fichero rclone.conf
sudo nano ~/.config/rclone/rclone.conf
Definimos el remoto con los siguiente valores (recuera que lo que esta en azul lo tienes que sustituir por tus propios valores. Entre corchetes vas a poner el nombre que le quieres dar a este Remoto, luego en "type"
pondrás S3
, ya que se trata de almacenamiento S3. en "provider"
, como Contabo no esta en la lista de proveedores de Rclone, pones “Other” en “access_key_id” pone las key que encontraras en el apartado de seguridad y acceso de tu panel de gestión de Contabo. En el campo region puedes poner Europa, la localizacion de Contabo en Europa es Alemania. El endpoint de contabo es https://eu2.contabostorage.com
[s3-nine] type = s3 provider = Other access_key_id = 6aaf50b18357446ab1a25a6c93361569 secret_access_key = fcf2c9c6bc5c4384a4e1dbff99d2cc52 region = la uicacion que querais (europa) endpoint = https://eu2.contabostorage.com
Ahora vamos a montar manual mente un bucket de ese almacenamiento en una ruta de nuestra VPS. Imagina que quieres usar este almacenamiento por que tu pagian web tiene mucho contenido en la carpeta de WordPress “uploads”, en la variable <Bucketname>
podrías upload
y en la variable <Mountpoint>
pondrias /var/www/html/tu-carpeta-web/wp-content/uploads
rclone mount s3-nine:<Bucketname> /<Mountpoint> --vfs-cache-mode writes --use-server-modtime
Una vez comprobado que no te da ningún error el comando, puedes confirmar que todo funciona bien copiando algunos archivos a la carpeta /var/www/html/tu-carpeta-web/wp-content/uploads
y si todo va bien podemos montar un servicio para que el montaje sea automatico y se realice en el momento de iniciar el VPS.
Para crear el servicio vamos a usar systemd, el gestor de demonios que tiene Ubuntu, crea un fichero Unit file con la extensión .service en la ruta /lib/systemd/system el fchero se llamara “nombre_del_servicio.service”
sudo nano /lib/systemd/system/rclone.service
En este fichero definimos [Unit]
con la descripción del servicio la ruta donde se puede encontrar la documentación del mismo, la dependencia Wants=network-online.target
(requiere) la red funcionado (al ser un servicio remoto necesita red para tener acceso) por lo que vamos a definir que el servicio arranque una vez que la red esta levantada After=network-online.target
.
[Unit] Description=rclone mount Documentation=http://rclone.org/docs/ Wants=network-online.target After=network-online.target StartLimitInterval=500 StartLimitBurst=5
Después añadimos la descripción del servicio en si [Service]
declarando que es del tipo Type=notify
y declarando el punto de montaje Environment=MOUNTPOINT=<MOUNTPOINT>
, poniendo un nombre al remoto Environment=REMOTE_NAME=s3-nine, declarando el nombre del bucket s3 donde se guardaran los archios Environment=BUCKETNAME=<BUCKETNAME>, utilizar buckets te permite compartimentar, podrias tener varios buckets asignados cada uno a una aplicación o a un VPS diferente. Declaramos que el servicio se reinicie si tiene un fallo, Restart=on-failure y que lo haga despues de 5 segundos RestartSec=5.
Definimos el comando que va a realizar el montaje ExecStartPre=/bin/bash -c "/usr/bin/fusermount -uzq ${MOUNTPOINT} || true"
y despues ejecutaremos el montaje el remoto propiamente dicho ExecStart=/usr/bin/env “${HOME}/bin/rclone” mount con parametros que permitan acceso al bucket a otros usuarios –allow-other , permitir montar un directorio que no este vacio –allow-non-empty, declaro los permisos de los directorios del bucket –dir-perms 0775 y de los ficheros de esos directorios –file-perms 0775 y declaro los grupos de usuarios que pueden usarlo –umask 000 declaro el modo de cache –vfs-cache-mode writes y delcaro que reloj quiero que se use para la fecha de los ficheros que se van a escribir en le bucket –use-server-modtime
[Service] Type=notify Environment=MOUNTPOINT=/var/www/html/tu-carpeta-web/wp-content/uploads Environment=REMOTE_NAME=s3-nine Environment=BUCKETNAME=uploads Restart=on-failure RestartSec=5 ExecStartPre=/bin/bash -c "/usr/bin/fusermount -uzq ${MOUNTPOINT} || true" ExecStart=/usr/bin/env "${HOME}/bin/rclone" mount \ --allow-other \ --allow-non-empty \ --dir-perms 0775 \ --file-perms 0775 \ --umask 000 \ --vfs-cache-mode writes \ --use-server-modtime \ ${REMOTE_NAME}:${BUCKETNAME} ${MOUNTPOINT} ExecStop=/bin/fusermount -uzq ${MOUNTPOINT}
Por ultimo declaro que el remoto va a ser usado para todos los usuarios
[Install] WantedBy=multi-user.target
Y ahora lo tenemos todo junto, esto es lo que tienes que copiar dentro del archivo rclone.service
[Unit] Description=rclone mount Documentation=http://rclone.org/docs/ Wants=network-online.target After=network-online.target StartLimitInterval=500 StartLimitBurst=5 [Service] Type=notify Environment=MOUNTPOINT=/var/www/html/tu-carpeta-web/wp-content/uploads Environment=REMOTE_NAME=s3-nine Environment=BUCKETNAME=uploads Restart=on-failure RestartSec=5 ExecStartPre=/bin/bash -c "/usr/bin/fusermount -uzq ${MOUNTPOINT} || true" ExecStart=/usr/bin/env "${HOME}/bin/rclone" mount \ --allow-other \ --allow-non-empty \ --dir-perms 0775 \ --file-perms 0775 \ --umask 000 \ --vfs-cache-mode writes \ --use-server-modtime \ ${REMOTE_NAME}:${BUCKETNAME} ${MOUNTPOINT} ExecStop=/bin/fusermount -uzq ${MOUNTPOINT} [Install] WantedBy=multi-user.target
Una vez editado el archivo /lib/systemd/system/rclone.service, tienes que recargar el gestor de demonios systemctl
sudo systemctl daemon-reload
Iniciamos el servicio y ya tenemos nuestro Bucket s3 como montado como almacenamiento local en nuestro VPS
sudo systemctl start rclone.service
Una vez has recargado systemctl, habilitamos el servicio para que ejecute en el arranque del vps, esto creata un link simbolico en la ruta /etc/systemd/system
sudo systemctl enable rclone.service
Para detener el servicio si fuera necesario usa este comando, así es como se monta almacenamiento S3 como almacenamiento local en VPS Ubuntu 20.04
sudo systemctl stop rclone.service
Para comprobar el estado del servicio ejecuta este comando
sudo systemctl status rclone.service
y este otro comando lo usas cuando quieras reiniciar el servicio
sudo systemctl restart rclone.service
Ya tienes un gran poder de almacenamiento muy económico conectado a tu VPS, ahora puedes hospedar tus ficheros de audio para tú podcast y no depender exclusivamente de plataformas de terceros, puedes montar tu aplicación de gestión de fotografías sin miedo a quedarte sin espacio, una de las características del almacenamiento S3 es que puedes extenderlo en cualquier momento hasta 25TB por 10€ el TB.
Espero que puedas aprovechar muy bien este tutorial y vitaminar tus VPS con mucho espacio.
¡Qué tengas un ingenioso día!
¡que tengas un ingenioso día!
Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0
Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.