← Home·

Quickstart Guide

⭐ Star on GitHub
Docker Compose · Self-hosted · MIT License

Self-Host Your Own Video Conferencing in 5 Minutes

Deploy LaSuiteMeet on your own server using Docker Compose. Own your data, run it on your infrastructure, zero third-party calls.

Open Ports: 80/443/7881/7882Docker Compose v2~10 min setup

Before you begin

Prerequisites

01

Docker Engine

Docker Engine with Docker Compose v2 included. Use docker compose (not docker-compose).

02

Server & Domain

A server with a public IP address and a domain name (or subdomain) pointing to it.

03

Open Ports

80/tcp · 443/tcp · 443/udp · 7881/tcp · 7882/udp must be reachable from the internet.

04

OIDC Provider

An OpenID Connect provider for authentication — Keycloak works great and ships with the compose stack.

05

SMTP Server

An outbound email server for meeting invitations and admin notifications.

Setup guide

Step-by-step installation

Step 01

Create workspace & fetch config

Create the working directory and download all required configuration files from the upstream repository.

bash
mkdir -p meet/env.d && cd meet

curl -o compose.yaml \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/docs/examples/compose/compose.yaml

curl -o .env \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/env.d/production.dist/hosts

curl -o env.d/common \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/env.d/production.dist/common

curl -o env.d/postgresql \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/env.d/production.dist/postgresql

curl -o livekit-server.yaml \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/docs/examples/livekit/server.yaml

curl -o default.conf.template \
  https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main/docker/files/production/default.conf.template
Step 02

Configure environment

Edit the downloaded config files with your values before starting.

bash
# env.d/common — critical keys to set:
LIVEKIT_API_SECRET=<generate with: openssl rand -hex 32>
DJANGO_SECRET_KEY=<generate with: openssl rand -hex 50>
OIDC_RP_CLIENT_ID=meet
OIDC_RP_CLIENT_SECRET=<your OIDC client secret>
DJANGO_EMAIL_HOST=smtp.yourdomain.tld
DJANGO_EMAIL_HOST_USER=no-reply@yourdomain.tld
DJANGO_EMAIL_HOST_PASSWORD=<your SMTP password>

# env.d/postgresql — set a strong password:
DB_PASSWORD=<generate with: openssl rand -hex 16>

# .env — set your domain:
REALM_NAME=meet
Step 03

Open firewall ports

Allow the required ports through ufw (or your cloud provider's security group).

bash
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 443/udp
ufw allow 7881/tcp
ufw allow 7882/udp
ufw enable
Step 04

Start the application

Bring up all services in detached mode. Docker will pull images on first run.

bash
docker compose up -d
Step 05

Run migrations & create admin

Apply database schema and create your first admin user.

bash
docker compose run --rm backend python manage.py migrate

docker compose run --rm backend python manage.py createsuperuser \
  --email admin@yourdomain.tld \
  --password <your-admin-password>

Batteries included

What's in the stack

PostgreSQL

Primary relational database

Redis

Caching & inter-service messaging

LiveKit

WebRTC selective forwarding unit

Nginx

Reverse proxy & TLS termination

Django

REST API backend

React

Browser-based conference frontend

Heads up

The Docker Compose path is marked experimental in the upstream repository. For production workloads at scale, the upstream team recommends Kubernetes + Helm. Recording and transcription features require additional service configuration beyond this quickstart.

Go deeper

Ready to contribute?

LaSuiteMeet is MIT-licensed and maintained by the French government's La Suite Numérique program. Stars, issues, and PRs are always welcome.