|
|
|
|
# Nginx por delante del servidor de Node.
|
|
|
|
|
#
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
# sudo cp senzapaura.nginx.conf /etc/nginx/sites-available/senzapaura
|
|
|
|
|
# sudo ln -sf /etc/nginx/sites-available/senzapaura /etc/nginx/sites-enabled/
|
|
|
|
|
# sudo rm -f /etc/nginx/sites-enabled/default
|
|
|
|
|
# sudo nginx -t && sudo systemctl reload nginx
|
|
|
|
|
#
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
# Ese `rm` del sitio por defecto importa: mientras esté, es él quien contesta a
|
|
|
|
|
# quien entra por IP, y se ve la página de bienvenida de Nginx en lugar de la
|
|
|
|
|
# web.
|
|
|
|
|
#
|
El dominio es senzapaura.es
Cambia las referencias al dominio de trabajo: la URL canónica, los correos
de los textos legales, las direcciones de retorno de Google y Facebook, y
lo que espera la suite.
El `robots.txt` pasa de archivo estático a ruta generada. Llevaba el
dominio escrito a mano y se quedó anunciando el anterior: un mapa del
sitio mal anunciado no da ningún error, simplemente no lo encuentra
nadie. Ahora sale de `site.url`, igual que el mapa y las etiquetas de
cada página. De paso deja fuera del rastreo lo que depende de quién mira
—cuenta, carrito, favoritos, entrar, descargas—, que no es contenido.
Y el Nginx queda listo para el dominio, con los tres pasos que hay que
dar fuera del servidor: los registros A a 89.46.247.16, la redirección de
los puertos 80 y 443 a 192.168.18.171, y Certbot.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4 weeks ago
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
# Para que esto conteste desde internet hacen falta tres cosas fuera del
|
|
|
|
|
# servidor, y en este orden:
|
|
|
|
|
#
|
|
|
|
|
# 1. DNS. En el panel del dominio, dos registros A apuntando a la IP pública:
|
|
|
|
|
#
|
|
|
|
|
# senzapaura.es. A 89.46.247.16
|
|
|
|
|
# www.senzapaura.es. A 89.46.247.16
|
|
|
|
|
#
|
|
|
|
|
# Comprobar antes de seguir, desde cualquier sitio: dig +short senzapaura.es
|
|
|
|
|
#
|
|
|
|
|
# 2. Router. Redirigir los puertos 80 y 443 a la máquina interna:
|
|
|
|
|
#
|
|
|
|
|
# 80 TCP -> 192.168.18.171:80
|
|
|
|
|
# 443 TCP -> 192.168.18.171:443
|
|
|
|
|
#
|
|
|
|
|
# Sin el 80 abierto, Certbot no puede emitir el certificado: su
|
|
|
|
|
# comprobación entra por ahí.
|
|
|
|
|
#
|
|
|
|
|
# 3. Certificado. Ya con lo anterior funcionando:
|
|
|
|
|
#
|
|
|
|
|
# sudo apt install -y certbot python3-certbot-nginx
|
|
|
|
|
# sudo certbot --nginx -d senzapaura.es -d www.senzapaura.es
|
|
|
|
|
#
|
|
|
|
|
# Certbot añade solo el bloque de 443 y la redirección desde el 80, y deja
|
|
|
|
|
# puesta la renovación automática. Después:
|
|
|
|
|
#
|
|
|
|
|
# ORIGIN=https://senzapaura.es en /var/www/senzapaura/.env
|
|
|
|
|
# sudo systemctl restart senzapaura
|
|
|
|
|
#
|
|
|
|
|
# Sin ese ORIGIN, SvelteKit rechaza todos los formularios con un 403 por
|
|
|
|
|
# comprobación de origen y parece que la web está rota, aunque se vea.
|
|
|
|
|
#
|
|
|
|
|
# Y sin HTTPS no se puede abrir al público: aquí se escriben correos y se paga.
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
server {
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
listen 80 default_server;
|
|
|
|
|
listen [::]:80 default_server;
|
|
|
|
|
|
El dominio es senzapaura.es
Cambia las referencias al dominio de trabajo: la URL canónica, los correos
de los textos legales, las direcciones de retorno de Google y Facebook, y
lo que espera la suite.
El `robots.txt` pasa de archivo estático a ruta generada. Llevaba el
dominio escrito a mano y se quedó anunciando el anterior: un mapa del
sitio mal anunciado no da ningún error, simplemente no lo encuentra
nadie. Ahora sale de `site.url`, igual que el mapa y las etiquetas de
cada página. De paso deja fuera del rastreo lo que depende de quién mira
—cuenta, carrito, favoritos, entrar, descargas—, que no es contenido.
Y el Nginx queda listo para el dominio, con los tres pasos que hay que
dar fuera del servidor: los registros A a 89.46.247.16, la redirección de
los puertos 80 y 443 a 192.168.18.171, y Certbot.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4 weeks ago
|
|
|
# El dominio, y `_` para que siga contestando a quien entre por la IP
|
|
|
|
|
# mientras el DNS no haya propagado del todo.
|
|
|
|
|
server_name senzapaura.es www.senzapaura.es _;
|
|
|
|
|
|
|
|
|
|
# Los mp3 completos pesan varios megas; los fragmentos, cientos de kilos.
|
|
|
|
|
client_max_body_size 20m;
|
|
|
|
|
|
|
|
|
|
gzip on;
|
|
|
|
|
gzip_vary on;
|
|
|
|
|
gzip_min_length 1024;
|
|
|
|
|
gzip_types
|
|
|
|
|
text/plain text/css application/javascript application/json
|
|
|
|
|
image/svg+xml application/xml application/rss+xml;
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
|
# Estáticos con huella en el nombre
|
|
|
|
|
#
|
|
|
|
|
# Todo lo de `_app/immutable` lleva el hash del contenido en el nombre: si
|
|
|
|
|
# cambia el archivo, cambia la URL. Por eso se puede cachear para siempre y
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
# servirlo desde Nginx sin molestar a Node, que es lo que hace que abrir la
|
|
|
|
|
# web no despierte al proceso para devolver un CSS.
|
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
|
location /_app/immutable/ {
|
|
|
|
|
root /var/www/senzapaura/build/client;
|
|
|
|
|
access_log off;
|
|
|
|
|
expires 1y;
|
|
|
|
|
add_header Cache-Control "public, immutable";
|
|
|
|
|
try_files $uri =404;
|
|
|
|
|
}
|
|
|
|
|
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
# Imágenes, fuentes, vídeo, los fragmentos de muestra y el panel. No llevan
|
|
|
|
|
# huella, así que se cachean un día: lo justo para no pedirlos en cada
|
|
|
|
|
# visita sin que un cambio tarde una semana en verse.
|
El dominio es senzapaura.es
Cambia las referencias al dominio de trabajo: la URL canónica, los correos
de los textos legales, las direcciones de retorno de Google y Facebook, y
lo que espera la suite.
El `robots.txt` pasa de archivo estático a ruta generada. Llevaba el
dominio escrito a mano y se quedó anunciando el anterior: un mapa del
sitio mal anunciado no da ningún error, simplemente no lo encuentra
nadie. Ahora sale de `site.url`, igual que el mapa y las etiquetas de
cada página. De paso deja fuera del rastreo lo que depende de quién mira
—cuenta, carrito, favoritos, entrar, descargas—, que no es contenido.
Y el Nginx queda listo para el dominio, con los tres pasos que hay que
dar fuera del servidor: los registros A a 89.46.247.16, la redirección de
los puertos 80 y 443 a 192.168.18.171, y Certbot.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4 weeks ago
|
|
|
location ~* ^/(images|background|video|muestras|fuentes|admin)/ {
|
|
|
|
|
root /var/www/senzapaura/build/client;
|
|
|
|
|
access_log off;
|
|
|
|
|
expires 1d;
|
|
|
|
|
add_header Cache-Control "public";
|
|
|
|
|
try_files $uri $uri/ =404;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
|
# Todo lo demás, a Node
|
|
|
|
|
#
|
|
|
|
|
# Incluidas /descargas/… —que comprueban la compra antes de entregar el
|
El dominio es senzapaura.es
Cambia las referencias al dominio de trabajo: la URL canónica, los correos
de los textos legales, las direcciones de retorno de Google y Facebook, y
lo que espera la suite.
El `robots.txt` pasa de archivo estático a ruta generada. Llevaba el
dominio escrito a mano y se quedó anunciando el anterior: un mapa del
sitio mal anunciado no da ningún error, simplemente no lo encuentra
nadie. Ahora sale de `site.url`, igual que el mapa y las etiquetas de
cada página. De paso deja fuera del rastreo lo que depende de quién mira
—cuenta, carrito, favoritos, entrar, descargas—, que no es contenido.
Y el Nginx queda listo para el dominio, con los tres pasos que hay que
dar fuera del servidor: los registros A a 89.46.247.16, la redirección de
los puertos 80 y 443 a 192.168.18.171, y Certbot.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4 weeks ago
|
|
|
# archivo—, la vuelta de Google y Facebook, y el webhook de Stripe. Ojo:
|
|
|
|
|
# las descargas NO se pueden servir desde Nginx; el audio completo vive
|
|
|
|
|
# fuera de `build/` justamente para que no haya forma de pedirlo por URL
|
|
|
|
|
# sin haberlo comprado.
|
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
|
location / {
|
|
|
|
|
proxy_pass http://127.0.0.1:3000;
|
|
|
|
|
proxy_http_version 1.1;
|
|
|
|
|
|
|
|
|
|
proxy_set_header Host $host;
|
|
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
|
proxy_set_header X-Forwarded-Host $host;
|
|
|
|
|
|
|
|
|
|
# El limitador de envíos cuenta por IP. Sin las cabeceras de arriba,
|
|
|
|
|
# todas las peticiones parecerían venir de 127.0.0.1 y el límite global
|
|
|
|
|
# se dispararía con una sola persona insistiendo.
|
|
|
|
|
|
|
|
|
|
# Un mp3 completo tarda en salir por una conexión lenta.
|
|
|
|
|
proxy_read_timeout 300s;
|
|
|
|
|
# Sin buffer: la descarga empieza a fluir en cuanto Node la manda, en
|
Cantos menos redondos, tarjetas coherentes y portada a ras
Los botones dejan de ser cápsulas y las tarjetas pierden la mitad del canto. De
paso se ordena el sistema: había tres radios sueltos y una píldora de 999px
repetida en quince archivos, y quedan dos —uno para lo que se pulsa, otro para
las superficies—. Los botones de icono suelto siguen redondos, que ahí sí tiene
sentido.
Las fichas del taller no usaban la tarjeta compartida: tenían su propio borde,
su propio canto y su propio hover, así que se veían de otra familia que las de
música. Ahora usan `.tarjeta`, con el mismo reflejo bajo el puntero y el mismo
subrayado.
Y la portada arranca en el borde de la ventana, con la cabecera flotando encima.
Para eso la cabecera pasa a medir su propio alto y publicarlo: estaba escrito a
mano en 4,75rem cuando mide 68px, y todo lo que dependía de ese número —el salto
a un ancla, las barras laterales pegajosas— quedaba desplazado.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
|
|
|
# vez de esperar a que Nginx tenga el archivo entero.
|
|
|
|
|
proxy_buffering off;
|
|
|
|
|
}
|
|
|
|
|
}
|