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)»Información general
Sección titulada «Información general»- 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
ahlgestcon privilegiossudopara administración (la contraseña está registrada en el apartado interno de contraseñas)
- Usuario
- Hostnames:
ahlsys→ Servidor de aplicaciones (Laravel + Astro)ahldb→ Servidor de base de datos (PostgreSQL)ahlsmtp→ Servidor Relé SMTP (Postfix + SASL)
Configuración común a ambos servidores
Sección titulada «Configuración común a ambos servidores»1. Establecer hostname
Sección titulada «1. Establecer hostname»sudo hostnamectl set-hostname ahlsys # o ahldb según correspondaEditar /etc/hosts:
127.0.1.1 ahlsys # o ahldb2. Establecer zona horaria
Sección titulada «2. Establecer zona horaria»sudo timedatectl set-timezone Europe/Madrid3. Crear usuario de gestión
Sección titulada «3. Crear usuario de gestión»sudo adduser ahlgestsudo usermod -aG sudo ahlgest4. Configurar acceso SSH con clave pública
Sección titulada «4. Configurar acceso SSH con clave pública»Subir clave desde máquina local:
ssh-copy-id -p 51022 ahlgest@IP_DEL_SERVIDORO alternativamente (si se accede como root):
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)»Objetivo
Sección titulada «Objetivo»Permitir la gestión de la configuración de SSH de forma modular, no destructiva y controlada, sin editar directamente /etc/ssh/sshd_config.
Fundamento
Sección titulada «Fundamento»OpenSSH permite incluir archivos externos mediante la directiva:
Include /etc/ssh/sshd_config.d/*.confEsto 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 temporalesEjemplo de archivo 10-miempresa.conf
Sección titulada «Ejemplo de archivo 10-miempresa.conf»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
Configuración
Sección titulada «Configuración»# Puerto no estándar para reducir escaneos automatizadosPort 51022
# Acceso restringido por clave públicaPermitRootLogin noPubkeyAuthentication yesPasswordAuthentication yesChallengeResponseAuthentication noKbdInteractiveAuthentication noUsePAM no
# Seguridad adicionalMaxAuthTries 3MaxSessions 2LoginGraceTime 20
# Sesiones vivas y controladasClientAliveInterval 60ClientAliveCountMax 2
# Desactivar funciones no necesariasX11Forwarding noAllowAgentForwarding noAllowTcpForwarding noPermitTunnel no
# Subsystem SFTPSubsystem sftp /usr/lib/openssh/sftp-serverBeneficios
Sección titulada «Beneficios»- No destructivo: no modifica archivos del sistema que podrían ser sobreescritos por actualizaciones.
- Auditabilidad: el archivo
10-miempresa.confpuede 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
.confcorrespondiente.
Recomendaciones
Sección titulada «Recomendaciones»- Nombra los archivos con prefijos numéricos para controlar el orden de carga.
- Usa
Includesolo una vez y cerca del inicio desshd_config. - Antes de reiniciar el servicio SSH, valida la configuración:
sshd -t- Aplica los cambios:
sudo systemctl restart ssh✅ Resultado
Sección titulada «✅ Resultado»Una arquitectura de configuración robusta, segura y mantenible para entornos profesionales.
Servidor ahldb (Base de datos)
Sección titulada «Servidor ahldb (Base de datos)»- 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 superusuarioahlgestgestionará la base
Servidor ahlsys (Aplicaciones)
Sección titulada «Servidor ahlsys (Aplicaciones)»- 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.)
Pendiente
Sección titulada «Pendiente»- 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.)