A lightweight app that deploys Jitsi Meet servers in the cloud in less than 3 minutes.
This app is built using Feathersjs with NeDB, Terraform, CloudFlare Node API and ec2instances.info for AWS instance types and cost estimates database.
You can see a demo at https://meet.peixe.co.
- Amazon Web Services account
- CloudFlare located domain
- Provision a Jitsi Meet server of any size and in any region of the world
- Terminate and provision again at any time, preserving allocated elastic IP, hostname and the automatically generated LetsEncrypt certificates
- Create your Jitsi AMI with one click for even faster provisioning
- Store history of instance states for cost calculation
- A web client and a CLI to easily manage your setup
- REST and real-time socket.io API
Jitsi Provisioner uses Docker and Docker Compose for easier setup. Learn how to install and use Docker.
Start by cloning the repository:
$ git clone https://github.com/miguelpeixe/jitsi-provisioner.git
$ cd jitsi-provisioner
Copy env.example to .env:
$ cp env.example .env
Generate JWT secret by running the random secret generator:
$ ./gen-secrets.sh
Edit .env
and set your AWS Access Key, CloudFlare Global API Key and other required information.
Start the server with docker-compose. -d
flag enables detached mode and run the container in the background:
$ docker-compose up -d
Access http://localhost:3030
For safety purposes, demo mode is active by default. You can switch it off by setting DEMO=0
in your .env
file and restart your container.
In demo mode:
- There is only one user with admin/admin credentials
- You cannot create new users
- Instances are not created in AWS
- DNS changes are not made in CloudFlare
- Creates fake instances with fake data
With demo mode off you can create and delete users using the custom cli:
$ cd cli/
$ npm install
$ ./bin/jitsi-provisioner users create myuser --password mypassword --role admin
$ ./bin/jitsi-provisioner users remove myuser
$ ./bin/jitsi-provisioner users changePassword myuser mypassword
A non-admin user can only provision and terminate available instances. They cannot create new instances or AMIs.
$ ./bin/jitsi-provisioner users changeRole myuser user
You can also use the CLI to manage your whole setup. If you want to just use the CLI or the API, you can disable the web client completely by setting NO_CLIENT=1
on your .env
.
You can also install the CLI globally and connect to remote Jitsi Provisioner apps. Read more about using the CLI.
Database and instance configuration data are persisted inside the DATA_PATH
defined in .env
, which is .data/
by default. This variable is not passed to the container, instead used to create a local volume for the container.
├── db ........................... Database directory
│ ├── amis.db .................. AMIs database
│ ├── aws.db ................... AWS instance types and prices pulled from ec2instances.info
│ ├── history.db ............... Instances state history database
│ ├── instances.db.............. Instances database
│ └── users.db ................. Users database
├── amis ......................... AMIs root directory
│ └── 72df3c ................... AMI directory with config data
│ ├── terraform.tfstate .... Terraform state file
│ └── tfcreate ............. Terraform creation plan
└── instances .................... Instances root directory
└── 2a6e43 ................... Instance directory with config data and keys
├── eip .................. Directory containing terraform state and plan for the EIP
├── instance ............. Directory containing terraform state and plan for the instance
├── certificate.tar.gz ... LetsEncrypt certificate
├── jitsi.tar.gz ......... Jitsi config
├── recordings.tar.gz .... Jitsi recordings
├── transcripts.tar.gz ... Jitsi transcripts
├── key.pem .............. AWS private key for server access
└── key.pem.pub .......... AWS public key
Use docker for development environment, with docker-compose.dev.yml
compose file:
$ docker-compose -f docker-compose.dev.yml up
Always remember to check Amazon EC2 pricing table and your billing dashboard.
AWS instance cost estimates are not guaranteed to be accurate or current.
This project is experimental and has no relation to Jitsi.org.