Saltearse al contenido

Configuración inicial servidor

Configuración inicial de servidores de producción (AHL)

Sección titulada «Configuración inicial de servidores de producción (AHL)»
  • Proveedor: Clouding.io
  • Sistema operativo: Ubuntu Server 24.04 LTS
  • Zona horaria: Europa/Madrid
  • Acceso SSH: Par de claves único para toda la infraestructura
  • Puerto SSH personalizado: 51022
  • Usuarios:
    • Usuario ahlgest con privilegios sudo para administración (la contraseña está registrada en el apartado interno de contraseñas)
  • Hostnames:
    • ahlsys → Servidor de aplicaciones (Laravel + Astro)
    • ahldb → Servidor de base de datos (PostgreSQL)
    • ahlsmtp → Servidor Relé SMTP (Postfix + SASL)

Ventana de terminal
sudo hostnamectl set-hostname ahlsys # o ahldb según corresponda

Editar /etc/hosts:

127.0.1.1 ahlsys # o ahldb

Ventana de terminal
sudo timedatectl set-timezone Europe/Madrid

Ventana de terminal
sudo adduser ahlgest
sudo usermod -aG sudo ahlgest

Subir clave desde máquina local:

Ventana de terminal
ssh-copy-id -p 51022 ahlgest@IP_DEL_SERVIDOR

O alternativamente (si se accede como root):

Ventana de terminal
cat ~/.ssh/id_rsa.pub | ssh -p 51022 root@IP_DEL_SERVIDOR "mkdir -p /home/ahlgest/.ssh && cat >> /home/ahlgest/.ssh/authorized_keys && chown -R ahlgest:ahlgest /home/ahlgest/.ssh"

5. Configuración desacoplada de SSH (modelo modular)

Sección titulada «5. Configuración desacoplada de SSH (modelo modular)»

Permitir la gestión de la configuración de SSH de forma modular, no destructiva y controlada, sin editar directamente /etc/ssh/sshd_config.

OpenSSH permite incluir archivos externos mediante la directiva:

Ventana de terminal
Include /etc/ssh/sshd_config.d/*.conf

Esto permite mantener una arquitectura como la siguiente:

/etc/ssh/sshd_config → Archivo base (no modificado)
/etc/ssh/sshd_config.d/
01-base.conf → Ajustes seguros por defecto
10-miempresa.conf → Política de la empresa (bajo control de Git u otro gestor)
99-local.conf → Cambios locales o temporales
Revisar que se ha configurado el puerto 51022 en el firewal
Sección titulada «Revisar que se ha configurado el puerto 51022 en el firewal»

En caso contrario, dará error

Ventana de terminal
# Puerto no estándar para reducir escaneos automatizados
Port 51022
# Acceso restringido por clave pública
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM no
# Seguridad adicional
MaxAuthTries 3
MaxSessions 2
LoginGraceTime 20
# Sesiones vivas y controladas
ClientAliveInterval 60
ClientAliveCountMax 2
# Desactivar funciones no necesarias
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no
# Subsystem SFTP
Subsystem sftp /usr/lib/openssh/sftp-server
  • No destructivo: no modifica archivos del sistema que podrían ser sobreescritos por actualizaciones.
  • Auditabilidad: el archivo 10-miempresa.conf puede versionarse y revisarse.
  • Modularidad: se pueden añadir, quitar o modificar partes específicas sin afectar la totalidad.
  • Reversibilidad: puedes desactivar una configuración simplemente eliminando el .conf correspondiente.
  • Nombra los archivos con prefijos numéricos para controlar el orden de carga.
  • Usa Include solo una vez y cerca del inicio de sshd_config.
  • Antes de reiniciar el servicio SSH, valida la configuración:
Ventana de terminal
sshd -t
  • Aplica los cambios:
Ventana de terminal
sudo systemctl restart ssh

Una arquitectura de configuración robusta, segura y mantenible para entornos profesionales.


  • Rol: PostgreSQL
  • Acceso: Solo desde IP local de gestión con pgAdmin (intención de uso de VPC)
  • Seguridad: Aislamiento de red si es viable
  • Usuarios: No se usará root; el superusuario ahlgest gestionará la base

  • Rol: Laravel + Astro + microservicios
  • Web server: Apache
  • PHP: Versión 8.4 instalada vía Ondrej
  • SSL: Certbot con Let’s Encrypt, sin wildcards, autorenovable
  • VirtualHosts: Separados por aplicación (Laravel, Astro, etc.)

  • Configuración de VPC para restringir acceso a PostgreSQL
  • DNS y dominios para conexión externa
  • Instalación y configuración de cada stack (Laravel, Astro, PostgreSQL, Certbot, Apache, etc.)