Go to file
2025-12-28 10:16:24 -05:00
backend cambios finales 2025-12-28 10:11:42 -05:00
saludut-inpec cambios finales 2025-12-28 10:11:42 -05:00
.gitignore desarrollo 2025-12-16 19:33:09 -05:00
README.md server cambios 2025-12-28 10:16:24 -05:00

Saludut

Frontend Angular (saludut-inpec) + backend Node.js (backend) + PostgreSQL + Python + LibreOffice.

Produccion (Alpine 3.21)

1) Preparar servidor

apk add nginx certbot certbot-nginx nftables rsync nodejs npm \
  postgresql postgresql-client python3 py3-pip libreoffice
rc-update add postgresql default
rc-service postgresql setup
rc-service postgresql start

2) Crear BD y usuario

su - postgres
psql -c "CREATE USER saludut_user WITH PASSWORD 'TU_PASSWORD_FUERTE';"
psql -c "CREATE DATABASE saludut_db OWNER saludut_user;"
exit

3) Subir codigo

mkdir -p /opt/saludut/backend /opt/saludut/frontend
tar -czf saludut-backend.tar.gz --exclude="node_modules" --exclude=".env" backend
tar -czf saludut-frontend.tar.gz --exclude="node_modules" saludut-inpec
scp -C saludut-backend.tar.gz root@tu-servidor:/opt/saludut/
scp -C saludut-frontend.tar.gz root@tu-servidor:/opt/saludut/

En el servidor:

tar -xzf /opt/saludut/saludut-backend.tar.gz -C /opt/saludut/
tar -xzf /opt/saludut/saludut-frontend.tar.gz -C /opt/saludut/

4) Inicializar esquema minimo

Ejecuta el script minimo (schema + roles base):

psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/insert.sql

El admin se crea automaticamente al iniciar el backend si defines ADMIN_USER y ADMIN_PASS en el .env.

Opcional: cargar datos masivos desde archivos:

psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/establecimiento.sql
psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/paciente.sql
psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/ingreso.sql

Opcional (solo si quieres cargar CUPS por SQL y no por la UI):

psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/cups_schema.sql
psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/cups_referencia.sql
psql -U saludut_user -d saludut_db -f /opt/saludut/backend/src/cups_cubiertos.sql

5) Backend (.env)

Crear backend/.env en el servidor:

DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=saludut_user
DB_PASSWORD=TU_PASSWORD_FUERTE
DB_NAME=saludut_db
JWT_SECRET=CAMBIA_ESTE_SECRETO
JWT_EXPIRES_IN=24h
PORT=3000
SOFFICE_PATH=/usr/bin/soffice
PYTHON_PATH=python3
ADMIN_USER=admin
ADMIN_PASS=admin123
ADMIN_EMAIL=admin@saludut.gov.co
ADMIN_NAME=Administrador Sistema

6) Crear usuario admin (automatico)

Si defines ADMIN_USER y ADMIN_PASS en .env, el backend crea/actualiza el admin automaticamente al iniciar.

7) Backend (instalar y correr)

cd /opt/saludut/backend
npm ci --omit=dev
node src/server.js

OpenRC (servicio backend)

cat <<'EOF' > /etc/init.d/saludut-backend
#!/sbin/openrc-run

name="saludut-backend"
description="Backend Node para Saludut"
directory="/opt/saludut/backend"
command="/usr/bin/node"
command_args="src/server.js"
command_background="yes"
pidfile="/run/${RC_SVCNAME}.pid"
output_log="/var/log/saludut-backend.log"
error_log="/var/log/saludut-backend.err"

depend() {
  need net
}
EOF

chmod +x /etc/init.d/saludut-backend
rc-update add saludut-backend default
rc-service saludut-backend start

8) Frontend (build)

cd /opt/saludut/saludut-inpec
npm ci
npm run build

El build queda en saludut-inpec/dist/saludut-inpec/.

9) Configurar API base (sin localhost)

El frontend lee la base desde window.__SALUDUT_CONFIG__:

<script>
  window.__SALUDUT_CONFIG__ = {
    apiBaseUrl: '/api'
  };
</script>

Si no usas proxy y expones el puerto directo:

<script>
  window.__SALUDUT_CONFIG__ = {
    apiBaseUrl: 'https://autorizaciones.saludut.com:3000'
  };
</script>

10) Nginx + SSL (ejemplo)

server {
  listen 80;
  server_name autorizaciones.saludut.com;

  root /var/www/saludut;
  index index.html;

  location / {
    try_files $uri /index.html;
  }

  location /api/ {
    proxy_pass http://127.0.0.1:3000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Luego:

rc-service nginx start
certbot --nginx -d autorizaciones.saludut.com

Desarrollo

cd backend
npm install
node src/server.js
cd saludut-inpec
npm install
npm run start