Instalación
Para probarlo en tu máquina
git clone https://github.com/ssergy/syncapos.git
cd syncapos
docker compose up
Abre http://localhost:8080 y crea tu cuenta: la primera cuenta es la dueña de la instalación, no hay administrador aparte que configurar antes.
No hay archivo que editar antes: las contraseñas que nadie elige las genera el servidor al arrancar y las guarda en un volumen. Si prefieres poner las tuyas, copia deploy/quickstart/.env.example a .env y cámbialas.
Levanta cuatro servicios:
| servicio | qué es |
|---|---|
db | PostgreSQL |
api | el servidor: la consola, la ingesta, el esquema y los roles de cada local |
ai-bundle | prepara lo que el asistente puede responder |
ai | el asistente |
La primera compilación tarda, sobre todo la imagen del asistente.
Para servir un local de verdad
El stack de producción agrega TLS al frente, secretos como archivos, una lista de destinos permitidos para las llamadas al modelo y límites de recursos:
deploy/production/init-secrets.sh # genera las contraseñas, una vez
$EDITOR deploy/production/.env # el nombre del sitio
docker compose --env-file deploy/production/.env \
-f docker-compose.yml -f deploy/production/compose.yaml up -d
Las dos bases de datos
| Base | Qué guarda | Si la pierdes |
|---|---|---|
syncapos | cuentas, locales, cajas, tickets, ventas, facturas, cortes | se acabó: es la que hay que respaldar |
syncapos_sync | el reflejo de la base de cada POS, un esquema por local | el agente vuelve a leer el POS y la manda otra vez |
Operación
| Script | Para qué |
|---|---|
deploy/production/backup.sh | respaldo completo: las dos bases, el .env y los secretos |
deploy/production/restore.sh | restaurar ese respaldo en una instalación vacía |
deploy/production/upgrade.sh | subir de versión en el orden correcto, con respaldo previo |
deploy/production/rollback.sh | volver a las imágenes anteriores; no deshace migraciones |
deploy/production/rotate-ai-db-key.sh | rotar la contraseña con la que el asistente entra a la base |
deploy/production/package-release.sh | armar un paquete que se instala sin internet |