{"id":4079,"date":"2021-04-25T18:34:59","date_gmt":"2021-04-25T16:34:59","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=4079"},"modified":"2021-05-07T07:38:55","modified_gmt":"2021-05-07T05:38:55","slug":"mirror-home","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2021\/04\/25\/mirror-home\/","title":{"rendered":"mirror.home"},"content":{"rendered":"\n<p>Un servicio de cach\u00e9 de paquetes Debian y similares. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Y es que no he podido resistirme y lo he puesto en marcha en literalmente dos patadas. <\/p>\n\n\n\n<p>Primero he definido en el DNS una entrada para la m\u00e1quina <em>mirror.home<\/em>, luego he instalado el paquete <a href=\"https:\/\/packages.debian.org\/buster\/approx\" target=\"_blank\" rel=\"noreferrer noopener\">approx<\/a> que ya he usado durante a\u00f1os en mi lugar de trabajo y la guinda la he puesto con un servidor virtual en Apache para que los URL de los servicios sean <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deb http:\/\/mirror.home\/debian buster main contrib non-free\ndeb http:\/\/mirror.home\/security buster\/updates main contrib non-free\ndeb http:\/\/mirror.home\/debian\/ buster-updates main contrib non-free\n<\/pre>\n\n\n\n<p>Respecto a <em>approx<\/em> el \u00fanico cambio significativo ha sido hacer que escuche en el interfaz local conservando el puerto. En Debian 10 esto se define en <em>systemd<\/em> con un <em>socket<\/em> que el paquete incluye. Se copia el archivo <em>\/lib\/systemd\/system\/approx.socket<\/em> en <em>\/etc\/systemd\/system<\/em> (porque tiene preferencia y no hay que andarse con cosas raras) y se altera de esta forma<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Unit]\nDescription=caching proxy server for Debian archive files\nDocumentation=man:approx(8)\n\n[Socket]\nListenStream=127.0.0.1:9999\nAccept=yes\n\n[Install]\nWantedBy=sockets.target\n<\/pre>\n\n\n\n<p>Luego viene la parte de apache que se encarga de simplificar la URL y limita la forma de acceso al repositorio. En el archivo <em>\/etc\/apache2\/sites-available\/mirror.home.conf<\/em> se incluye:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"apacheconf\" class=\"language-apacheconf\">&lt;VirtualHost *:80>\n        ServerName      mirror.home\n        ServerAdmin     root@home\n\n        ProxyPreserveHost On\n\n        ProxyPass \"\/\" \"http:\/\/127.0.0.1:9999\/\"\n        ProxyPassReverse \"\/\" \"http:\/\/127.0.0.1:9999\/\"\n\n        LogLevel info \n        ErrorLog \/var\/log\/apache2\/mirror.home\/error.log\n        CustomLog \/var\/log\/apache2\/mirror.home\/access.log combined\n&lt;\/VirtualHost><\/code><\/pre>\n\n\n\n<p>Y ya est\u00e1. Basta con indicar (por ejemplo en la instalaci\u00f3n) que el repositorio est\u00e1 en <em>http:\/\/mirror.home\/debian<\/em> y se reutilizan todos los archivos que se han descargado previamente para el resto de la red. Puede hacerse perfectamente para las Raspberry Pi porque la estructura es la misma:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deb http:\/\/mirror.home\/raspbian\/ buster main contrib non-free rpi\n<\/pre>\n\n\n\n<p>En la parte del proxy, eso s\u00ed, tendremos que definir los repositorios de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">debian                  http:\/\/deb.debian.org\/debian\nsecurity                http:\/\/security.debian.org\/debian-security\nraspbian                http:\/\/raspbian.raspberrypi.org\/raspbian\nraspi-archive           http:\/\/archive.raspberrypi.org\/debian\npostgresql              http:\/\/apt.postgresql.org\/pub\/repos\/apt\n<\/pre>\n\n\n\n<p>\u00bf Y los repositorios con conexi\u00f3n https ? Pues se pueden emplear trampeando su acceso si, como es mi caso, no tengo un certificado digital para conexiones en mi red local (<em>.home<\/em>) indicando que el repositorio tiene acceso local como <em>http<\/em> y desde el proxy con acceso <em>https<\/em>. <\/p>\n\n\n\n<p>Por ejemplo mi repositorio privado (uno de ellos) de paquetes tiene la siguiente l\u00ednea en su archivo <em>.list<\/em> correspondiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deb https:\/\/debian.astillas.net debian main\ndeb-src https:\/\/debian.astillas.net debian main\n<\/pre>\n\n\n\n<p>Si lo definimos en <em>approx<\/em> como <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">astillas                https:\/\/debian.astillas.net\/\n<\/pre>\n\n\n\n<p>Podemos cambiar el archivo <em>.list<\/em> de la siguiente forma:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deb http:\/\/mirror.home\/astillas debian main\ndeb-src http:\/\/mirror.home\/astillas debian main\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un servicio de cach\u00e9 de paquetes Debian y similares.<\/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":[6],"tags":[18,715,167,180,1093],"class_list":["post-4079","post","type-post","status-publish","format-standard","hentry","category-debian","tag-administracion-de-sistemas","tag-approx","tag-apt","tag-proxy-inverso","tag-red-casera"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4079","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=4079"}],"version-history":[{"count":7,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4079\/revisions"}],"predecessor-version":[{"id":4086,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4079\/revisions\/4086"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=4079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=4079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=4079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}