123 lines
3.9 KiB
Markdown
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.
|