“If you want something done, do it yourself.”
- A lot of people
Roll your own NODA API compatible server and host the data yourself.
Made in Sweden 🇸🇪 by skilled artisan software engineers.
To provide clients and potential clients with an alternative platform where they are responsible for hosting the API server and the data store.
- Small infrastructure.
- The only dependency is on PostgreSQL.
- Compiled binaries (Go).
- Designed to scale with demand.
- You can host domains on separate PostgreSQL machines.
- You can scale the Self-host API to as many instances as you require.
- The Program Manager and its Workers can be scaled as needed.
- Can be hosted in your environment.
- No requirement on any specific cloud solution.
- It is Free software.
- License is GPLv3.
- The API specification is open, and you can implement it if you don't want to use the existing implementation.
A typical deployment scenario would look something like this;
- One (or more) instances of the
Self-host API server. This server provides the public REST API and is the only exposed surface from the internet. - One instance of the
Program Manager. This server manages all programs and schedules them. - One (or more) instances of the
Program Worker. This server accepts work from theProgram Manager. - One (or more) DBMS to host all Self-host databases (Domains). PostgreSQL 12+ with one (or more) Self-host
Domains.
The API server can accept client request from either the internet or from the intranet. The Domain databases backs all API server requests.
The Program Worker can execute requests to external services on the internet or internal services, for example, the API server.
An HTTP Proxy may be used in front of the API server depending on the deployment scenario.
api:aapije: REST API interface for the Self-host public facing API server.juvuln: REST API interface for the internal API of the Program Manager.malgomaj: REST API interface for the internal API of the Program Worker.
cmd:selfctl: Self Control; self-host CLI program.aapije: Aapije is the Self-host public facing API server.juvuln: Juvuln is the Self-host Program Manager.malgomaj: Malgomaj is the Self-host Program Worker.
docs: Documentationinternal:services: Handlers for interfaces to the PostgreSQL backend.errors: Custom errors.
middleware: Middleware used by HTTP Servers.postgres:migrations: Database schema.queries: Database queries.
Skills required;
- Good knowledge of Docker.
- Some knowledge of PostgreSQL.
- Some knowledge of GNU+Linux or Unix environments in general.
Hardware and software required;
- Computer with Docker installed.
Five to fifteen-minute deployment
- Glossary
- Tools of the trade
- Design
- Benchmark
- Public-facing API specification
- Notes on deploying to production
