# 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).