123 lines
3.9 KiB
Markdown

# InfluxDB
*These instructions are a work in progress, and some parts may be broken.*
This guide assumes you are running these commands as root. On a hardened system, this would be a bad thing, but it's fine for testing.
Start by getting a machine to work on, such as a Vultr VPS.
Update the machine, and install the `docker.io` package on it:
```sh
sudo apt update
sudo apt upgrade -y
sudo apt install -y docker.io
```
Create an Influx config file skeleton:
```sh
docker run --rm influxdb:2.7 influxd print-config > influxdb2-config.yml
```
You can read through the config and modify anything you like. Then create a data directory that will be mounted inside the container:
```sh
mkdir -p /root/influxdb2
```
Create the InfluxDB container:
```sh
docker run \
--name influxdb2 \
-d \
--restart always \
-p 8086:8086 \
-v /root/influxdb2:/var/lib/influxdb2 \
-v /root/influxdb2-config.yml:/etc/influxdb2/config.yml \
influxdb:2.7
```
Check that the container is running:
```sh
docker ps
```
Once the container is running, you need to access it. You can either run insecurely and access it directly on port 8086, or you can set up a reverse proxy to serve as a secure "middleman" between the internet and the container.
## Direct Access
To access InfluxDB directly, ensure you allow the port in your system's firewall, if applicable. Ubuntu on Vultr comes with `ufw` enabled by default. You can allow the port with:
```sh
ufw allow 8086
```
Then you can view InfluxDB by navigating to <http://your-vps-ip-address:8086>.
## Reverse Proxy
You will need a domain name so that you can add a DNS `A` record for your VPS IP address. For instance, running `host influxdb.metrics.roeber.dev` shows the VPS IP address of 155.138.217.70.
You will also need to choose a reverse proxy like Nginx or Caddy. Caddy may be simpler to learn, and it will automatically handle TLS certificate generation for you if it listens on a public IP.
To install Caddy on Ubuntu: <https://caddyserver.com/docs/install#debian-ubuntu-raspbian>
Ensure the firewall (if applicable) allows web traffic:
```sh
ufw allow 80
ufw allow 443
```
Once installed, you can modify `/etc/caddy/Caddyfile` to include the following:
```conf
influx.example.com {
reverse_proxy :8086
}
```
Reload Caddy with `systemctl reload caddy`, wait a few moments for TLS certificate generation, and then navigate to <https://influx.example.com>.
## InfluxDB Setup
Once you can access InfluxDB in your browser, you can perform setup. Copy the operator API token that you get during the setup process (you *cannot* get it back if you lose it, so keep it safe.)
Open up a shell in the container and set the op token:
```bash
docker exec -it influxdb2 bash
export INFLUX_TOKEN=token_you_got_from_the_web_interface
```
Create an organization named e.g. `augusta` and bucket named `mybucket`:
```bash
influx org create --name augusta
influx bucket create --org augusta --name mybucket
```
Create a user and give all rights in the organization:
```bash
influx user create --org augusta --name newguy --password somep@ssword
influx auth create --org augusta --user newguy --all-access --description "All access on Augusta organization for user newguy" # https://stackoverflow.com/a/72817942
```
## ChirpStack Integration
In InfluxDB, create an API token that has read/write access to the bucket you want ChirpStack to work with. Keep it handy.
In ChirpStack, go to Applications -> your application name -> Integrations. Click the `+` button below InfluxDB.
Select `InfluxDB v2` for the version.
For the endpoint, enter the URL you use to get to InfluxDB, e.g. <http://some_ip:8086> or <https://influx.example.com>.
Enter the Influx organization, bucket, and the token you just generated, then submit.
If data is being sent from a ChirpStack gateway to Chirpstack for the application you just added the Influx integration to, that same data should start showing up in InfluxDB.