Servidor VPS
Configuración de un dominio y un alojamiento en Internet
Se desea disponer de un alojamiento en Internet configurado con un servidor ssh, servidor web y servidor de correo. Se añadirán medidas de seguridad y de monitorización.
Para ello se utilizará un dominio y un servidor VPS. Se puede usar el pack de Github.
– Registrar un dominio en Namecheap (o Name, Hostalia, Piensa Solutions, . . . )
Configurar los DNS del alojamiento que se va a utilizar.
– Utilizar un VPS en DigitalOcean ( o PiensaSolutions, Contabo, OVH, Clouding, . . . )
- How To Set Up an Ubuntu 20.04 Server on a DigitalOcean Droplet: instalar LAMP/LEMP
How To Install Linux, Nginx, MySQL, PHP (LEMP stack) on Ubuntu 22.04
- Añadir el dominio y crear un registro tipo A
Conectarse por ssh
ssh root@your_server_ip ssh root@your_domain_server
Usuarios de Windows: Tutorial de SSH en Windows Terminal
Más información: Los mejores clientes SSH para Windows
Crear un nuevo usuario y añadirlo al grupo sudo
adduser nombre_usuario usermod -aG sudo nombre_usuario
Abrir el fichero de configuración del servidor ssh
sudo nano /etc/ssh/sshd_config
Modificar la opción PermitRootLogin y guardar el archivo
PermitRootLogin no
Reiniciar el servidor ssh
sudo systemctl restart ssh
- Instalar un certificado con Let’s Encrypt para usar https:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
Comprobación de renovación automática (2 veces al día):
sudo systemctl status certbot.timer sudo certbot renew --dry-run
Renovación del certificado SSL
- Configurar ufw, habilitar el cortafuegos ufw y abrir únicamente los puertos necesarios.
- Proteger el servidor con fail2ban.
Instalar y configurar Fail2Ban
Configura Fail2ban para evitar ataques SASL en Postfix
sudo apt update
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.{conf,local}
sudo nano /etc/fail2ban/jail.local
[sshd] enabled = true maxretry = 3 findtime = 1d bantime = 4w ignoreip = 127.0.0.1/8 23.34.45.56
reiniciar fail2ban
sudo systemctl restart fail2ban
Fichero datos.html en la carpeta ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Datos de ejemplo</title> </head> <body> <h2>Este es el contenido de la página de datos</h2> </body> </html>
Situarse en la carpeta de documentos del servidor VPS: /var/www/html
cd /var/www/html
crear la carpeta ejemplo
sudo su mkdir ejemplo
crear el fichero datos en la carpeta ejemplo
cd ejemplo nano datos.html
probar el acceso desde el navegador
SMTP ports 25, 465, and 587 are blocked on Droplets to prevent spam and other abuses on our platform. This block applies to all Droplets by default and includes traffic passing through a Reserved IP address.
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh sudo sh setup-repos.sh sudo apt-get install webmin --install-recommends
Abrir puerto 10000 en el cortafuegos
sudo ufw allow 10000
Acceso desde el navegador (introducir un user y password de un usuario en el equipo):
midominio.es:10000/
Instalar el módulo para administrar Nginx desde Webmin:
https://www.justindhoffman.com/sites/justindhoffman.com/files/nginx-0.11.wbm_.gz
En Ubuntu 20.04 da error en el módulo:
sudo apt install libhtml-parser-perl
- Configurar un certificado de Let’s Encrypt para Webmin
Parar el servidor web
sudo systemctl stop nginx
Pedir el certificado de Let’s Encrypt en Webmin / Configuration / SSL Encryption
https://alumno.me:10000/webmin/edit_ssl.cgi?xnavigation=1
Iniciar de nuevo el servidor web
sudo systemctl start nginx
- Crear un servidor virtual
Consola:
Creating a Virtual Host in NGINX
Webmin
server {
listen 80;
# sustituir usuario por el nombre de usuario usado
root /home/usuario/ejemplo;
# Add index.php to the list if you are using PHP
index index.php index.html;
# sustituir alumno.me por el dominio usado
server_name laravel.alumno.me;
location / {
# First attempt to serve request as file, then as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
aplicar los cambios en el servidor Nginx
dar permiso de acceso a la carpeta usuario al resto de usuarios (incluido www-data, el propietario del servidor web):
sudo chmod 755 /home/usuario
configurar el DNS en el droplet: añadir un registro tipo A
Crear el fichero /home/usuario/ejemplo/index.html:
cd ~
mkdir ejemplo
// sustituir alumno.me por el dominio usado
echo "Servidor virtual laravel.alumno.me" > ejemplo/index.html
instalar un certificado ssl:
// sustituir alumno.me por el dominio usado
sudo certbot --nginx -d laravel.alumno.me
Comprobar el acceso desde el navegador:
- Usar netdata para monitorizar el funcionamiento del servidor:
Webinar: ilert and Netdata – AIOps from Monitoring to Alerting
Recomendable:
– Instalar Midnight Commander (en el VPS), explorador de archivos en consola
sudo apt install mc
– Instalar Filezilla (en el equipo local), para transferir archivos entre el equipo local y el VPS
sudo apt install filezilla
– Montar el sistema de ficheros remoto del VPS en una carpeta en el equipo local:
cd ~ mkdir servidor sudo apt install sshfs sshfs usuario@alumno.me:/home/usuario servidor
y desmontarlo al terminar
fusermount -u servidor













Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.