Crear tu Primer Proyecto
Guía paso a paso para crear un nuevo proyecto
Usando el Scaffold
La forma más rápida de crear un proyecto es usando el scaffold automatizado.
Sintaxis
python /srv/projects/infra-tools/new_project.py \
--slug mi-proyecto \
--port 81XX \
--domain mi-proyecto.illanes00.cl \
--register-monitorParámetros
| Parámetro | Descripción | Ejemplo |
|---|---|---|
--slug |
Nombre único del proyecto | mi-proyecto |
--port |
Puerto de la aplicación (8101-8199) | 8105 |
--domain |
Dominio público | mi-proyecto.illanes00.cl |
--register-monitor |
Agregar a monitoring (opcional) | flag |
Ejemplo Completo
ssh vps-dev
python /srv/projects/infra-tools/new_project.py \
--slug ejemplo-api \
--port 8110 \
--domain ejemplo-api.illanes00.cl \
--register-monitorEstructura Generada
ejemplo-api/
├── app/
│ ├── main.py # FastAPI entry point
│ └── __init__.py
├── tests/
│ └── test_main.py # Pruebas iniciales
├── deploy/
│ ├── systemd.service # Definición del servicio
│ └── caddy.caddy # Config reverse proxy
├── .github/
│ └── workflows/
│ ├── ci.yml # Pipeline CI
│ └── cd.yml # Pipeline CD
├── run.py # Entry point desarrollo
├── requirements.txt # Dependencias Python
├── requirements-test.txt # Dependencias de testing
├── .env.example # Template de variables
├── .gitignore
├── README.md
├── LOCAL-AGENT-CONTEXT.md # Contexto local (gitignored)
└── AGENT-CONTEXT.md # Symlink → global
Pasos Post-Creación
1. Configurar Variables de Entorno
cd /srv/projects/ejemplo-api
cp .env.example .env
nano .envContenido mínimo:
HOST=0.0.0.0
PORT=8110
APP_NAME=ejemplo-api
APP_ENV=development
2. Crear Entorno Virtual
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt3. Probar Localmente
python run.py
# En otra terminal:
curl http://localhost:8110/healthz4. Instalar Servicio systemd
sudo cp deploy/systemd.service /etc/systemd/system/ejemplo-api.service
sudo systemctl daemon-reload
sudo systemctl enable --now ejemplo-api.service5. Configurar Caddy
sudo ln -s /srv/projects/ejemplo-api/deploy/caddy.caddy /etc/caddy/sites.d/
sudo systemctl reload caddy6. Crear Repositorio GitHub
cd /srv/projects/ejemplo-api
git init
git add -A
git commit -m "feat: initial project setup"
gh repo create illanes00/ejemplo-api --private --source=. --push7. Configurar Secrets de GitHub
En GitHub → Settings → Secrets → Actions: - DEPLOY_HOOK_URL - DEPLOY_TOKEN
Verificar Deploy
# Estado del servicio
systemctl status ejemplo-api.service
# Health check local
curl http://localhost:8110/healthz
# Health check via dominio (después de configurar DNS)
curl https://ejemplo-api.illanes00.cl/healthz