Installation
On this page
Twigex runs on your own infrastructure. Pick the install method that fits your setup. Each one gets you to a running Twigex in a few commands, and links to its full guide for everything else.
Editions
Every install starts as the free Community Edition, open source under AGPLv3. There is nothing separate to download for the paid plan: add a self-hosted license to the same install to unlock role-based access control, user groups, custom roles, unlimited workspaces, AD/LDAP user sync, and single sign-on. See Pricing for plans, including Enterprise.
Requirements
| Service | Needed |
|---|---|
| MySQL 8 or MariaDB | Required |
| Redis | Required, used for sessions |
| LiveKit | Optional, for video calls and meetings |
| EuroOffice or Collabora | Optional, for document editing |
| Cube | Optional, for Analytics |
Twigex won't start without a reachable database and Redis. Optional services are only contacted when you use their feature, so you can add them later.
Choose how to install
| Method | Best for |
|---|---|
| Helm chart | Production on Kubernetes. Deploys Twigex together with MariaDB and Redis. |
| Single binary | One Linux server, no containers. You provide the database and Redis. |
| Docker Compose | Trying Twigex, or one server with Docker. Everything included in one command. |
Option 1: Helm on Kubernetes
Requires Helm 3.8+, a Kubernetes 1.24+ cluster with a default StorageClass, and kubectl access to it.
1. Generate an encryption key and store it somewhere safe. Upgrades need the exact same value, and changing it later makes encrypted data unreadable.
openssl rand -hex 16
2. Install the chart. Replace the example domain and every password:
helm install twigex oci://ghcr.io/twigex/helm-charts/twigex \
--namespace twigex --create-namespace \
--set domain=twigex.example.com \
--set ingress.enabled=true \
--set twigex.admin.password=your_admin_password \
--set twigex.server.encryptKey=your_encryption_key \
--set mariadb.password=your_mariadb_password \
--set mariadb.rootPassword=your_mariadb_root_password \
--set redis.auth.password=your_redis_password
Pick the MariaDB passwords carefully. With the bundled MariaDB they are set on first install and can't be changed afterwards without resetting the database.
3. Sign in at your domain as admin, with the admin password you set.
Full guide: Helm chart installation guide covers an external database, TLS with cert-manager, LiveKit, EuroOffice or Collabora, upgrading, and uninstalling. Every setting is listed in the chart README.
Option 2: Single binary
You need a Linux server with MySQL 8 or MariaDB and Redis already running, and a reverse proxy such as nginx or Caddy for HTTPS.
1. Download the latest twigex-…-linux-amd64.tar.gz from GitHub Releases and unpack it.
2. Configure Twigex in /etc/twigex/env. Protect the file with chmod 600 and keep it out of version control:
TWIGEX_DB_HOST=localhost
TWIGEX_DB_PORT=3306
TWIGEX_DB_NAME=twigex
TWIGEX_DB_USER=twigex
TWIGEX_DB_PASSWORD=
TWIGEX_ADMIN_NAME=Jane
TWIGEX_ADMIN_LASTNAME=Doe
TWIGEX_ADMIN_USERNAME=jane
TWIGEX_ADMIN_EMAIL=jane@example.com
TWIGEX_ADMIN_PASSWORD=
TWIGEX_STORAGE_TYPE=local
# The public address users reach (your reverse proxy, not the app itself).
TWIGEX_SERVER_SITE_URL=https://twigex.example.com
# Encrypts stored credentials. Generate once with `openssl rand -hex 16` and keep it.
TWIGEX_SERVER_ENCRYPT_KEY=
# Your reverse proxy's address, so client IPs are passed through correctly.
TWIGEX_TRUSTED_PROXIES=127.0.0.1
TWIGEX_TRUSTED_PROXY_HEADERS=X-Forwarded-For
Redis defaults to localhost:6379. Set TWIGEX_REDIS_ADDRESS if it runs elsewhere.
3. Start the server:
./twigex start --port 3000
On first start, Twigex sets up its database, creates the storage, and creates the admin account from the TWIGEX_ADMIN_* values. Restarting is safe, and you can remove the admin values afterwards.
4. Put your reverse proxy in front to handle HTTPS. Proxy to 127.0.0.1:3000 and pass websocket connections through (the Upgrade and Connection headers), which chat, calls, and live updates need.
Full guide: the Twigex README covers S3 storage, serving HTTPS without a proxy, and building from source.
Option 3: Docker Compose
Requires a Linux host with Docker Engine 20.10+, the Docker Compose v2 plugin (docker compose version must work), and about 4 GB of free RAM. The stack includes everything: MariaDB, Redis, document editing, video calls, and Analytics.
1. Get the files:
git clone https://github.com/twigex/twigex-docker-compose.git
cd twigex-docker-compose
2. Generate your passwords. This creates the .env file with fresh random values and prints the admin password:
bash generate-secrets.sh
3. Start the stack:
docker compose up -d
4. Sign in at http://localhost:3000 as admin, with the password the script printed. The first start takes about a minute; docker compose logs -f twigex shows the progress.
To edit documents, or to open Twigex from other computers, set TWIGEX_SERVER_SITE_URL in .env to the server's IP address or domain, then run docker compose up -d again. Before going on the internet, put a reverse proxy with HTTPS in front, and don't expose port 3000 directly.
Full guide: the Docker Compose README covers the network setup, HTTPS, backups, storage, and upgrading.
Add your license
When you buy a self-hosted license, you receive it as a license file. Sign in as an administrator and add it in Settings → License. It works the same for every install method.
Don't have a license yet? Contact sales.
Next steps
Your Twigex is running. Continue with Set up Twigex to secure the admin account, connect email, and add your team. Stuck on something? Ask on r/twigex.

