* docs: replace beta with app.wiretrustee.com * docs: add Signal port to the list of the open ports * docs: minor corrections
4.2 KiB
Self-hosting
Wiretrustee is an open-source platform that can be self-hosted on your servers.
It relies on components developed by Wiretrustee Authors Management Service, Management UI Dashboard, Signal Service, a 3rd party open-source STUN/TURN service Coturn and a 3rd party service Auth0.
All the components can be self-hosted except for the Auth0 service. We chose Auth0 to "outsource" the user management part of the platform because we believe that implementing a proper user auth requires significant amount of time to make it right. We focused on connectivity instead.
If you would like to learn more about the architecture please refer to the Wiretrustee Architecture section.
Requirements
- Virtual machine offered by any cloud provider (e.g., AWS, DigitalOcean, Hetzner, Google Cloud, Azure ...).
- Any Linux OS.
- Docker Compose installed (see Install Docker Compose).
- Domain name pointing to the public IP address of your server.
- Open ports
443, 33071, 33073, 10000, 3478(Dashboard, Management HTTP API, Management gRpc API, Signal gRpc, Coturn STUN/TURN respectively) on your server. - Maybe a cup of coffee or tea :)
Step-by-step guide
For this tutorial we will be using domain test.wiretrustee.com which points to our Ubuntu 20.04 machine hosted at Hetzner.
-
Create Auth0 account at auth0.com.
-
Login to your server, clone Wiretrustee repository:
git clone https://github.com/wiretrustee/wiretrustee.git wiretrustee/and switch to the
wiretrustee/infrastructure_files/folder that contains docker compose file:cd wiretrustee/infrastructure_files/ -
Prepare configuration files.
To simplify the setup we have prepared a script to substitute required properties in the docker-compose.yml.tmpl and management.json.tmpl files.
The setup.env file contains the following properties that have to be filled:
# e.g. app.mydomain.com WIRETRUSTEE_DOMAIN="" # e.g. dev-24vkclam.us.auth0.com WIRETRUSTEE_AUTH0_DOMAIN="" # e.g. 61u3JMXRO0oOevc7gCkZLCwePQvT4lL0 WIRETRUSTEE_AUTH0_CLIENT_ID="" # e.g. https://app.mydomain.com/ WIRETRUSTEE_AUTH0_AUDIENCE="" # e.g. hello@mydomain.com WIRETRUSTEE_LETSENCRYPT_EMAIL=""Please follow the steps to get the values.
-
Configure
WIRETRUSTEE_AUTH0_DOMAINWIRETRUSTEE_AUTH0_CLIENT_IDWIRETRUSTEE_AUTH0_AUDIENCEproperties.-
To obtain these, please use Auth0 React SDK Guide up until "Install the Auth0 React SDK".
❕ Use
https://YOUR DOMAINasAllowed Callback URLs,Allowed Logout URLs,Allowed Web OriginsandAllowed Origins (CORS) -
set the variables in the
setup.env
-
-
Configure
WIRETRUSTEE_AUTH0_AUDIENCEproperty.- Check Auth0 Golang API Guide to obtain AuthAudience.
- set the property in the
setup.envfile.
-
Configure
WIRETRUSTEE_LETSENCRYPT_EMAILproperty.This can be any email address. Let's Encrypt will create an account while generating a new certificate.
-
Make sure all the properties set in the
setup.envfile and run:./configure.shThis will export all the properties as environment variables and generate
docker-compose.ymlandmanagement.jsonfiles substituting required variables. -
Run docker compose:
docker-compose up -d -
Optionally check the logs by running:
docker-compose logs signal docker-compose logs management docker-compose logs coturn docker-compose logs dashboard