{"id":817,"date":"2021-07-28T22:11:54","date_gmt":"2021-07-28T22:11:54","guid":{"rendered":"https:\/\/asgardius.company\/?p=817"},"modified":"2021-07-28T22:11:54","modified_gmt":"2021-07-28T22:11:54","slug":"montando-un-servidor-de-almacenamiento-de-objetos-compatible-con-amazon-s3","status":"publish","type":"post","link":"https:\/\/asgardius.company\/?p=817","title":{"rendered":"Montando un servidor de almacenamiento de objetos compatible con Amazon S3"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/06\/server-567944_960_720.png\" alt=\"\" class=\"wp-image-776\"\/><\/figure>\n\n\n\n<p>El uso de sistemas de almacenamiento basado en objetos para aplicaciones en la nube es algo relativamente com\u00f9n, siendo Simple Storage Service de Amazon uno de los m\u00e1s populares. Con el software MinIO podremos montar un servidor compatible con este protocolo. Ser\u00e1 necesario un servidor con las siguientes caracter\u00edsticas<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Procesador X86 o ARM de 64 bits<\/li>\n\n\n\n<li>2 nombres de host apuntando a nuestro servidor (en este caso usar\u00e9 object.asgardius.company para la API y panel.asgardius.company para la consola de administraci\u00f3n)<\/li>\n\n\n\n<li>Una cantidad considerable de almacenamiento<\/li>\n\n\n\n<li>Alguna distribuci\u00f3n actual de GNU\/Linux (El software se puede usar tambi\u00e9n en Microsoft Windows y Mac OS, pero requieren pasos diferentes a los de este tutorial)<\/li>\n\n\n\n<li>Un servidor web (en este tutorial usaremos NGINX)<\/li>\n<\/ul>\n\n\n\n<p>Primero necesitamos descargar el ejecutable. Si el procesador del servidor es X86 lo descargamos de la siguiente forma<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo wget https:\/\/dl.min.io\/server\/minio\/release\/linux-amd64\/minio -O \/usr\/bin\/minio\nsudo chmod +x \/usr\/bin\/minio<\/code><\/pre>\n\n\n\n<p>Si el procesador es ARM lo hacemos de esta forma<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo wget https:\/\/dl.min.io\/server\/minio\/release\/linux-arm64\/minio -O \/usr\/bin\/minio\nsudo chmod +x \/usr\/bin\/minio<\/code><\/pre>\n\n\n\n<p>Crearemos un nuevo usuario para este programa<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo groupadd --system minio\nsudo useradd -s \/sbin\/nologin --system -g minio minio<\/code><\/pre>\n\n\n\n<p>Creamos un nuevo directorio para alojar los datos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir \/var\/lib\/minio\nsudo chown -R minio:minio \/var\/lib\/minio<\/code><\/pre>\n\n\n\n<p>Creamos un servicio para Systemd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/minio.service<\/code><\/pre>\n\n\n\n<p>Agregamos el siguiente contenido<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Minio\nDocumentation=https:\/\/docs.minio.io\nWants=network-online.target\nAfter=network-online.target\nAssertFileIsExecutable=\/usr\/bin\/minio\n\n&#91;Service]\nWorkingDirectory=\/var\/lib\/minio\nUser=minio\nGroup=minio\n\nEnvironmentFile=-\/etc\/default\/minio\n#ExecStartPre=\/bin\/bash -c \"if &#91; -z \\\"${MINIO_VOLUMES}\\\" ]; then echo \\\"Variable MINIO_VOLUMES not set in \/etc\/default\/minio\\\"; exit 1; fi\"\n\nExecStart=\/usr\/bin\/minio server \/var\/lib\/minio --address 127.0.0.1:1200 --console-address 127.0.0.1:1201\n\n# Let systemd restart this service always\nRestart=always\n\n# Specifies the maximum file descriptor number that can be opened by this process\nLimitNOFILE=65536\n\n# Disable timeout logic and wait until process is stopped\nTimeoutStopSec=infinity\nSendSIGKILL=no\n\n&#91;Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n\n\n\n<p>Adaptamos los n\u00fameros de puerto en caso de querer cambiarlos. Creamos el archivo de configuraci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/default\/minio<\/code><\/pre>\n\n\n\n<p>Agregamos el nombre de usuario y contrase\u00f1a que queremos para el administrador, adem\u00e1s de la regi\u00f3n y la URL mediante la cual se acceder\u00e1 a la API y a la consola (object.asgardius.company y panel.asgardius.company respectivamente en este caso)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MINIO_SERVER_URL=\"https:\/\/object.asgardius.company\"\nMINIO_BROWSER_REDIRECT_URL=\"https:\/\/panel.asgardius.company\"\nMINIO_ROOT_USER=\"admin\"\nMINIO_ROOT_PASSWORD=\"password\"\nMINIO_API_CORS_ALLOW_ORIGIN=\"*\"<\/code><\/pre>\n\n\n\n<p>Iniciamos el servicio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable --now minio<\/code><\/pre>\n\n\n\n<p>Instalamos NGINX y Certbot para el cifrado SSL<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install nginx certbot python3-certbot-nginx<\/code><\/pre>\n\n\n\n<p>Creamos 2 archivos de configuraci\u00f3n en NGINX para hacer accesible nuestra instalaci\u00f3n de MinIO<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/nginx\/sites-enabled\/object.asgardius.company<\/code><\/pre>\n\n\n\n<p>El de la API nos quedar\u00eda algo as\u00ed, para la consola de administraci\u00f3n se cambiar\u00eda el puerto 1200 por 1201 en caso de haber utilizado la plantilla de systemd sin cambios<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name object.asgardius.company;\n    root \/var\/www\/html;\n    # To allow special characters in headers\n    ignore_invalid_headers off;\n    # To disable buffering\n    proxy_buffering off;\n\n    index index.html index.htm;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:1200;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header Host $http_host;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        client_max_body_size 0;\n    }\n\n\n    location ~ \/\\.ht {\n        deny all;\n    }\n\n}<\/code><\/pre>\n\n\n\n<p>Obtenemos el certificado<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart nginx\nsudo certbot --nginx<\/code><\/pre>\n\n\n\n<p>Ahora podemos entrar a la consola de administraci\u00f3n de MinIO desde la direcci\u00f3n elegida<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/07\/Captura-de-pantalla_2021-07-28_15-09-10-1024x578.png\" alt=\"\" class=\"wp-image-820\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>El uso de sistemas de almacenamiento basado en objetos para aplicaciones en la nube es algo relativamente com\u00f9n, siendo Simple Storage Service de Amazon uno de los m\u00e1s populares. Con el software MinIO podremos montar un servidor compatible con este protocolo. Ser\u00e1 necesario un servidor con las siguientes caracter\u00edsticas Primero necesitamos descargar el ejecutable. Si&hellip; <a class=\"more-link\" href=\"https:\/\/asgardius.company\/?p=817\">Seguir leyendo <span class=\"screen-reader-text\">Montando un servidor de almacenamiento de objetos compatible con Amazon S3<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-817","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=817"}],"version-history":[{"count":0,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/817\/revisions"}],"wp:attachment":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}