Skip to main content
  1. Instruments/

Lab-in-a-box deployments Software

License: MIT License

This is a collection of deployment workflows for self-hosted software services, implemented with pyinfra. Most importantly, this collection includes the (meta)data tools of the developed by the ORINOCO project, but the list of supported services also include a number of general purpose solutions, such as Hedgedoc or Gatus.

This effort does not aim to serve every use case and deployment scenario. Instead, it makes a few central assumptions:

  • Users have access to an account on a target machine that allows for root-access via sudo.
  • The base OS on a target machine is Debian (12+), or a sufficiently close derivative. There is no hard dependency, but nothing else has seen significant use (yet).
  • Users have means to configure the DNS for a domain they want to use for exposing deployed services.
  • Caddy is used as a web-server/reverse-proxy.
  • Podman is used as a container solution.

Conventions #

All provided deployments follow a common set of conventions:

  • One service, one user: Each deployment creates/uses a service-dedicated user account. All code runs in user-space.
  • Containerized environments: Code is generally deployed in virtual environments – typically user-space podman containers, but uv-managed virtual environments for (small) Python packages.
  • Systemd: Services are managed via user-space systemd service units.
  • Subdomains: Services are assumed to be deployed using dedicated subdomains (service.example.org, rather than example.org/service).