What lies underneath
An Organtia installation is a small set of containers with a database and its own file store. Nothing more.
The pieces
Section titled “The pieces”| Piece | What it is | What it stores |
|---|---|---|
| api | The application: it serves the office, the interface, the API and the cron clock. | Nothing by itself: it writes to the database and to the store. |
| db | PostgreSQL 17. | All the state: roles, assignments, messages, cron jobs, audit. |
| archivos (volume) | Document store. | What the client uploads and what the roles produce. |
There are two more services that do not stay running:
- cli: a console for operations tasks (creating users, diagnostics).
- tests: the automated test suite.
They are invoked by hand and they finish.
What is exposed to the outside
Section titled “What is exposed to the outside”Very little, and on purpose:
- The api listens only on
127.0.0.1(whatever port is configured, 18011 by default). It is not exposed directly to the internet: Caddy sits in front, providing HTTPS and the domain certificate. - The database is not exposed. It only opens on loopback so the host’s test runner can connect; no container needs it from outside.
- The api container reaches the internet only to talk to the model provider. There is no telemetry: the application does not send usage data to third parties.
The cron clock
Section titled “The cron clock”There is no separate service: the scheduler lives inside the api. Every few seconds it checks whether any cron job is due and, if one is, it launches the assignment. That is why, if the api is down, cron jobs do not run; when it comes back, the runs that are due are recovered.
Migrations
Section titled “Migrations”The database is built from numbered SQL files, in order, applied on startup. A new file is added without rebuilding the image: it is mounted from the host. If a migration fails, startup stops instead of carrying on with a half-built database.
Isolation between clients
Section titled “Isolation between clients”Each installation has:
- Its containers, prefixed with the client name.
- Its volumes:
<cliente>-pgdataand<cliente>-archivos. - Its network, with its own subnet.
There is no shared database with several companies inside. If a client leaves tomorrow, its installation is stopped and its volumes are deleted: the others never notice.
