Desde hace unos meses adquirí un NAS DS215j de la marca Synology. La cual sorprende por la cantidad de aplicaciones que pueden instalarse con un par de clicks:
https://www.synology.com/es-es/dsm/app_packages
Una de las utilidades que pueden ser instaladas es Git Server, permitiendo crear un servidor Git propio en el que alojar tus proyectos.
Lo primero que necesitamos es habilitar el acceso por ssh a nuestro servidor desde Panel de control > Terminal. Es conveniente que no uses el puerto 22 y uses otro de tu elección, para mejorar la seguridad de tu NAS al no usar los puertos por defecto.
Lo segundo es instalar el paquete que nos proporciona el Servidor Git. Una vez instalado nos permitirá dar acceso a los usuarios que queramos:
Los usuarios de Git quedarán restringidos a realizar actividades relacionadas con Git con una herramienta shell llamada git-shell. Esta shell de inicio de sesión se aplicará a los usuarios de Git para garantizar que las cuentas se utilicen únicamente para operaciones Git. El resultado es que los usuarios de Git solo pueden utilizar la conexión SSH para introducir y extraer repositorios Git, y no tendrán acceso completo a DSM.
Debido a la limitación citada, sólo el usuario "admin" del NAS puede crear los repositorios. Una vez creados los repositorios, cualquier usuario al que demos acceso desde la app del Servidor Git, podrá usar los repositorios.
Para crear el repositorio podemos hacerlo desde un cliente ssh como Putty. Usando la dirección DDNS de nuestro NAS (Panel de control > Acceso Externo > DDNS) y el puerto que definimos para acceder por ssh (Panel de control > Terminal), nos conectamos con las credenciales de acceso del usuario "admin". Una vez dentro creamos el repositorio con los siguientes comandos:
cd /volumeX #Donde X es el número del volumen mkdir GIT #Crear la carpeta cd GIT git init --bare --shared mi-repositorio.git
Con el repositorio creado, podremos acceder un clone usando la dirección:
git clone ssh://[Usuarios]@[DDNS:Puerto]/volumeX/GIT/mi-repositorio.git
O si prefieres, sin el usuario, de la siguiente manera:
git clone ssh://[DDNS:Puerto]/volumeX/GIT/mi-repositorio.git
A partir de este momento, ya tenemos listo nuestro proyecto para trabajar con él en local y sincronizar los cambios con el servidor.
Para más información consulta la ayuda de Synology:
https://help.synology.com/dsm/?section=Git&version=2.3&link=git.htm
Gracias por la info! Ahora puedo usar GIT con mi Synology.
Pero hay dos cosas que no consigo, a ver si tu experiencia me ayuda:
1. Un usuario que no es admin, como puede crear un repo en el synology? Ya que no tiene acceso a SSH ni linea de comandos.
2. Como puedo hacer un 'clone' de un repositorio que no es mio? Cuando quiero clonar el repositorio, me pide contraseña. Si es mi repo perfecto, pero si quiero compartirlo para que lo use otro? Puede hacer clone sin que le pida contraseña?
Un saludo!
Hola Martín,
voy a intentar despejar las dudas que me planteas:
1) No, un usuario que no es admin NO puede crear un repositorio por SSH. Ya lo remarco en el artículo. Si vas a la documentación oficial de Synology te pone lo mismo. Hay formas de hacerlo, pero no sin ocasionar durante el proceso potenciales problemas de seguridad. Recuerda que los NAS de Synology son de propósito general y solo mediante aplicaciones enfocadas a dicha actividad como Gitlab (https://www.synology.com/en-us/dsm/app_packages/Docker-GitLab) puedes hacerlo de manera correcta y segura. Dependiendo del modelo que tengas es posible que no puedas instalarlo por falta de recursos hardware.
2) Puedes hacer clone de cualquier repositorio con un usuario que tengas habilitado para usar comandos git contra el NAS. Fíjate que todos los repositorios son creados con el usuario admin, con lo que la propiedad final del repositorio es del admin. Por eso está la utilidad de Git Server que comento en la entrada, para dar acceso a los usuarios.
Es normal que te pida contraseña para cualquier operación git. Al final son los usuarios de tu NAS y todos necesitan usuario y contraseña. Si quieres compartir el acceso al respositorio deberás crear cuentas con su respectivo usuario y contraseña.
Un saludo.
Buenas, seria posible una vez instalado, utilizar alguna herramienta como Gitkraken, SmartGit...
Un cliente, para trabajar sobre el Git, o se debe de hacer todo desde consola?
Saludos
¡No hay ningún problema!
Al final tienes tu URL de acceso que como pone en el artículo es de la forma:
ssh://[DDNS:Puerto]/volumeX/GIT/mi-repositorio.git
Cualquiera de las herramientas que me has dicho puede manejarlo.
Yo concretamente lo he probado con Source Tree.
Simplemente es meter la URL como remoto en tu repositorio y usar las credenciales que tengas definidas para el usuario. No olvides habilitar el acceso a los usuario como indica el artículo.
Espero haber solventado tus dudas.
Buenos días.
Conectado por putty y con usuario admin no tengo permisos para crear la carpeta GIT ni ninguna.
Entiendo k no deberia ser asi. El NAS es nuevo y actualizado a dia de hoy, puede ser la versión del sistema operativo?
No se si podrias indicarme como conseguir estos permisos.
Gracias.
Un saludo
Ya encontrer la solucion:
es necesario ser usuario root que tiene más privilegios que admin.
Aqui los pasos oficiales: https://www.synology.com/en-us/knowledgebase/DSM/tutorial/General/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet
¡Gracias Jesús por la respuesta!
En su momento esto no era necesario porque "admin" debía tener permisos de root.
Agradezco tu interés por actualizar y completar la solución de la entrada. 😉
¿Tienes idea si alojar una web montada con HUGO? Pues estas webs solo permiten ser ejecutadas mediante SHH. has graciasMuc
No acabo de entender tu duda...
HUGO si no me falla la memoria es un generador webs estáticas HTML escrito en Go.
El Nas Synology no deja de ser un sistema GNU/Linux y tienes un control SSH para su gestión. Otra cosa es la conveniencia de poner Go y sus dependencias en el Nas, y cómo afectará al rendimiento general del sistema.
Eso sí, ojo con lo que se hace por SSH en el Nas ya que la instalación manual de otros paquetes puede deteriorar el funcionamiento general del sistema o incluso romperlo.
Por último, como aclaración, decirte que las webs no creo que se ejecuten con HUGO, sino que se generan con él. Al generar webs estáticas de HTML y CSS, creo que lo que genera podrías ponerlo en el servidor Apache que sí que trae el Nas de Synology en su sistema DSM. Quizás pudieras copiar la web que genera HUGO al Nas, en vez de generarla desde el mismo Nas.
Al final he encontrado que la mejor solucion es pasar del SSH. El repo local le pongo la direccion de red local que apunta al repo central como server en el NAS. Asi que cuando estoy en la red del synology, hago push directamente. Mientras que para acceder desde fuera de la red, accedo "como si estuviera en local" conectandome por VPN al NAS.
Todo el lio que supone el SSH no tiene ninguna ventaja que yo haya podido ver. Es mucho mas facil gestionar todo como si fueran carpetas desde el explorador de windows, y usar los comandos git utilizando rutas de red. No se requieren permisos, ni complicarse accediendo por terminal, abrir puertos, etc...
Yo ademas uso GitExtensions, lo cual lo hace todo aun mas facil y rapido.
Estoy tratando de hacer un clone desde Gitkraken pero me aparece un error de que no puede leer del repositorio remoto. Los URL que he probado son estos : ssh://[DDNS:22]/volume1/GITv0/miproyecto.git
ssh://[DDNS:22]/volume1/GITv0/miproyecto
ssh://22/volume1/GITv0/miproyecto
Aún así me da el error y si que me lo he creado en mi servidor NAS como admin.
A ver si tengo suerte y sigues contestando a este foro 🙂