The platform is an MVP for a research group's server. Read this page before making it reachable by anyone else.
- API. Every route except
/and/healthrequires anX-API-Keyheader whose value is inAPI_KEYS. Keys are static and compared as plain strings; there are no users, roles or expiry. Give each person their own key so one can be removed (edit.envanddocker compose up -d api). - MinIO and Redis credentials are only in
.envand in the containers' environment. Researchers use the API and presigned links; they do not need them. - Network. The services talk on a private Docker network. In the production stack only nginx publishes a port.
- JupyterLab has no token or password in either Compose file (
--NotebookApp.token='',--ServerApp.token=). Whoever reaches it can run code with access to the shared inputs and outputs. Keep it off any network you do not trust, or set a token (--ServerApp.token=<value>) or password in the Compose file. - Development ports.
docker-compose.ymlpublishes Redis (6379, no password) and MinIO (19000, 19001) on all interfaces. Use it on a workstation or behind a firewall. - No TLS. Both stacks serve plain HTTP; API keys travel in clear. Put a TLS-terminating proxy in front.
- Model code runs with the worker's rights. A spec's
packageis installed with pip and its executor runs inside the worker, which holds the MinIO credentials. There is no sandbox. Only let people you trust register specs or submit inline specs, and review the packages specs point to. - Defaults. Without
.env, the Compose files fall back to the keydev-keyand the MinIO credentialsinpe_admin/inpe_secret_2024, which are public. Always create.env.
.envcreated from.env.example, everychange-mereplaced withopenssl rand -hex 32;.envnot in git.- One API key per person.
- Production stack (
docker-compose.prod.yml), with TLS in front of nginx. - JupyterLab with a token, or not exposed.
- Registry repository writable only by people you trust; specs pin
packageto exact versions. - Backups of the MinIO and Redis volumes (Deployment).
Open an issue at https://github.com/DisSModel/dissmodel-platform/issues, or write to the maintainer for anything that should not be public.