overview
Problema
Quería un sitio donde poner lo que construyo, y quería llevar yo cada parte, desde el diseño hasta el servidor. Una web estática me iba bien hasta que me cansé de editar archivos cada vez que añadía algo.
Enfoque
Así que la pasé a Flask y SQLite y escribí un panel de administración privado para proyectos, documentación y archivos. El panel tiene un editor de markdown con vista previa, que uso más de lo que esperaba. Las páginas públicas están en inglés y en español.
El aspecto es oscuro e inspirado en NieR:Automata, hecho solo con CSS y JavaScript. Sin archivos de vídeo.
La web corre con Gunicorn en mi propio VPS y sale a internet por Cloudflare Tunnel. En el mismo VPS tengo también mi servidor de correo: Postfix, Dovecot, OpenDKIM y Roundcube.
Los despliegues pasan por deploy.sh, que hace estos pasos en orden:
- Comprobación de contraste de los colores del texto.
- Tests unitarios.
git pull.- Instalación de las unidades de systemd del recolector de amenazas y del tarpit de SSH.
- Actualización del esquema de la base de datos.
- Reinicio de la web.
- Prueba de humo contra la web en producción.
Si falla algún test, se detiene antes del reinicio, que es justo lo que quiero.
Resultados
Está en producción. Junto a proyectos, documentación y archivos hay una página de CV y una página de clima de amenazas que muestra intentos de ataque, con las IP enmascaradas. Todavía no he medido nada, así que no pongo números.
Stack
Python, Flask, SQLite, Gunicorn, HTML, CSS, JavaScript, Cloudflare Tunnel, systemd, Bash.