Este repositorio contiene el código fuente de una aplicación de notas que utiliza server actions de Next.js 14. La aplicación permite a los usuarios crear y eliminar notas, y se conecta a una base de datos para almacenar la información. De despliega en un servidor Ubuntu en Lightsail de AWS utilizando CI/CD con GitHub Actions.
- Node.js 14 o superior
- Base de datos compatible (postgresql)
- ORM Prisma
- Servidor remoto Ubuntu para despliegue
-
Clona este repositorio en tu máquina local:
git clone https://github.com/tu-usuario/todos-server-actions.git
-
Instala las dependencias del proyecto y sincroniza la base de datos:
cd todos-server-actions npm install npx prisma migrate dev
-
Configura las variables de entorno:
Crea un archivo
.env
en la raíz del proyecto y define las siguientes variables:NEXT_PUBLIC_DATABASE_URL=
-
Inicia el servidor de desarrollo:
npm run dev
Esto iniciará la aplicación en
http://localhost:3000
. -
Accede a la aplicación en tu navegador web y comienza a crear tus notas.
Este proyecto se puede desplegar en un servidor Ubuntu en Lightsail de AWS utilizando CI/CD. Asegúrate de tener configurado tu entorno de CI/CD para que se ejecute automáticamente cuando se realicen cambios en el repositorio.
-
Crea un archivo
.env
en la raíz del proyecto y define las siguientes variables:NEXT_PUBLIC_DATABASE_URL=
-
Crea una nueva instancia de servidor en Lightsail (AWS), EC2 (AWS), o tu proveedor de computación de la nube preferido - también puedes ocupar un hosting compartido o VPS y configura tu entorno de CI/CD para que se ejecute automáticamente cuando se realicen cambios en el repositorio.
-
Crea una instancia de base de datos en tu proveedor de servicios de base de datos postgresql preferido (por ejemplo, AWS RDS, Google Cloud SQL, etc.).
-
Instalar apache2
sudo apt update sudo apt install apache2
-
Ajustar el firewall
sudo ufw app list sudo ufw allow 'Apache' sudo ufw status
-
Comprobar el estado de apache2
sudo systemctl status apache2
-
Redirigir el tráfico desde un subdominio a un puerto específico en tu servidor
Primero, necesitas habilitar los módulos proxy y proxy_http en Apache. Puedes hacerlo ejecutando los siguientes comandos:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
- Configurar el VirtualHost A continuación, necesitas crear o modificar el archivo de configuración del virtual host para tu subdominio. Por ejemplo, si tu subdominio es app.tudominio.com, el archivo de configuración podría llamarse app.tudominio.com.conf. Este archivo generalmente se encuentra en /etc/apache2/sites-available/. Crea o edita este archivo:
sudo nano /etc/apache2/sites-available/app.tudominio.com.conf
Añade:
<VirtualHost *:80>
ServerName app.tudominio.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/app.tudominio.com_error.log
CustomLog ${APACHE_LOG_DIR}/app.tudominio.com_access.log combined
</VirtualHost>
- Habilitar el sitio
sudo a2ensite app.tudominio.com.conf
sudo systemctl restart apache2
- Configura el dominio/subdominio en tu proveedor de dominios para que apunte a la dirección IP de tu servidor.
- Instalar certbot
sudo apt install letsencrypt
- Obtener el certificado SSL
sudo systemctl status certbot.timer
- Servidor independiente para obtener el certificado SSL
sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d domain-name.com
### Configuración de pm2
1. Instalar pm2 de manera global. pm2 es un administrador de procesos de producción para aplicaciones Node.js con un balanceador de carga integrado.
```bash
npm install pm2 -g
- Iniciar la aplicación con pm2
pm2 start npm --name "app-name" -- start
- Verficar que la aplicación se está ejecutando
pm2 list
- Configurar pm2 para que se inicie automáticamente al arrancar el servidor
pm2 startup
- Guardar la configuración actual de pm2
pm2 save
-
Crea un archivo
.github/workflows/main.yml
en la raíz del proyecto y define el siguiente flujo de trabajo: -
En settings del repositorio en GitHub, crea un runner y sigue las instrucciones para conectar tu instancia de ubuntu con el runner y configura las variables de entorno.
Si deseas contribuir a este proyecto, por favor sigue los siguientes pasos:
- Crea un fork de este repositorio. FORK
- Crea una rama con el nombre de tu nueva funcionalidad:
git checkout -b nueva-funcionalidad
. - Realiza tus cambios y realiza un commit:
git commit -m "Agrega nueva funcionalidad"
. - Envía tus cambios al repositorio remoto:
git push origin nueva-funcionalidad
. - Abre un pull request en este repositorio.
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.