{"id":4037,"date":"2021-02-03T17:38:34","date_gmt":"2021-02-03T16:38:34","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=4037"},"modified":"2021-05-07T07:38:55","modified_gmt":"2021-05-07T05:38:55","slug":"printers-home","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2021\/02\/03\/printers-home\/","title":{"rendered":"printers.home"},"content":{"rendered":"\n<p>El servidor de impresi\u00f3n de mi red dom\u00e9stica ha nacido. Y lo ha hecho a lo grande, con impresora virtual PDF y todo.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Lo he alojado en <a href=\"https:\/\/esferas.org\/msqlu\/2019\/04\/02\/retomando-el-montaje-de-una-red-domestica\/\" data-type=\"post\" data-id=\"2892\">matraz.home<\/a> y le he a\u00f1adido la impresora l\u00e1ser directamente por nombre en lugar de seguir el protocolo <a rel=\"noreferrer noopener\" href=\"http:\/\/www.dns-sd.org\/\" target=\"_blank\">dnssd<\/a> porque empiezo a estar cansado de localizar problemas en entornos din\u00e1micos que en realidad est\u00e1n grabados en piedra: la impresora es una Samsung ML-2855ND con su direcci\u00f3n IP fija y su entrada correspondiente en el DNS. <\/p>\n\n\n\n<p>Despu\u00e9s, y es la principal raz\u00f3n de que haya dedicado tanto tiempo hoy a esta tarea, he a\u00f1adido la impresora virtual PDF. Pero no s\u00f3lo eso, quer\u00eda que el servicio estuviese completo:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Crear una m\u00e1quina en la red llamada <em>printers.home<\/em>.<\/li><li>Instalar CUPS y acceder v\u00eda navegador<\/li><li>Instalar una impresora virtual PDF <\/li><li>Exportar un directorio compartido con los archivos resultantes. <\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Crear printers.home en la red<\/h3>\n\n\n\n<p>Esto ya estaba hecho en la empresa hace bastante y los pasos a seguir son relativamente pocos:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Instalar CUPS y activar la escucha en el puerto 631 por red. <\/li><li>Instalar Apache y los m\u00f3dulos <em>proxy<\/em> correspondientes.<\/li><li>Configurar apache para que se comunique con CUPS con el envoltorio del nombre de la m\u00e1quina.<\/li><\/ol>\n\n\n\n<pre title=\"printers.home.conf\" class=\"wp-block-code\"><code lang=\"apacheconf\" class=\"language-apacheconf\">&lt;VirtualHost *:80&gt;\n   Servername printers.home  \n   ServerAdmin root@home  \n\n   LogLevel info   \n   ErrorLog \/var\/log\/apache2\/printers.home\/error.log  \n   CustomLog \/var\/log\/apache2\/printers.home\/access.log combined  \n\n   ProxyPass \/ http:\/\/127.0.0.1:631\/ retry=1 acquire=3000 timeout=600 Keepalive=On  \n   ProxyPassReverse \/ http:\/\/127.0.0.1:631\/ \n&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Instalar impresora PDF<\/h3>\n\n\n\n<p>La configuraci\u00f3n b\u00e1sica que he definido consiste en indicarle un directorio y un modo de creaci\u00f3n de archivos, as\u00ed como un par de opciones de c\u00f3mo extraer el nombre del archivo y dem\u00e1s. <\/p>\n\n\n\n<p>Hay unas cuantas posibilidades m\u00e1s para ampliar este mecanismo (como el env\u00edo autom\u00e1tico por correo de los archivos) pero por el momento estoy satisfecho con como queda.<\/p>\n\n\n\n<p>El archivo <em>\/etc\/cups\/cups-pdf.conf<\/em> contiene -entre otras- las siguientes directivas:<\/p>\n\n\n\n<pre title=\"\/etc\/cups\/cups-pdf.conf\" class=\"wp-block-code\"><code class=\"\">Out \/srv\/pdf-printer\/${USER}\nAnonDirName \/srv\/pdf-printer\nSpool \/var\/spool\/cups-pdf\/SPOOL\n\nTruncate 64\nCut -1\nLabel 0\nTitlePref 0\n\nAnonUser nobody\nLowerCase 1\nAnonUMask 0007\nUserUMask 0007\nGrp lpadmin\n\nLog \/var\/log\/cups\nLogType 3\nGhostScript \/usr\/bin\/gs\nGSTmp \/var\/tmp\nPDFVer 1.4\nDecodeHexStrings 1\nFixNewlines 0<\/code><\/pre>\n\n\n\n<p>La he a\u00f1adido y configurado un poco en el interfaz web de CUPS y al probarla no daba error como tal pero no creaba el archivo. \u00bf El problema ? <em>apparmor<\/em> activo y con un perfil predeterminado para ella. <\/p>\n\n\n\n<p>Le he a\u00f1adido el directorio donde pod\u00eda leer y escribir y he reiniciado el servicio <em>apparmor<\/em> y vuelto a probar. Y entonces s\u00ed. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># separate profile since this needs to write into \/home\n\/usr\/lib\/cups\/backend\/cups-pdf {\n   ...\n   capability chown,\n   capability fowner,\n   capability fsetid,\n   capability setgid,\n   capability setuid,\n   ...\n   \/var\/log\/cups\/cups-pdf<em>_log w,   \/var\/spool\/cups\/<\/em>* r,\n   \/var\/spool\/cups-pdf\/** rw,\n   <strong>\/srv\/pdf-printer\/** rw,<\/strong>\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Exportar directorio de PDF<\/h3>\n\n\n\n<p>En el montaje que tengo en el trabajo y que pocos usan ya empleaba una mezcla de NFS, montaje autom\u00e1tico seg\u00fan acceso (<em>autofs<\/em>) y LDAP como directorio de usuarios. Dado que aqu\u00ed a\u00fan no tengo directorios, y que como mucho lo voy a usar yo y tal vez mi hija, no me he complicado la vida y he definido un recurso compartido con Samba. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">[pdf]\n         comment                 = Resultados impresora PDF\n         path                    = \/srv\/pdf-printer\n         guest ok                = yes\n         guest only              = yes \n         force user              = nobody\n         force group             = nogroup\n         read only               = no\n         browseable              = yes\n         hide dot files          = yes\n         vfs objects             = recycle\n         recycle:repository      = .borrados\n         recycle:directory_mode  = 0770\n         recycle:keeptree        = yes\n         recycle:versions        = yes\n         recycle:touch           = yes\n         recycle:noversions      = <em>.tmp,<\/em>.temp,<em>.o,<\/em>.obj,<em>.TMP,<\/em>.TEMP\n         recycle:exclude         = <em>.tmp,<\/em>.temp,<em>.o,<\/em>.obj,<em>.TMP,<\/em>.TEMP<\/code><\/pre>\n\n\n\n<p>La diferencia entre otros montajes es que le he a\u00f1adido una papelera de reciclado que funciona muy bien. El visor de archivos <em>thunar<\/em>, por ejemplo, avisa de que el archivo se borrar\u00e1 para siempre pero en realidad se guarda en la papelera.<\/p>\n\n\n\n<p>Esta queda as\u00ed despu\u00e9s de hacer un par de pruebas desde el navegador Firefox:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">root@matraz:\/srv# tree -a \/srv\/pdf-printer\/\n \/srv\/pdf-printer\/\n \u251c\u2500\u2500 .borrados\n \u2502&nbsp;&nbsp; \u2514\u2500\u2500 Borrarse_de_Tinder___Algo_supuestamente_divertido_que_nunca_volv-job_30.pdf\n \u251c\u2500\u2500 cups-browsed.conf__server_configuration_file_for_cups-browsed_-_-job_31.pdf\n \u2514\u2500\u2500 Tablas_agregadas__le-job_28.pdf\n 1 directory, 3 files<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Referencias<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/unix.stackexchange.com\/a\/127586\" target=\"_blank\">Resolviendo problema de la impresora PDF en directorio diferentes<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.samba.org\/samba\/docs\/current\/man-html\/vfs_recycle.8.html\" target=\"_blank\">vfs_recycle \u2014 Samba VFS recycle bin<\/a><\/li><li><a href=\"https:\/\/lonewolfonline.net\/enabling-recycle-bin-functionality-samba\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enabling Recycle Bin like functionality in Samba<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>El servidor de impresi\u00f3n de mi red dom\u00e9stica ha nacido. Y lo ha hecho a lo grande, con impresora virtual PDF y todo.<\/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":[5,2],"tags":[75,250,564,1090,64,1091,222,180,1093,901],"class_list":["post-4037","post","type-post","status-publish","format-standard","hentry","category-hardware","category-software","tag-apache","tag-cups","tag-cups-pdf","tag-domus","tag-impresion","tag-papelera","tag-pdf","tag-proxy-inverso","tag-red-casera","tag-samba"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4037","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=4037"}],"version-history":[{"count":9,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4037\/revisions"}],"predecessor-version":[{"id":4047,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4037\/revisions\/4047"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=4037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=4037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=4037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}