Architecture
Overview
Technologies
Runtipi is built using a modern web architecture and emphasizes on end-to-end type safety. The following technologies are used:
- Traefik (opens in a new tab) - Reverse proxy and load balancer
- Docker (opens in a new tab) - Containerization
- TypeScript (opens in a new tab) - Typed superset of JavaScript
- Next.js (opens in a new tab) - React framework for server-side rendering and static site generation
- Drizzle-ORM (opens in a new tab) - Type safe ORM
- PostgreSQL (opens in a new tab) - Database
- Redis (opens in a new tab) - In-memory data structure store
- BullMQ (opens in a new tab) - Job queueing system
Reverse Proxy
Traefik is used as a reverse proxy and load balancer. It is configured to automatically detect new services and configure them to receive traffic from the internet. Each service is automatically configured to be able to receive an SSL certificate from Let's Encrypt (opens in a new tab) using the HTTP Challenge (opens in a new tab).
Applications
Docker is used to containerize the application. Each service is built into a Docker image and deployed using Docker Compose (opens in a new tab). Each app you install is deployed as a separate Docker Compose project. This allows you to easily manage each app independently. All apps are deployed to the same network, allowing them to communicate with each other.