{"id":44,"date":"2013-10-11T09:45:00","date_gmt":"2013-10-11T09:45:00","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2013\/10\/11\/creando-un-servidor-git\/"},"modified":"2013-10-11T09:45:00","modified_gmt":"2013-10-11T09:45:00","slug":"creando-un-servidor-git","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2013\/10\/11\/creando-un-servidor-git\/","title":{"rendered":"Creando un servidor git &#8230;"},"content":{"rendered":"<p><a href=\"https:\/\/esferas.org\/mt\/msqlu\/logos\/git-logo-cc-by-300x300.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"git-logo-cc-by-300x300.png\" src=\"https:\/\/esferas.org\/mt\/msqlu\/assets_c\/2013\/10\/git-logo-cc-by-300x300-miniatura-100xauto-78.png\" class=\"mt-image-left\" style=\"float: left; margin: 0 20px 20px 0;\" height=\"100\" width=\"100\" \/><\/a>&#8230; entiendo por qu\u00e9 hablan tan bien de \u00e9l.<\/p>\n<p><!--more--><\/p>\n<p>La raz\u00f3n por la que quiero crear un servidor git estando m\u00e1s s\u00f3lo que la una es para facilitarme la vida con las diferentes instalaciones en las que trabajo. Estas son b\u00e1sicamente tres: mi lugar de trabajo, mi casa y los servidores en la red. En todos ellos preciso de un acceso de lectura y escritura a mis proyectos, y como no puedo estar seguro del estado de la m\u00e1quina de casa ni la m\u00eda personal en mi trabajo utilizo una que siempre deber\u00eda estar en funcionamiento como almac\u00e9n central.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"pro-git.jpg\" src=\"https:\/\/esferas.org\/mt\/msqlu\/books\/pro-git.jpg\" class=\"mt-image-right\" style=\"float: right; margin: 0 0 20px 20px;\" height=\"283\" width=\"214\" \/>Luego he pensado que algunos de mis peque\u00f1os proyectos podr\u00edan ser de utilidad para alguien -al menos como curiosidad- y me he dicho: \u00bf por qu\u00e9 no hacerlo en condiciones\u00a0 como si fuese <em>de verdad<\/em> ? He encontrado toda la ayuda que necesitaba en el libro <a href=\"http:\/\/git-scm.com\/book\">Pro Git<\/a> de Scott Chacon, de libre acceso en la <a href=\"http:\/\/git-scm.com\/\">web del proyecto<\/a>.<\/p>\n<p>Me he puesto con ello y, dado que ya ten\u00eda el programa <em>git<\/em>\u00a0 instalado en el servidor y los repositorios sin carpeta de trabajo (<em>bare<\/em>) en una ruta aparte (<em>\/var\/lib\/git<\/em>), s\u00f3lo he tenido que ir cumpliendo etapas tal y como me describen y aconsejan.<\/p>\n<h3>Un usuario espec\u00edfico<\/h3>\n<p>Procedo a crear un usuario espec\u00edfico dentro del servidor para que se haga cargo de todo. La caracter\u00edstica m\u00e1s importante es que el <em>shell<\/em> a utilizar ser\u00e1 uno espec\u00edfico para operaciones con <em>Git<\/em> y que su directorio personal estar\u00e1 situado en la ra\u00edz del repositorio.<\/p>\n<pre># adduser --home \/var\/lib\/git --shell \/usr\/bin\/git-shell --no-create-home --ingroup git --gecos \"Repository owner\" git <\/pre>\n<p>Cambio la propiedad de todo el repositorio al nuevo usuario y adelant\u00e1ndome a las instrucciones tambi\u00e9n indico que el grupo al que pertenecen todos los archivos es el usuario del servidor web (<em>www-data<\/em>) para que \u00e9ste pueda leer su contenido. Ahora bien, es muy importante que los permisos de escritura para el grupo sean desactivados, especialmente en los directorios <em>\/var\/lib\/git<\/em> y <em>\/var\/lib\/git\/.ssh<\/em>, o no ser\u00e1 posible acceder directamente sin contrase\u00f1a.<\/p>\n<p>Esta cuenta tiene algunas peculiaridades que merece la pena destacar porque me he encontrado con varios problemas tontos por no leer con calma la documentaci\u00f3n. Afortunadamente he encontrado la p\u00e1gina de <a href=\"http:\/\/planzero.org\/blog\/2012\/10\/24\/hosting_an_admin-friendly_git_server_with_git-shell\">Plan Zero<\/a> que, adem\u00e1s de resolver dudas y guiarte en el inicio, proporciona software verdaderamente \u00fatil. Este software extra, y cualquier otro que queramos a\u00f1adir, debe situarse en un directorio llamado <em>git-shell-commands<\/em> con permisos de acceso y ejecuci\u00f3n. El paquete Debian incluye un par de programas para listar los repositorios y mostrar la ayuda en <em>\/usr\/share\/doc\/git\/contrib\/git-shell-commands<\/em>).<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; entiendo por qu\u00e9 hablan tan bien de \u00e9l.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"1","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":[73,74,44],"class_list":["post-44","post","type-post","status-publish","format-standard","hentry","category-software","tag-git","tag-scott-chacon","tag-servicios-web"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/44","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=44"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}