Publicar la web en kotej.alexandre-vazquez.cloud
Arquitectura de siempre: estatico en el LXC 142 (nginx, puerto 8083) con NPM delante para el TLS del wildcard, y CNAME kotej -> dyn en Namecheap. No hay backend porque no hace falta: los ficheros no salen del navegador. El CNAME se anadio releyendo la zona entera y reenviandola con el registro nuevo — setHosts reemplaza toda la zona, y perder el MX o el DKIM por no reenviarlos romperia el correo. Verificado que los 39 registros siguen ahi. deploy.sh deja el despliegue repetible; borra el destino antes de extraer para que los assets viejos no se acumulen. Closes #8 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015hEAYuHRKMYz9sSa9zmbzz
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Kotej web
|
||||
|
||||
La misma comparación que la app de macOS, pero en el navegador — y **sin subir
|
||||
nada**. Los ficheros se leen en el propio dispositivo con las APIs del navegador;
|
||||
no hay backend al que mandarlos.
|
||||
|
||||
<https://kotej.alexandre-vazquez.cloud>
|
||||
|
||||
## Qué hace igual que el escritorio
|
||||
|
||||
- Carpetas, ficheros y archivos (ZIP, JAR, EAR, y ZIPs con cualquier extensión),
|
||||
navegables como carpetas, incluso anidados
|
||||
- Comparación binaria, de texto (con tolerancias) y semántica: JSON por
|
||||
estructura y XML canónico, con los hermanos repetidos tratados como conjunto
|
||||
- Diff lado a lado con los caracteres exactos que cambian, y distinguiendo
|
||||
espacios / comentarios / contenido
|
||||
- Pestañas, filtros, búsqueda, navegación entre diferencias y texto pegado
|
||||
- Inglés y español, según el idioma del navegador
|
||||
|
||||
De un EAR sólo se lee la cola del fichero para listarlo, y las entradas se
|
||||
descomprimen bajo demanda; comparar dos idénticas no llega a leerlas, porque el
|
||||
CRC32 del directorio central ya lo resuelve.
|
||||
|
||||
## Desarrollo
|
||||
|
||||
```sh
|
||||
npm install
|
||||
npm run dev # servidor de desarrollo
|
||||
npm test # tests del motor (los mismos casos que el motor Swift)
|
||||
npm run build # bundle de producción
|
||||
```
|
||||
|
||||
La prueba de navegador corre contra un build servido:
|
||||
|
||||
```sh
|
||||
npm run build && npx vite preview --port 4173 &
|
||||
npm run smoke
|
||||
```
|
||||
|
||||
## Despliegue
|
||||
|
||||
`./deploy.sh` — build, empaquetado y copia al LXC 142; NPM pone el TLS delante.
|
||||
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
# Despliega la web de Kotej en kotej.alexandre-vazquez.cloud.
|
||||
#
|
||||
# Arquitectura: estatico puro en el LXC 142 (webserver, 192.168.1.202) servido
|
||||
# por nginx en el puerto 8083, con NPM (LXC 109) delante para el TLS del
|
||||
# wildcard. No hay backend: los ficheros se comparan en el navegador y nunca
|
||||
# se suben, asi que no hay nada mas que servir.
|
||||
#
|
||||
# El vhost, el proxy host de NPM y el CNAME ya estan creados; esto solo
|
||||
# actualiza el contenido.
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
NODO=192.168.1.42 # payens: desde aqui se entra al LXC con pct
|
||||
LXC=142
|
||||
DESTINO=/var/www/kotej
|
||||
SSH_KEY=~/.ssh/pxmanager
|
||||
|
||||
echo "==> build"
|
||||
npm run build
|
||||
|
||||
echo "==> empaquetando"
|
||||
TAR=$(mktemp -t kotej-dist).tgz
|
||||
tar czf "$TAR" -C dist .
|
||||
|
||||
echo "==> subiendo a payens"
|
||||
scp -q -i "$SSH_KEY" "$TAR" "root@$NODO:/tmp/kotej-dist.tgz"
|
||||
rm -f "$TAR"
|
||||
|
||||
echo "==> desplegando en el LXC $LXC"
|
||||
ssh -i "$SSH_KEY" "root@$NODO" bash -s <<EOF
|
||||
set -e
|
||||
pct push $LXC /tmp/kotej-dist.tgz /tmp/kotej-dist.tgz
|
||||
# Se limpia primero: si no, los assets viejos (con otro hash) se acumularian
|
||||
# para siempre.
|
||||
pct exec $LXC -- sh -c 'rm -rf $DESTINO && mkdir -p $DESTINO \
|
||||
&& tar xzf /tmp/kotej-dist.tgz -C $DESTINO && rm /tmp/kotej-dist.tgz'
|
||||
rm -f /tmp/kotej-dist.tgz
|
||||
EOF
|
||||
|
||||
echo "==> comprobando"
|
||||
curl -fsS -o /dev/null -w " https://kotej.alexandre-vazquez.cloud -> %{http_code}\n" \
|
||||
https://kotej.alexandre-vazquez.cloud/
|
||||
echo "listo"
|
||||
Reference in New Issue
Block a user