{"id":2826,"date":"2019-01-16T11:46:34","date_gmt":"2019-01-16T11:46:34","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=2826"},"modified":"2019-03-25T19:19:27","modified_gmt":"2019-03-25T18:19:27","slug":"retirando-documentos-antiguos","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2019\/01\/16\/retirando-documentos-antiguos\/","title":{"rendered":"Retirando documentos antiguos"},"content":{"rendered":"\n<p>Desde hace un par de semanas he estado ocupado migrando las herramientas que usamos en la empresa para acceder a los documentos.<\/p>\n\n\n\n<p>De montajes NFS a servicios como Nextcloud podr\u00eda titularse esta entrada pero la cosa va un poco m\u00e1s all\u00e1. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Hace a\u00f1os que los puestos de trabajo en la empresa, que usan Linux, tienen acceso a dos fuentes de documentos: la personal en la carpeta <em>\/home\/usuario\/Documentos<\/em> y la compartida con los dem\u00e1s en <em>\/home\/usuario\/Compartidos<\/em>. Usando t\u00e9cnicas de automontaje (autofs) y acceso v\u00eda red (NFS) todo ha ido m\u00e1s o menos bien. En algunos casos se han presentado problemas con los permisos de acceso debido a m\u00e1scaras err\u00f3neas (<em>umask<\/em>) o a pereza de los usuarios al crearlas. <\/p>\n\n\n\n<p>El caso es que de un tiempo a esta parte he tenido que incluir dos m\u00e1quinas con Windows y ah\u00ed s\u00ed que se ha torcido la cosa. No soy experto en sistemas de Microsoft, procuro evitarlos en lo posible porque su dise\u00f1o es bastante ego\u00edsta y un tanto mezquino. Su negocio consiste en que no abandones su negocio, obviamente, por lo que siempre hay que andar con licencias, renovaciones y magias varias para que interact\u00faen con correcci\u00f3n. <\/p>\n\n\n\n<p>Podr\u00eda decir que los sistemas Microsoft son la excusa para el cambio y estar\u00eda faltando a toda la verdad. Lo cierto es que son miles los archivos que mis usuarios han acumulado en un par de d\u00e9cadas, que no tienen uso pr\u00e1ctico a\u00f1os ha y que, salvo excepciones muy puntuales, son ignorados por ellos. <\/p>\n\n\n\n<p>Pero el sistema no les ignora: las copias de seguridad, el espacio en disco y el ancho de banda siguen siendo empleados en tener ese monstruoso \u00e1rbol de directorios casi desaprovechado. <\/p>\n\n\n\n<p>De ah\u00ed mi pretensi\u00f3n de migrarles al un sistema como <a href=\"https:\/\/nextcloud.org\">Nextcloud<\/a>:<br \/><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Se dispone de un acceso web a los archivos, desde varios tipos de dispositivos adem\u00e1s.<\/li><li>Pueden ser indexados con facilidad para buscar en su contenido; hay disponibles varios motores de b\u00fasqueda.<\/li><li>Es m\u00e1s f\u00e1cil compartir entre compa\u00f1eros sin riesgo de que te eliminen o alteren tu trabajo por error. Incluso compartir con gente de fuera con facilidad y bastante informaci\u00f3n sobre el acceso.<\/li><li>Se simplifica el uso en diferentes sistemas operativos al pasar a emplear un programa cliente muy extendido o un protocolo est\u00e1ndar como (<em><a href=\"https:\/\/es.wikipedia.org\/wiki\/WebDAV\">webdav<\/a><\/em>).<\/li><\/ul>\n\n\n\n<p>He cometido el error de menospreciar el tama\u00f1o de los datos implicados y he provocado, al principio, problemas innecesarios. Seg\u00fan el recuento el n\u00famero de documentos asciende a unos 270.000, de los cuales unos 230.000 llevan m\u00e1s de un a\u00f1o sin acceso ni modificaci\u00f3n. As\u00ed que he pensado que para no triturar al servidor ahora ni en el futuro seguir cierto plan y crear un archivo con esos hist\u00f3ricos fuera del circuito normal de ficheros en red.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Crear un servidor virtual con Apache que me sirva de hist\u00f3rico de archivos. <\/li><li>Efectuar una copia de todo el \u00e1rbol de documentos compartidos (para empezar) en dicho servidor. <\/li><li>Configurar el indexado bonito en el servidor web (m\u00f3dul<a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_autoindex.html\">o mod_autoind<\/a>ex).<\/li><li>Proteger el acceso empleando el servidor <a href=\"https:\/\/esferas.org\/msqlu\/2016\/09\/20\/ldap-y-cuentas-de-usuarios\/\">LDAP<\/a>. <\/li><\/ol>\n\n\n\n<p>M\u00e1s adelante tengo pensado dividirlo en grupos por tipo dado que hay documentos e im\u00e1genes mezclados al mismo nivel y a\u00f1adirle unas miniaturas visuales siempre que sea posible. Me he encontrado algunos documentos en formato tan antiguos que suponen un problema por falta de herramientas activas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La estructura base del servidor web<\/h2>\n\n\n\n<p>Como me he encontrado con varios grupos de documentos he empezado por situarlos en carpetas distintas:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u2500\u2500 Documentos<br \/> \u2502&nbsp;&nbsp; \u251c\u2500\u2500 Alfredo<br \/> \u2502&nbsp;&nbsp; \u2514\u2500\u2500 Compartidos<br \/> \u2514\u2500\u2500 Manuales t\u00e9cnicos<br \/>     \u251c\u2500\u2500 Canon antigua<br \/>     \u251c\u2500\u2500 canon-lbp6670<br \/>     \u2514\u2500\u2500 fotocopiadora<\/pre>\n\n\n\n<p>Por un lado tenemos los documentos propiamente dichos, en los que encontramos los compartidos y los de un usuario especial que tiene decenas de miles y requiere un tratamiento especial.<\/p>\n\n\n\n<p>Por otro resulta que he ido guardando la documentaci\u00f3n t\u00e9cnica de algunas de las m\u00e1quinas m\u00e1s complicadas, como las fotocopiadores departamentales, y para que sean accesibles a todos las he a\u00f1adido en su propia carpeta. Creo que este esquema es escalable as\u00ed que lo voy a dejar as\u00ed. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El indexado autom\u00e1tico de Apache<\/h3>\n\n\n\n<p>Para que todo el sitio tenga al menos un aspecto coherente y algunas caracter\u00edsticas comunes empleo el m\u00f3dulo de Apache <em>mod_autoindex<\/em> con la siguiente configuraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;Directory \/var\/www\/html\/docs.venexma.net&gt;   <br \/>   Options +Indexes                 <br \/>   IndexIgnore css include images                    <br \/>   IndexOptions Charset=UTF-8 FancyIndexing FoldersFirst <br \/>   HeaderName \/include\/HEADER.html<br \/>   ReadmeName \/include\/FOOTER.html<br \/>   Require all granted     <br \/>&lt;\/Directory&gt;<\/pre>\n\n\n\n<p>He a\u00f1adido un directorio <em>include<\/em> y otro <em>images<\/em> donde he situado dos textos HTML para encabezado y pie de p\u00e1gina en el primero, y el logotipo en el segundo. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"688\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2019\/01\/Screenshot-2019-1-16-Index-of-Documentos-1024x688.png\" alt=\"\" class=\"wp-image-2834\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2019\/01\/Screenshot-2019-1-16-Index-of-Documentos-1024x688.png 1024w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2019\/01\/Screenshot-2019-1-16-Index-of-Documentos-300x202.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2019\/01\/Screenshot-2019-1-16-Index-of-Documentos-768x516.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2019\/01\/Screenshot-2019-1-16-Index-of-Documentos.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reforzando la seguridad<\/h2>\n\n\n\n<p>Y ahora viene cuando tenemos que poner ciertos l\u00edmites e intentar asegurarnos de que el contenido est\u00e1 m\u00e1s o menos seguro. <\/p>\n\n\n\n<p>Los documentos se sirven desde un servidor interno, accesible inicialmente s\u00f3lo desde la <em>intranet<\/em> aunque he creado un acceso v\u00eda <em>proxy<\/em> desde la m\u00e1quina que controla las ideas y venidas hacia\/desde la red.<\/p>\n\n\n\n<p>Los controles son:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Se fuerza siempre una conexi\u00f3n cifrada en el acceso al servidor web, a cualquiera de ellos. Gracias a Let&#8217;s Encrypt dispongo de certificados firmes y as\u00ed est\u00e1n repartidos entre las diferentes fuentes.<\/li><li>Desde el exterior se solicita, una vez cifrada la comunicaci\u00f3n, un usuario y una contrase\u00f1a que son validados contra un directorio <em>LDAP<\/em> interno. Aqu\u00ed el punto de fallo es alto debido a la propia naturaleza humana. <\/li><li>En el servidor interno se asignan acceso libre a la parte de manuales t\u00e9cnicos, limitada a un usuario v\u00e1lido en los documentos compartidos y se pide una cuenta concreta para entrar en los documentos de un usuario especial que tiene monta\u00f1as de archivos.<\/li><li><\/li><\/ol>\n\n\n\n<p>El siguiente es s\u00f3lo un ejemplo de la configuraci\u00f3n que acabo de citar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>&lt;Directory \/var\/www\/html\/docs.empresa.net\/Documentos\/Compartidos&gt;             <\/code><br \/><code>&nbsp; AuthType                Basic<\/code><br \/><code>  AuthName                \"Introduzca usuario y contrase\u00f1a\"<\/code><br \/><code>&nbsp; AuthBasicProvider       ldap        <\/code><br \/><code>&nbsp; AuthLDAPURL             \"ldap:\/\/ldap.empresa.net:389\/ou=users,dc=empresa,dc=net?uid\"            <\/code><br \/><code>&nbsp; Require                 valid-user   <\/code><br \/><code>&lt;\/Directory&gt;<\/code><br \/><br \/>&lt;Directory \/var\/www\/html\/docs.empresa.net\/Documentos\/Usuarios\/alfredo&gt;<br \/>   ...<br \/>   Require  user alfredo<br \/>&lt;\/Directory&gt;<br \/><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde hace un par de semanas he estado ocupado migrando las herramientas que usamos en la empresa para acceder a los documentos. De montajes NFS a servicios como Nextcloud podr\u00eda titularse esta entrada pero la cosa va un poco m\u00e1s all\u00e1.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[75,335,856,705,857,423,82],"class_list":["post-2826","post","type-post","status-publish","format-standard","hentry","category-software","tag-apache","tag-ldap","tag-mod_autoindex","tag-nextcloud","tag-nfs","tag-webdav","tag-windows"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/2826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=2826"}],"version-history":[{"count":14,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/2826\/revisions"}],"predecessor-version":[{"id":2876,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/2826\/revisions\/2876"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=2826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=2826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=2826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}