Web de la acampada del 26S
Home con directo, comunicados y organización. HTML y CSS, sin JS. Configuración de nginx, timer del directo y limpieza de EXIF.
This commit is contained in:
commit
f78773bb87
15 changed files with 1335 additions and 0 deletions
90
README.md
Normal file
90
README.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# 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 `<li>` 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
|
||||
`<!-- directo:inicio -->` y `<!-- directo:fin -->`, 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 '<script|javascript:|\son[a-z]+=' site/ # nada
|
||||
grep -rnoE 'https?://[^"]+' site/ # solo enlaces salientes
|
||||
```
|
||||
|
||||
## Licencia
|
||||
|
||||
Código: AGPL-3.0 (`LICENSE`). Textos e imágenes: CC BY-SA 4.0.
|
||||
Tipografía Anton: SIL OFL 1.1 (`site/fonts/OFL.txt`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue