Appearance
OneDev
OneDev proporciona una excelente opción como servidor Git auto-hospedado (self-hosted) con CI/CD integrado, tablero Kanban, registro de problemas (issues) y repositorio de paquetes (similar a GitLab pero más ligero y open-source). Se ejecuta fácilmente en contenedores de Docker, usando una base de datos embebida por defecto (H2 database).
Requisitos previos
- Docker y Docker Compose instalados.
- Recursos: OneDev corre bien en máquina con 2 cores + 2-4 GB RAM.
- Puertos: Abre en el firewall los siguientes puertos...
- 6610 (HTTP principal, web UI)
- 6611 (HTTPS, opcional pero recomendado)
- 2222 (SSH para git clone)
- DNS: Crea un subdominio como
git.domain.cocon unArecord apuntando a tuIP(por ejemplo, usando Cloudflare).
git.domain.corepresenta un subdomiio de ejemplo basado endomain.co, el cuál correspondería a tu dominio (debes reemplazarlo)
Para preparar el sistema, instala Docker estable y plugin para Docker Compose:
bash
curl -fsSL https://get.docker.com | sudo CHANNEL=stable sh
sudo usermod -aG docker $USER
newgrp dockerPara definir puertos admitidos para el firewall, ejecuta:
bash
sudo ufw allow 6610Si cuentas con certificados verídicos usa:
sudo ufw allow 6610,6611/tcp
Insatalación y configuración con Docker Compose
Paso 1: Crear un directorio o carpeta asociado a OneDev
bash
sudo mkdir -p /opt/onedev
cd /opt/onedevPaso 2: Crear el contenedor
Basados en la documenación oficial, copia y pega lo siguiente:
yaml
docker run -d -p 6610:6610 -p 6611:6611 \
--name onedev \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/onedev/data:/opt/onedev \
1dev/server:latestPodríamos agregar otro puerto usando
-p 2222:22si queremos usar clonación víassh.
Aquí es importante sustituir el volumen correspondiente y usar Docker, es decir:
- Volumen
/opt/onedev/dataguarda todo (repositorios, CI artifacts, base de datos H2 embebida por defecto). - El socket de Docker permite que OneDev ejecute jobs CI/CD en contenedores.
Paso 3: Comprueba el contenedor de OneDev
Podemos ejecutar el siguiente comando para verificar el estado del contenedor:
bash
docker ps -f name=onedevTambién puedes listar la ubicación de los datos con:
ls /opt/onedev/data/
Paso 4: Accede por primera vez a OneDev
- Abre en navegador: http://IP:6610 o http://git.domain.co:6610 (o HTTPS si configuraste 6611).
- Sigue el paso a paso (wizard) de la página de configuración (setup) inicial:
- Crea la cuenta de administrador suministrando: Login Name, Password (fuerte), Full Name, Email Address.
- Configura servidor SMTP: SMTP host =
mail.domain.co, puerto 587 (submission), STARTTLS, usuario/contraseña de un mailbox. - Server URL: pon
https://git.domain.co(o con puerto si no usas proxy inverso).
Dónde
IPcorresponde a la dirección del servidor en internet.git.domain.corepresenta un subdomiio de ejemplo basado endomain.co, el cuál correspondería a tu dominio (debes reemplazarlo)
Paso 5: Configura HTTPS
| Type | Name | Content | TTL |
|---|---|---|---|
| A | git | IP | Auto |
Dónde
IPcorresponde a la dirección del servidor en internet.
Podría usarse Cloudflared (como veremos avanzado) para git.domain.co apuntando a tu IP:6610 (o 6611). Sino, conviene agregar un proxy inverso (como Caddy, Traefik, Nginx) para manejar certificados con Let's Encrypt.
Opciones avanzadas
Considera algunas ideas para mejorar las posibilidades de uso de OneDev. Entre otras, que veremos avanzando, podemos citar:
- Base de datos externa: Podría agregarse PostgreSQL (mejor para producción) en otro contenedor.
- SSH git: Puedes definir otro puerto para
sshsi otro servicio usa 22 (ej.- "2222:22"). - Proxy inverso anexo: En lugar de usar el puerto
6610se puede delegar a un proxy (como Caddy, Traefik, Nginx)
Exponiendo con Cloudflare Tunnel (Cloudflared)
Para usar cloudflared (el cliente de Cloudflare Tunnel), primero debemos instalarlo ejecutando lo siguiente:
bash
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.debPara limpiar el archivo después de instalado usa:
rm cloudflared-linux-amd64.deb
Una vez instalado, puedes ejecutar los siguientes comandos para autenticarte, crear el túnel, configurarlo y ejecutarlo:
bash
cloudflared tunnel login
cloudflared tunnel create onedev
cloudflared tunnel route dns onedev git.onmind.co
cloudflared tunnel run onedevCambia
onedevpor el nombre de tu preferencia, ygit.domain.copor tu subdominio.
Si habías creado el subdominio con el mismo propósito, recuerda borrarlo para usarlo acá.
Para configurar con archivo de configuración (config.yml) puedes usar un contenido como el siguiente:
yml
tunnel: onedev
credentials-file: /home/you/.cloudflared/YOUR_UUID.json
ingress:
- hostname: git.domain.co
service: http://localhost:6610
- service: http_status:404
YOUR_UUID.jsonse refiere al id dado por cloudflare para el túnel con el comandocloudflared tunnel create onedev
Luego, en lugar del comando cloudflared tunnel run onedev, podrías ejecutar:
bash
cloudflared tunnel --config config.yml run &Sin embargo, estableceremos el contenedor de cloudflared ejecutando:
bash
docker run -d \
--name cloudflared \
--restart unless-stopped \
--network host \
-v ~/wsinit:/root/.cloudflared \
cloudflare/cloudflared:latest \
tunnel --no-autoupdate run --token YOUR_TOKENDonde
YOUR_TOKENes el token que copias desde el dashboard de Cloudflare Zero Trust, para el túnel respectivo (enTunnels), con la opciónConfigure.
Integración con Mailcow
- Podrías usar el email de Mailcow para notificaciones en OneDev.
- Si quieres SSO o algo avanzado, OneDev soporta OAuth2/LDAP, pero no es necesario al inicio.
Así tendrás OneDev corriendo. Prueba crear un proyecto de prueba y un pipeline CI/CD simple.