contacto@openit.ar | +54 9 3446434264

Tutorial: Implementar un VPS en AWS Free Tier con Debian, Nginx y Cloudflare Tunnel

Implementación de VPS en AWS Free Tier con Nginx y Cloudflare Tunnel


Introducción
En este tutorial, aprenderás a configurar un VPS en AWS Free Tier para alojar múltiples sitios web utilizando Nginx y Cloudflare Tunnel. Esta configuración es ideal para desarrolladores y pequeñas empresas que buscan una solución económica pero robusta para alojar sus sitios web.


Requisitos Previos

  • Una tarjeta de crédito para crear la cuenta AWS (no se realizarán cargos si nos mantenemos dentro del Free Tier).

  • Una cuenta de Cloudflare con tus dominios ya configurados.

  • Conocimientos básicos de línea de comandos Linux.


Índice

  1. Configuración de AWS Free Tier

  2. Creación y Configuración de la Instancia EC2

  3. Instalación y Configuración del Software Base

  4. Configuración de Nginx

  5. Implementación de Cloudflare Tunnel

  6. Optimizaciones y Seguridad

  7. Mantenimiento y Monitoreo


1. Configuración de AWS Free Tier

1.1 Crear una Cuenta AWS

  1. Visita aws.amazon.com.

  2. Haz clic en "Crear una cuenta de AWS".

  3. Completa el formulario con:

    • Email

    • Contraseña

    • Nombre de la cuenta AWS

  4. Proporciona la información de contacto y facturación.

  5. Verifica tu identidad mediante SMS o llamada.

  6. Selecciona el plan gratuito (Basic Support - Free).

1.2 Configurar el Usuario IAM

  1. Ve al servicio IAM.

  2. Crea un nuevo usuario.

  3. Asigna permisos AdministratorAccess.

  4. Guarda las credenciales de acceso.

  5. Configura MFA para mayor seguridad.


2. Creación y Configuración de la Instancia EC2

2.1 Lanzar la Instancia

  1. Ve a EC2 en la consola de AWS.

  2. Haz clic en "Launch Instance".

  3. Configura la instancia:

    • Name: web-server-01

    • OS: Debian 12 (Bookworm) x86_64

    • Instance type: t2.micro (Free Tier eligible)

    • Key pair: Crear nuevo

    • Network settings:

      • Allow SSH (port 22)

      • Allow HTTP (port 80)

      • Allow HTTPS (port 443)

    • Storage: 8 GB gp3 (Free Tier eligible)

2.2 Configurar Elastic IP (opcional)

  1. Asigna una Elastic IP a tu instancia.

  2. Asocia la IP con tu instancia.

  3. Etiqueta la IP para mejor organización.


3. Instalación y Configuración del Software Base

3.1 Conectarse a la Instancia

bash
chmod 400 tu-key-pair.pem
ssh -i tu-key-pair.pem admin@tu-ip-elastic

3.2 Actualizar el Sistema

bash
sudo apt update && sudo apt upgrade -y

3.3 Instalar Software Necesario

bash
sudo apt install nginx php-fpm fail2ban ufw -y

4. Configuración de Nginx

4.1 Configuración Base

Editar el archivo: /etc/nginx/nginx.conf

nginx
user www-data;
worker_processes auto; pid /run/nginx.pid; events { worker_connections 512; multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=WORDPRESS:10m max_size=10g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout http_500 http_503; fastcgi_cache_valid 200 60m; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }

4.2 Virtual Hosts

nginx
server {
listen 80; server_name tudominio.com www.tudominio.com; root /var/www/tudominio.com; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 60m; add_header X-FastCGI-Cache $upstream_cache_status; } }

Crear enlace simbólico:

bash
sudo ln -s /etc/nginx/sites-available/tudominio.com /etc/nginx/sites-enabled/

5. Implementación de Cloudflare Tunnel

5.1 Instalar Cloudflared

bash
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb

5.2 Autenticar Cloudflared

bash
cloudflared tunnel login

5.3 Crear y Configurar el Tunnel

bash
cloudflared tunnel create mi-tunnel

Archivo /etc/cloudflared/config.yml:

yaml
tunnel: tu-tunnel-id
credentials-file: /root/.cloudflared/tu-tunnel-id.json ingress: - hostname: site1.tudominio.com service: http://localhost:80 - hostname: site2.tudominio.com service: http://localhost:80 - service: http_status:404 originRequest: connectTimeout: 30s keepAliveConnections: 50 keepAliveTimeout: 1m30s noHappyEyeballs: true retries: 2

5.4 Ejecutar el Tunnel como Servicio

bash
sudo cloudflared service install

6. Optimizaciones y Seguridad

6.1 Configurar PHP-FPM

Editar /etc/php/8.2/fpm/pool.d/www.conf:

ini
pm = dynamic
pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3

6.2 Configurar Fail2ban

bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Editar /etc/fail2ban/jail.local:

ini
[sshd]
enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600

6.3 Configurar UFW

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow http sudo ufw allow https sudo ufw enable

7. Mantenimiento y Monitoreo

7.1 Configurar Logrotate

Archivo /etc/logrotate.d/nginx:

bash
/var/log/nginx/*.log {
daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript }

7.2 Monitoreo Básico

bash
htop # Ver uso de CPU y memoria
netstat -ntlp | grep nginx # Conexiones activas tail -f /var/log/nginx/access.log # Logs en tiempo real

Conclusión

Has configurado exitosamente un VPS en AWS Free Tier con Nginx y Cloudflare Tunnel. Ahora puedes:

  • Alojar múltiples sitios web.

  • Proteger tu infraestructura con Cloudflare.

  • Optimizar el rendimiento con microcaching y compresión.

  • Monitorear y mantener el sistema activo y seguro.


Recursos Adicionales

Compartir:

Post más reciente
Post anterior