La edición servidor de sudobian: Debian 13 sin escritorio, endurecido desde el primer arranque y con las herramientas de administración ya instaladas. Sobre esa base, 26 roles opcionales que se eligen en la instalación: contenedores, web, bases de datos, monitoreo, backups, VPN, almacenamiento, nube y automatización, auditoría y virtualización. The server edition of sudobian: Debian 13, headless, hardened from first boot, with the administration tools already installed. On that base, 26 optional roles chosen at install time: containers, web, databases, monitoring, backups, VPN, storage, cloud and automation, auditing and virtualization.
Cosas que un Debian recién instalado no trae configuradas.Things a fresh Debian install doesn't set up.
Debian se instala sin firewall. Aquí ufw bloquea todo lo entrante desde el primer arranque, y el sistema verifica que quedó así.Debian installs with no firewall. Here ufw blocks all incoming from first boot, and the system verifies it did.
Con Debian + Docker, publicar un puerto con -p lo abre al exterior aunque ufw tenga la entrada cerrada: Docker escribe sus propias reglas de iptables y no pasa por ufw. Aquí una regla en DOCKER-USER hace que esos puertos solo se alcancen desde redes privadas.With Debian + Docker, publishing a port with -p opens it to the outside even with ufw's incoming closed: Docker writes its own iptables rules and doesn't go through ufw. Here a DOCKER-USER rule makes those ports reachable only from private networks.
MariaDB y PostgreSQL escuchan solo en localhost; phpMyAdmin y Cockpit, solo desde redes privadas, desde que se instala el rol. En un Debian normal, cada una de esas restricciones hay que configurarla a mano.MariaDB and PostgreSQL listen only on localhost; phpMyAdmin and Cockpit, only from private networks, from the moment the role is installed. On a plain Debian, each of those restrictions has to be set up by hand.
Cada cambio en la configuración de /etc queda registrado con git, así se puede ver qué cambió y volver atrás. El problema es que, instalado tal cual, ese historial guardaría también las contraseñas del sistema y las claves privadas. Aquí se configura para dejarlas afuera y el historial arranca limpio.Every change to the config in /etc is recorded with git, so you can see what changed and roll it back. The catch is that, installed as-is, that history would also store the system passwords and private keys. Here it's set up to leave those out and the history starts clean.
Puerto 5022, root sin acceso, 3 intentos, fail2ban sobre el puerto real y un camino guiado a solo-clave sin quedar fuera. Debian trae el 22 y 6 intentos.Port 5022, no root login, 3 tries, fail2ban on the real port, and a guided path to key-only without locking yourself out. Debian ships 22 and 6 tries.
26 opciones, con repos de terceros ya configurados (Docker, Kubernetes, Helm, OpenTofu), sin agregar claves ni sources a mano. Más particionado LVM pensado para servidor.26 options, with third-party repos preconfigured (Docker, Kubernetes, Helm, OpenTofu), no adding keys or sources by hand. Plus LVM partitioning built for a server.
Nada viene marcado. Se eligen por categoría durante la instalación y se instalan en el primer arranque; o se agregan después con sudobian-setup.
Nothing is pre-checked. Chosen by category during install and installed on first boot; or added later with sudobian-setup.
Verificado en una instalación real en hardware físico.Verified on a real installation on physical hardware.
sudobian-docker-expose.A DOCKER-USER chain lets container ports through only from private networks. To open one to the internet, on purpose: sudobian-docker-expose.Del arranque a la máquina lista y verificada.From boot to a ready, verified machine.
Una configuración fija de systemd-networkd toma cualquier placa en*/eth* por DHCP, con DNS de systemd-resolved. La configuración es fija; la IP es por DHCP. Para IP fija se edita el .network.A fixed systemd-networkd config brings up any en*/eth* NIC via DHCP, with systemd-resolved DNS. The config is fixed; the IP is DHCP. For a static IP you edit the .network.
Se eligen durante la instalación y se instalan al primer arranque con un servicio que corre una sola vez; el resultado queda registrado por rol y el primer login avisa si alguno falló. Más adelante se agregan otros con sudobian-setup, que los toma de un repo local en /var/lib/sudobian/local-repo, sin reinstalar la máquina.Chosen during install and installed on first boot by a service that runs once; the result is logged per role and the first login flags any that failed. More can be added later with sudobian-setup, which pulls them from a local repo at /var/lib/sudobian/local-repo, without reinstalling.
Marca cada puerto que escucha fuera de localhost sin una regla visible en ufw. Sirve justo para detectar lo que Docker abre por fuera del firewall.Flags every port listening beyond localhost with no visible ufw rule. Exactly what catches what Docker opens outside the firewall.
El instalador asistido pregunta disco, usuario y roles paso a paso. El desatendido usa un preseed y no pregunta nada: instala solo, ideal para aprovisionar en serie, aunque borra el disco elegido sin confirmar.The assisted installer asks for disk, user and roles step by step. The unattended one uses a preseed and asks nothing: it installs on its own, ideal for provisioning at scale, though it wipes the chosen disk without confirming.
La edición actual de la imagen y lo que está en camino para la siguiente.The current image release and what's on the way for the next one.
Para consultas sobre la edición server o para reportar un problema.For questions about the server edition or to report a problem.
Se puede probar primero en una máquina virtual, o grabar a un USB con dd, balenaEtcher, Rufus (modo DD) o Ventoy. Conviene verificar el checksum SHA256 que aparece debajo.Can be tried first in a virtual machine, or written to a USB drive with dd, balenaEtcher, Rufus (DD mode) or Ventoy. Verify the SHA256 checksum shown below.
ecacc56b75ef93500c36477bd47f34f4c533956e489cf5f0de5234868b8c7f5e