Self-Hosting Minispace
Minispace is open source (AGPL-3.0) and can be self-hosted on your own server. You have full control over your data, your infrastructure, and your configuration.
Architecture Overview
A full Minispace stack consists of the following services, all orchestrated via Docker Compose:
| Service | Image | Role |
|---|---|---|
db |
postgres:16-alpine |
PostgreSQL database (multi-tenant schemas) |
redis |
redis:7-alpine |
Real-time pub/sub and rate limiting |
api |
Rust/Axum backend | REST API + WebSocket server |
web |
Next.js 15 frontend | Web application |
nginx |
nginx:alpine |
Reverse proxy, SSL termination |
backup |
alpine:3.20 |
Scheduled database + media backups |
Data Flow
Internet → Nginx (80/443)
├── /api/* → API (port 8080)
├── /ws → API WebSocket
└── /* → Web frontend (port 3000)
Each daycare provisioned on the platform gets its own isolated PostgreSQL schema (garderie_{slug}), so tenants are completely separated at the database level.
Prerequisites
Before deploying, you need:
- A Linux server (Ubuntu 22.04+ recommended) with at least 2 GB RAM
- Docker 24+ and Docker Compose v2 installed
- A domain name pointed to your server (e.g.,
minispace.yourdomain.com) - An SMTP server or service (Gmail, Mailgun, Resend, etc.) for sending emails
- (Optional) A Cloudflare account if you want to use the production nginx config as-is
Cloudflare dependency in production nginx
The nginx.prod.conf included in the repo is configured to only accept traffic from Cloudflare IPs and drops all other connections with a 444. If you are not using Cloudflare as your proxy, you must modify the nginx config to remove the Cloudflare IP allowlist before deploying.
What's Next
- Deployment Guide — Step-by-step instructions to get Minispace running on your server