171 lines
3.2 KiB
Markdown
171 lines
3.2 KiB
Markdown
|
|
# 🌐 Proyecto Web en Raspberry Pi 4 con HTTPS y Apache2
|
||
|
|
|
||
|
|
Configuración completa de servidor web autohospedado en una Raspberry Pi 4 usando Apache2, múltiples webs con HTTPS y dominio dinámico mediante DuckDNS.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🌟 Requisitos
|
||
|
|
|
||
|
|
- Raspberry Pi 4 con Raspberry Pi OS Lite
|
||
|
|
|
||
|
|
- Acceso root o sudo habilitado
|
||
|
|
|
||
|
|
- Acceso a tu router para redireccionar puertos
|
||
|
|
|
||
|
|
- Cuenta en [https://www.duckdns.org](https://www.duckdns.org)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 1: Actualizar la Raspberry Pi
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo apt update && sudo apt upgrade -y
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 2: Instalar Apache2 y herramientas necesarias
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo apt install apache2 certbot python3-certbot-apache curl git unzip -y
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 3: Registrar dominios en DuckDNS
|
||
|
|
|
||
|
|
1. Ir a [https://www.duckdns.org](https://www.duckdns.org) e iniciar sesión
|
||
|
|
|
||
|
|
2. Crear los subdominios necesarios (ej: `lilcarpi`, `blogcarpi`)
|
||
|
|
|
||
|
|
3. Apuntar ambos a tu IP pública
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 4: Crear script de actualización de IP dinámica
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo mkdir -p /root/duckdns
|
||
|
|
sudo nano /root/duckdns/duck.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
Contenido del script:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
#!/bin/bash
|
||
|
|
TOKEN="TU_TOKEN_DUCKDNS"
|
||
|
|
DOMAINS="lilcarpi,blogcarpi"
|
||
|
|
URL="https://www.duckdns.org/update?domains=$DOMAINS&token=$TOKEN&ip="
|
||
|
|
echo url="$URL" | curl -k -o /root/duckdns/duck.log -K -
|
||
|
|
```
|
||
|
|
|
||
|
|
Dar permisos y crear cronjob:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
chmod +x /root/duckdns/duck.sh
|
||
|
|
(crontab -l ; echo "*/5 * * * * /root/duckdns/duck.sh") | crontab -
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 5: Configurar Apache2 con múltiples webs
|
||
|
|
|
||
|
|
Crear carpetas para los sitios:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo mkdir -p /var/www/lilcarpi
|
||
|
|
sudo mkdir -p /var/www/blogcarpi
|
||
|
|
```
|
||
|
|
|
||
|
|
Dar permisos:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo chown -R $USER:$USER /var/www/lilcarpi
|
||
|
|
sudo chown -R $USER:$USER /var/www/blogcarpi
|
||
|
|
```
|
||
|
|
|
||
|
|
Crear archivos de configuración para cada virtualhost:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo nano /etc/apache2/sites-available/lilcarpi.conf
|
||
|
|
```
|
||
|
|
|
||
|
|
```apacheconf
|
||
|
|
<VirtualHost *:80>
|
||
|
|
ServerName lilcarpi.duckdns.org
|
||
|
|
DocumentRoot /var/www/lilcarpi
|
||
|
|
</VirtualHost>
|
||
|
|
```
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo nano /etc/apache2/sites-available/blogcarpi.conf
|
||
|
|
```
|
||
|
|
|
||
|
|
```apacheconf
|
||
|
|
<VirtualHost *:80>
|
||
|
|
ServerName blogcarpi.duckdns.org
|
||
|
|
DocumentRoot /var/www/blogcarpi
|
||
|
|
</VirtualHost>
|
||
|
|
```
|
||
|
|
|
||
|
|
Activar los sitios y reiniciar Apache:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo a2ensite lilcarpi.conf
|
||
|
|
sudo a2ensite blogcarpi.conf
|
||
|
|
sudo systemctl reload apache2
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 6: Instalar HTTPS con Let's Encrypt
|
||
|
|
|
||
|
|
```bash
|
||
|
|
sudo certbot --apache -d lilcarpi.duckdns.org -d blogcarpi.duckdns.org
|
||
|
|
```
|
||
|
|
|
||
|
|
Si quieres forzar redirección HTTP → HTTPS, acepta cuando te lo pida.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Paso 7: Comprobación
|
||
|
|
|
||
|
|
- Visita [https://lilcarpi.duckdns.org](https://lilcarpi.duckdns.org)
|
||
|
|
|
||
|
|
- Visita [https://blogcarpi.duckdns.org](https://blogcarpi.duckdns.org)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚫 Paso Opcional: Configurar dominio personalizado (como carpi.inc)
|
||
|
|
|
||
|
|
**DuckDNS no permite usar dominios personalizados directamente**. Pero podrías:
|
||
|
|
|
||
|
|
1. Comprar un dominio (como carpi.inc)
|
||
|
|
|
||
|
|
2. En su DNS, apuntar un CNAME a `lilcarpi.duckdns.org`
|
||
|
|
|
||
|
|
3. Usar DNS-01 para Let's Encrypt, con un hook
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🌐 Notas finales
|
||
|
|
|
||
|
|
- Todo esto se ejecuta directamente en la Raspberry Pi 4
|
||
|
|
|
||
|
|
- Puedes expandirlo con más virtualhosts
|
||
|
|
|
||
|
|
- Si quieres rendimiento, activa caché o CDN local (como Cloudflare DNS + proxy inverso)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
🌟 Powered by Tars & Carpi
|
||
|
|
|
||
|
|
```
|
||
|
|
}
|
||
|
|
|
||
|
|
```
|