# Despliegue en Debian 13 — reloj.gfarallon.com

Servidor con Apache (ya tiene `temp.gfarallon.com`). Esta app corre en un **nuevo virtual host**:

**https://reloj.gfarallon.com**

- **3 relojes Anviz** en la misma red que el servidor
- Python en puerto **8001** (no 8000, por si otro servicio lo usa)
- Apache hace proxy hacia Python

---

## 1. DNS

Cree un registro **A** (o CNAME) apuntando a la IP del servidor:

```
reloj.gfarallon.com  →  IP_DEL_SERVIDOR
```

---

## 2. Subir proyecto

```bash
sudo mkdir -p /var/www/reloj-farallon
sudo chown $USER:www-data /var/www/reloj-farallon
```

Suba el contenido (SFTP/rsync/git), **sin** la carpeta `venv` de Windows.

---

## 3. Configurar los 3 relojes

```bash
cd /var/www/reloj-farallon
cp relojes.json.example relojes.json
nano relojes.json
```

Edite **IP real** y **device_id** de cada reloj:

```json
[
  { "id": "recepcion", "name": "Recepción", "host": "192.168.5.7", "port": 5010, "device_id": 5 },
  { "id": "planta1",   "name": "Planta 1",  "host": "192.168.5.8", "port": 5010, "device_id": 5 },
  { "id": "planta2",   "name": "Planta 2",  "host": "192.168.5.9", "port": 5010, "device_id": 5 }
]
```

Pruebe desde el servidor que alcanza los 3:

```bash
nc -zv 192.168.5.7 5010
nc -zv 192.168.5.8 5010
nc -zv 192.168.5.9 5010
```

---

## 4. Python y dependencias

```bash
cd /var/www/reloj-farallon
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

---

## 5. MySQL

```bash
sudo mysql -u root -p
```

```sql
CREATE DATABASE reloj_farallon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'reloj_user'@'localhost' IDENTIFIED BY 'CLAVE_SEGURA';
GRANT ALL ON reloj_farallon.* TO 'reloj_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

```bash
mysql -u reloj_user -p reloj_farallon < schema.sql
```

Si ya tenía la tabla antigua: `mysql ... < schema-migrate-multi.sql`

---

## 6. `.env`

```bash
cp .env.example .env
nano .env
```

```env
ANVIZ_TIMEOUT=15
RELOJES_CONFIG=/var/www/reloj-farallon/relojes.json
DATABASE_URL=mysql+pymysql://reloj_user:CLAVE_SEGURA@localhost:3306/reloj_farallon
```

```bash
chmod 640 .env
sudo chown www-data:www-data .env relojes.json
```

---

## 7. Servicio systemd (puerto 8001)

```bash
sudo cp deploy/reloj-farallon.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now reloj-farallon
sudo systemctl status reloj-farallon
curl -s http://127.0.0.1:8001/api/relojes
```

---

## 8. Virtual host Apache

```bash
sudo a2enmod proxy proxy_http headers
sudo cp deploy/apache-reloj-farallon.conf /etc/apache2/sites-available/reloj.gfarallon.com.conf
sudo a2ensite reloj.gfarallon.com.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```

Compruebe: `http://reloj.gfarallon.com`

### HTTPS (igual que temp.gfarallon.com)

```bash
sudo certbot --apache -d reloj.gfarallon.com
```

O copie el bloque SSL del sitio `temp.gfarallon.com` y cambie `ServerName` y rutas de certificado.

---

## 9. Permisos finales

```bash
sudo chown -R www-data:www-data /var/www/reloj-farallon
```

---

## Resumen

| Elemento | Valor |
|----------|--------|
| Dominio | `reloj.gfarallon.com` |
| App Python | `127.0.0.1:8001` |
| Config relojes | `relojes.json` |
| BD | `reloj_farallon` |

---

## Mantenimiento

```bash
# Ver logs
sudo journalctl -u reloj-farallon -f

# Tras actualizar código
cd /var/www/reloj-farallon && source venv/bin/activate && pip install -r requirements.txt
sudo systemctl restart reloj-farallon
```
