Documentation for how to use IPS-framework with this IPS-portal can be found at https://ips-framework.readthedocs.io/en/latest/user_guides/portal_guides.html
Setup environment with python venv and install IPS-portal:
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"To run the application in debug mode
# set up docker environment for the database and Jupyterlab
docker compose up -d
# set up environment variables
source .env.example
# start IPS portal
flask runGo to http://localhost:5000 for the web portal, go to http://localhost:8888 for JupyterLab
To cleanup:
# remove database environment
docker compose down -v
# remove Jupyter environment
rm -rf ${JUPYTERHUB_PORTAL_DIR}/*Note that cleaning up only one environment may lead to errant links from the Portal to Jupyterlab.
The IPS Portal needs to share a filesystem mount with the directories used in Jupyter.
It is important to
- Mongo (stores IPS events and all metadata)
docker run --rm -p 27017:27017 -v /tmp/db:/data/db mongo:6- MinIO (stores raw data, has a web GUI on port 9001, use variables below as credentials)
docker run --rm -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE -e MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY minio/minio:RELEASE.2025-09-07T16-13-09Z-cpuv1You will need to make sure that your Jupyterlab directory - devtools/jupyterlab/work with the default configs - has the setgid flag set:
chmod -R g+s devtools/jupyterlab/work(If you do not have the setgid flag set on this directory, you can run into permissions issues if a user creates .ipynb_checkpoints or directories from the web interface.)
This is EXTREMELY important to follow in
docker run --rm -p 9411:9411 -p 16686:16686 --env COLLECTOR_ZIPKIN_HOST_PORT=9411 --env QUERY_BASE_PATH=/jaeger jaegertracing/all-in-one:1.38docker run --rm --network host -p 8081:8081 -e ME_CONFIG_MONGODB_SERVER=localhost mongo-expressthen go to http://localhost:8081
docker-compose up --buildGo to http://localhost