Notas sobre la máquina y el software que sirve arnauserver.me. Una VM pequeña en Azure, nginx, HTML estático, y la configuración que la mantiene en pie.
Standard_B1s · 1 vCPU AMD EPYC · 1 GB RAM · 62 GB SSD6.17.0-azurefstrim.timer semanal · swap de 2 GBvm.swappiness=10, journald cap 50 MB, snap eliminadounattended-upgrades con reinicio automático a las 04:00 si toca.br, .gz)immutablepreconnect22 (rate-limited), 80 y 443.MaxAuthTries 3, ciphers chacha20/aes-gcm, KEX sntrup761x25519.ssl_reject_handshake on.Server sobrescrito; bloqueo de .bak, .old, .git y similares.
Internet
│
▼
┌──────────────────────────────────────────┐
│ Azure VM (Ubuntu 24.04, 1 vCPU, 1 GB) │
│ │
│ ┌───────┐ ┌──────────┐ │
│ │ UFW │ ──▶│ nftables │ ◀─ CrowdSec │
│ └───┬───┘ └──────────┘ │
│ │ 80/443 │
│ ▼ │
│ ┌──────────┐ │
│ │ nginx │ ── /var/www/html (static) │
│ │ 1.24 │ ── /vitals → :8082 │
│ └──────────┘ │
│ │ │
│ │ logs │
│ ▼ │
│ ┌──────────┐ │
│ │ journald │ ◀── ssh-attack-alert.sh │
│ │ 50 MB │ (cron 5m → msmtp) │
│ └──────────┘ │
└──────────────────────────────────────────┘
certbot.timer, 30 días antes de expirar.ssh-attack-alert.sh compara la lista de IPs baneadas y envía aviso por msmtp si cambia./status.json cada minuto con uptime, load, último deploy y días hasta expirar el cert.post-commit en /var/www/html/.git regenera .gz y .br de los ficheros cambiados.msmtp contra smtp.gmail.com con App Password; el cron de azureuser entrega a inbox vía MAILTO=.