How to self-host Swetrix
Swetrix supports self-hosting via Docker. You can run Swetrix on your own server or on a cloud provider of your choice. It's easy to set up and maintain, no need to be a Docker expert.
The easiest way to get started with Swetrix is by using our cloud service. We do all the dirty work for you: hosting, maintenance, backups, worldwide CDN, etc. Using Cloud you still own the data, you can export it or delete it at any time you want. By using Swetrix Cloud you support maintenance and development of the product, which eventually makes it better.
Prerequisites
To self-host Swetrix you need to have the following:
- A server with Docker installed
- Support for the x86_64 or arm64 CPU architecture on your server
Most of the cloud providers offer Docker pre-installed on their servers, but in case it's missing, you can install it manually by following the official Docker installation guide. We've tested self-hosting Swetrix using Hetzner Cloud (affiliate link), but any other cloud provider should work just fine.
Installation
1. Install the self-hosting repository
To self-host Swetrix, download the self-hosting repository from GitHub.
git clone https://github.com/swetrix/selfhosting
cd selfhosting
That repository contains a docker-compose.yml
file with all the necessary configuration to run Swetrix, you'll need to configure it later.
The repository also contains various configuration files to ease the setup process (for example, nginx
config files).
2. Configure the environment variables
Swetrix uses environment variables to configure itself. You can find the list of all available environment variables in the configuration section.
Most of the environment variables are already set by default, but you need to set the following variables:
EMAIL
- email address user will use to log in to the dashboardPASSWORD
- password user will use to log in to the dashboardJWT_ACCESS_TOKEN_SECRET
- secret for JWT access tokens, basically a random string of 60 characters.JWT_REFRESH_TOKEN_SECRET
- secret for JWT refresh tokens, also a random 60 chars string, but this one should be different from the access token secret.API_URL
- URL (or an IP address) of the machine you're hosting Swetrix on.
3. Run the container
Before running the following command, make sure that you have Docker installed on your server. You may refer to the Digital Ocean docker installation guide for more information.
Once you've set up the server, you're ready to start up the server:
docker compose up -d
After you run this command, the following containers will be started:
swetrix-api
- the main API server running on port 8080 by defaultswetrix-fe
- the frontend server running on port 80 by default- Redis server for caching
- Clickhouse server for analytics data and transactional stuff
After starting the container you can access the dashboard at http://{host}:80
.
Updating
To update Swetrix to the latest version you have to pull Swetrix images from the Docker Hub and restart the container.
First, pull the Swetrix API image:
docker pull swetrix/swetrix-api
Next, pull the Swetrix frontend image:
docker pull swetrix/swetrix-fe
And then restart the container:
docker compose restart
Reverse proxy
It's best to make sure your reverse proxy is set up to pass the request IP address as the x-real-ip
header, otherwise it may cause the problems related to API route rate limiting and analytics sessions. If the x-real-ip
header is undefined, Swetrix will use x-forwarded-for
as a backup.
If you are using Cloudflare as a proxy for your self-hosted Swetrix instance, you can set the CLOUDFLARE_PROXY_ENABLED
environment variable to true
. This will allow the Swetrix API to retrieve geolocation and IP address information from the headers provided by Cloudflare (cf-ipcountry
and cf-connecting-ip
).