# acampada26s.net
Web de la acampada del 26S en Madrid. Comunicados, directo y cómo organizarse.
HTML y CSS. Sin JavaScript en el navegador, sin cookies, sin analítica y sin
peticiones a terceros. La tipografía va dentro del repo.
La comunicación viva no depende de esta web: va por un pub de
[OASIS](https://code.03c8.net/krakenslab/oasis) (Secure Scuttlebutt). Si la web
cae o la tiran, el pub y lo publicado siguen en la red.
## Estructura
```
site/ lo que se sirve (copiar tal cual a /var/www/acampada26s.net)
deploy/ nginx y timer de systemd
tools/ limpiar imágenes y regenerar el directo
```
## Publicar un comunicado
1. Copiar `site/comunicados/2026-09-26-convocatoria.html` a
`site/comunicados/AAAA-MM-DD-titulo.html` y cambiar título, fecha y texto.
2. Añadir un `
` arriba del todo en la lista `#comunicados` de `site/index.html`.
3. Fotos a `site/img/`, siempre limpias antes:
```
tools/limpia-img.sh site/img/*.jpg
```
El EXIF lleva GPS, modelo de móvil y hora. Además: caras tapadas salvo
permiso expreso.
4. Toda imagen con `alt`, `width` y `height`.
## Despliegue
Requisitos: nginx, certbot. Para el directo: el pub OASIS en la misma máquina,
Node 22 y Python 3.9+.
```
rsync -a --delete site/ /var/www/acampada26s.net/
cp deploy/nginx.conf /etc/nginx/sites-available/acampada26s.net
cp deploy/hub.conf /etc/nginx/snippets/acampada26s-hub.conf
ln -s ../sites-available/acampada26s.net /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
```
`rsync --delete` borra el bloque directo generado; el timer lo repone en un minuto.
### Pub OASIS
El pub se arranca con `sh oasis.sh server` y el HUB web escucha en `:3000`.
Conviene que escuche solo en local (`--host=127.0.0.1`): nginx publica `/c`
en solo lectura (GET/HEAD) y le quita la IP del visitante.
Invite para la home: `sh oasis.sh invite 1000`, y pegarlo en `#organizate`.
### Directo
`tools/ultimos.js` lee los últimos posts de la identidad de la acampada por el
socket local del sbot. `tools/directo.py` los escribe en `index.html` entre
`` y ``, escapado y con escritura
atómica. Sigue siendo un fichero estático: aguanta mucha carga y no hace falta
JavaScript.
```
cp -r . /opt/26s
cp deploy/directo.service deploy/directo.timer /etc/systemd/system/
# editar FEED, OASIS_DIR y User en directo.service
systemctl enable --now directo.timer
```
A mano:
```
OASIS_DIR=~/oasis node tools/ultimos.js @feed.ed25519 5 | python3 tools/directo.py site/index.html
```
## Comprobaciones antes de subir
```
grep -rniE '