Alojar su propio servidor git puede ser una experiencia de aprendizaje divertida que se utiliza para comprender los entresijos de lo que implica mantener una base de código en entornos privados. Puede configurar un servidor git privado que funcione en poco tiempo siguiendo la guía si tiene una Raspberry-Pi a mano.
También puede configurar en máquinas VM o AWS o cualquier servicio de alojamiento con Linux.
NOTA: Esta guía solo muestra la configuración básica, los mecanismos de seguridad con respecto a los privilegios de usuario y las restricciones de compromiso que aún deben configurarse pero que están fuera del alcance de este artículo.
Por motivos de seguridad y facilidad de uso, configuraré claves SSH para autenticación b/w servidor y clientes a través de la red.
a) Inicie sesión en su usuario pi existente en raspberry-pi y configure un nuevo usuario para su servidor git.
pi@hostname:~ $ sudo useradd -s /bin/bash -m [username]
Nombraré a mi usuario git
y me referiré a él en el resto del artículo.
El comando anterior agrega un nuevo usuario, -s indica que se usará el shell y -m indica que se debe crear el directorio de inicio.
b) Dale la contraseña a tu nuevo usuario:
pi@hostname:~ $ sudo passwd git
c) Complete la contraseña de su elección y cambie el usuario a git y cd en el directorio de inicio de git.
pi@hostname:~ $ su git
d) Complete la contraseña.
git@hostname:home/pi $
e ) Y luego escriba cd
para ir al directorio de inicio de git.
a) Desde su máquina cliente, ssh en git para verificar que puede iniciar sesión de forma remota en el usuario.
m108falcon@quadre:~ $ ssh git@[ipaddr]
b) Si tiene configurado el puerto 22 predeterminado y el usuario está configurado como activo, se le solicitará la contraseña e iniciar sesión. Ingrese las credenciales e iniciará sesión en el usuario git en su raspberry-pi.
c) Abra una nueva pestaña de terminal y haga lo siguiente en la máquina cliente.
m108falcon@quadre:~ $ ssh-keygen
d) Siga los pasos, asigne un nombre único a la clave y agregue una contraseña si lo desea.
e) Una vez configuradas las claves, envíe su clave de publicación de identificación al servidor
m108falcon@quadre:~ $ ssh-copy-id -i [location]/unique_key.pub git@[ipaddr]
f) Intente iniciar sesión en el usuario de git, si aún se le solicita que inicie sesión con una contraseña, entonces:
m108falcon@quadre:~ $ ssh-agent [your shell] && ssh-add [location]/unique_key
si inició sesión sin contraseña, puede ignorar el comando anterior.
a) Dentro de su raspberry-pi conectado como git, cree un directorio para almacenar todos los repositorios de git:
git@kleintragbar:~ $ mkdir [directory]
b) Nombré el mío srv
. Dentro de srv, cree un directorio para el proyecto que desea administrar que termine con .git . Esto se debe a que .git ayuda a Linux a diferenciar los directorios estándar en b/n y los repositorios administrados por git.
git@kleintragbar:~ $ cd srv git@kleintragbar:~/srv $ mkdir [nameofyourrepo].git
c) Llamé al mío traceviz.git
y me referiré a él de ahora en adelante.
Inicialice el repositorio desnudo. Se necesita Bare porque los repositorios remotos necesitan realizar un seguimiento de los cambios y no tener árboles de trabajo.
git@kleintragbar:~/srv/traceviz.git $ git init --bare
a) Vaya al directorio de su proyecto e inicialice el repositorio de git. Agregue un archivo y realice la confirmación inicial.
m108falcon@quadre:~ $ cd Projects/traceroute_viz m108falcon@quadre:~/Projects/traceroute_viz $ git init m108falcon@quadre:~/Projects/traceroute_viz $ git add README.md m108falcon@quadre:~/Projects/traceroute_viz $ git commit -m 'README'
b) Agregue una dirección remota a su repositorio git.
m108falcon@quadre:~/Projects/traceroute_viz $ git remote add origin ssh://[email protected]/home/git/srv/traceviz.git
c) Agregue la dirección de su repositorio remoto después de ssh://
d) Empuje al servidor remoto.
m108falcon@quadre:~/Projects/traceroute_viz $ git push -u ssh://[email protected]/home/git/srv/traceviz.git
Eso concluye la creación de repositorios para empujar código. :)
a) En la máquina cliente, vaya a un directorio diferente al de su proyecto y clone el repositorio remoto.
m108falcon@quadre:~/Downloads $ git clone [email protected]:/home/git/srv/traceroute_viz.git
Y encontrarás este error:
b) Para solucionarlo, vaya a su máquina remota y modifique el archivo HEAD
en el servidor git.
c) El contenido original de HEAD
dice:
d) Y cambiar de maestro a principal. Puede hacerlo simplemente editando archivos con su editor favorito (nano, vim, emacs o cualquier otro de su elección).
e) Elimine su repositorio clonado anterior y clone uno nuevo y obtendrá todos los archivos que necesita.