# Matrix server installation ## Prerequisites - A Linux VM with Ubuntu Server (20.04 minimum, 22.04 recommended). - A Domain name (can be root or subdomain) but it is a must the A record for the domain to be pointed to the server's public IP. - e.g. `example.com A 1.1.1.1`: Being `example.com` the domain record and `1.1.1.1` the public IP of the server. - Ports `80` and `443` MUST be accessible from the internet to the server. - This installation does not yet support a server running behind a proxy. ## Components The following components are included in the installer: 1. Docker 2. Matrix backend (synapse) 3. Matrix frontend (element) 4. Matrix DB (PostgreSQL) 5. Matrix Admin Panel: `https:///admin` 6. Coturn server (required for voice chat/videocalls) 7. Nginx server (required for reverse proxying) 8. SSL certificate via LetsEncrypt with automatic renewal ## Installation **Note**: Please remember that it's a prerequisite the Domain A record needs to be pointed to the server's public IP and resolving. 1. Download the `matrix` directory, recommended: `/tmp` 2. Enter the directory and grant exec permissions to run the installer and execute it, you will need the domain name, e.g.: ```shell cd /tmp/matrix chmod +x install.sh ./install.sh ``` 4. Wait for the installer to finish. Enjoy the matrix server :) ## How to use the server Simply open your favourite web browser and go to **https://**, which will show the Element Web UI. Registrations are disabled by default. ## Creating users The first user will need to be created via command line interface, this is unique and it will be the admin user. To do this simply: 1. SSH into the host 2. Go to the directory `/opt/matrix` 3. Create the user running the following command: ```shell % cd /opt/matrix % docker compose exec synapse register_new_matrix_user --user --password --admin --config /data/homeserver.yaml ``` From there after, you can just use the admin panel to create users, the admin panel is located in `https:///admin` (it requires admin user login) ## Cleanup To remove everything from the server, just run the `killall.sh` script: ```shell % cd /opt/matrix % ./killall.sh WARNING: Will remove everything now. Please confirm: (Y/N) ``` Select the option `Y` (yes) and it'll be done