Files
INFRAESTRUCTURA/vps/gitea/README.md
2026-09-20 12:10:36 +02:00

57 lines
2.0 KiB
Markdown

# Gitea (VPS Contabo) — watchdog + monitor
## Contexto
- `git.v-encore-lab.com` → **185.187.169.109** (VPS Contabo).
- Contenedor `gitea` definido en `/root/docker-compose.yml` (proyecto `root`, red `root_gitea_gitea`).
- Datos en el bind **`/root/gitea/data`** (recrear el contenedor NO los toca).
- Delante: `nginx-proxy-manager` (Gitea escucha en el 3000 interno, sin puerto publicado).
## Incidente 20-sep-2026 (502)
El contenedor `gitea` entró en **bucle de reinicio** (3595 reinicios) por una capa de
escritura corrupta: `/app/gitea/gitea: Permission denied`. La imagen y la DB estaban bien.
Se resolvió recreando el contenedor:
```bash
cd /root && docker compose up -d --force-recreate --no-deps gitea
```
## Watchdog (recrea el contenedor si vuelve a pasar)
`gitea_watchdog.sh` comprueba cada 2 min:
1. Estado del contenedor (`docker inspect`).
2. `docker exec gitea wget -qO- http://127.0.0.1:3000/api/healthz`.
Si falla **2 veces seguidas** (`MAX_FAILS=2`), recrea el contenedor con
`docker compose up -d --force-recreate --no-deps gitea`.
- Log: `/var/log/gitea-watchdog.log` (rota a 1 MB).
- Estado: `/var/lib/gitea-watchdog/fails`.
### Instalación (en el VPS)
```bash
mkdir -p /opt/gitea-watchdog /var/lib/gitea-watchdog
cp gitea_watchdog.sh /opt/gitea-watchdog/ && chmod +x /opt/gitea-watchdog/gitea_watchdog.sh
cp gitea-watchdog.service gitea-watchdog.timer /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now gitea-watchdog.timer
```
Comprobar:
```bash
systemctl list-timers gitea-watchdog.timer
tail -20 /var/log/gitea-watchdog.log
```
## Monitor en Uptime-Kuma
Monitor existente `Gitea - Repositorios` (id 1): `https://git.v-encore-lab.com`, cada 60 s,
notificación **ALERTA MONITORES** (email SMTP). Se corrigió la URL (tenía un punto final:
`https://git.v-encore-lab.com.`).
> Editar el monitor en la DB: parar `uptime-kuma`, `sqlite3 /root/uptime-kuma/kuma.db "UPDATE ..."`,
> y volver a arrancarlo (Uptime-Kuma lee la DB al iniciar).