Documentation

Install InfluxDB

The InfluxDB v2 time series platform is purpose-built to collect, store, process and visualize metrics and events.

Download and install InfluxDB v2

To install InfluxDB, do one of the following:

We recommend using Homebrew to install InfluxDB v2 on macOS.

InfluxDB and the influx CLI are separate packages

The InfluxDB server (influxd) and the influx CLI are packaged and versioned separately.

You’ll install the influx CLI in a later step.

Install using Homebrew

brew update
brew install influxdb

Homebrew also installs influxdb-cli as a dependency. For information about using the influx CLI, see the influx CLI reference documentation.

Manually download and install for macOS

  1. In your browser or your terminal, download the InfluxDB package.

    InfluxDB v2 (macOS)

    # Download using cURL
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.4_darwin_amd64.tar.gz \
     --output-dir ~/Downloads
    
  2. Unpackage the InfluxDB binary.

    Do one of the following:

    • In Finder, double-click the downloaded package file.

    • In your terminal (for example, Terminal or iTerm2), use tar to unpackage the file–for example, enter the following command to extract it into the current directory:

      # Unpackage contents to the current working directory
      tar zxvf ~/Downloads/influxdb2-2.7.4_darwin_amd64.tar.gz
      
  3. Optional: Place the influxd binary in your $PATH–for example, copy the binary to /usr/local/bin:

    # (Optional) Copy the influxd binary to your $PATH
    sudo cp influxdb2-2.7.4/influxd /usr/local/bin/
    

    With the influxd binary in your $PATH (/usr/local/bin), you can enter influxd in your terminal to start the server.

    If you choose not to move the influxd binary into your $PATH, enter the path to the binary to start the server–for example:

    ./influxdb2-2.7.4/influxd
    

Both InfluxDB 1.x and 2.x have associated influxd and influx binaries. If InfluxDB 1.x binaries are already in your $PATH, run the v2 binaries in place or rename them before putting them in your $PATH. If you rename the binaries, all references to influxd and influx in this documentation refer to your renamed binaries.

To install InfluxDB on Linux, do one of the following:

InfluxDB and the influx CLI are separate packages

The InfluxDB server (influxd) and the influx CLI are packaged and versioned separately.

You’ll install the influx CLI in a later step.

Install InfluxDB as a service with systemd

  1. Download and install the appropriate .deb or .rpm file using a URL from the InfluxData downloads page with the following commands:

    # Ubuntu/Debian AMD64
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2_2.7.4-1_amd64.deb
    sudo dpkg -i influxdb2_2.7.4-1_amd64.deb
    
    # Ubuntu/Debian ARM64
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2_2.7.4-1_arm64.deb
    sudo dpkg -i influxdb2_2.7.4-1_arm64.deb
    
    # Red Hat/CentOS/Fedora x86-64 (x64, AMD64)
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.4-1.x86_64.rpm
    sudo yum localinstall influxdb2-2.7.4-1.x86_64.rpm
    
    # Red Hat/CentOS/Fedora AArch64 (ARMv8-A)
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.4-1.aarch64.rpm
    sudo yum localinstall influxdb2-2.7.4-1.aarch64.rpm
    
  2. Start the InfluxDB service:

    sudo service influxdb start
    

    Installing the InfluxDB package creates a service file at /lib/systemd/system/influxdb.service to start InfluxDB as a background service on startup.

  3. To verify that the service is running correctly, restart your system and then enter the following command in your terminal:

    sudo service influxdb status
    

    If successful, the output is the following:

    ● influxdb.service - InfluxDB is an open-source, distributed, time series database
       Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enable>
       Active: active (running)
    

For information about where InfluxDB stores data on disk when running as a service, see File system layout.

Pass configuration options to the service

You can use systemd to customize InfluxDB configuration options and pass them to the InfluxDB service.

  1. Edit the /etc/default/influxdb2 service configuration file to assign configuration directives to influxd command line flags–for example, add one or more <ENV_VARIABLE_NAME>=<COMMAND_LINE_FLAG> lines like the following:
ARG1="--http-bind-address :8087"
ARG2="--storage-wal-fsync-delay=15m"

2. Edit the `/lib/systemd/system/influxdb.service` file to pass the variables to the `ExecStart` value:

<!--pytest.mark.skip-->

```sh
ExecStart=/usr/bin/influxd $ARG1 $ARG2

Manually download and install the influxd binary

  1. In your browser or your terminal, download the InfluxDB binary for your system architecture (AMD64 or ARM).

    InfluxDB v2 (amd64) InfluxDB v2 (arm)

    # Use curl to download the amd64 binary.
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.4_linux_amd64.tar.gz
    
    # Use curl to download the arm64 binary.
    curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.4_linux_arm64.tar.gz
    
  2. Extract the downloaded binary.

    Note: The following commands are examples. Adjust the filenames, paths, and utilities if necessary.

    # amd64
    tar xvzf ./influxdb2-2.7.4_linux_amd64.tar.gz
    
    # arm64
    tar xvzf ./influxdb2-2.7.4_linux_arm64.tar.gz
    
  3. Optional: Place the extracted influxd executable binary in your system $PATH.

    # amd64
    sudo cp ./influxdb2-2.7.4/usr/bin/influxd /usr/local/bin/
    
    # arm64
    sudo cp ./influxdb2-2.7.4/usr/bin/influxd /usr/local/bin/
    

    If you choose to not move the influxd binary into your $PATH, enter the path to the binary to start the server–for example:

    ./influxdb2-2.7.4/usr/bin/influxd
    

System requirements

Command line examples

Use Powershell or WSL to execute influx and influxd commands. The command line examples in this documentation use influx and influxd as if installed on the system PATH. If these binaries are not installed on your PATH, replace influx and influxd in the provided examples with ./influx and ./influxd respectively.

InfluxDB and the influx CLI are separate packages

The InfluxDB server (influxd) and the influx CLI are packaged and versioned separately.

You’ll install the influx CLI in a later step.

InfluxDB v2 (Windows)

Expand the downloaded archive into C:\Program Files\InfluxData\ and rename the files if desired.

Expand-Archive .\influxdb2-2.7.4-windows.zip -DestinationPath 'C:\Program Files\InfluxData\'
mv 'C:\Program Files\InfluxData\influxdb2-2.7.4' 'C:\Program Files\InfluxData\influxdb'

Install and setup InfluxDB in a container

The following guide uses Docker CLI commands to set Docker and InfluxDB options, but you can also use Dockerfiles and Docker Compose.

  1. Follow instructions to install Docker for your system.

  2. Create a Docker container from the influxdb Dockerhub image–for example, in your terminal, enter the docker run influxdb:2.7.4 command with command line flags for initial setup options and file system mounts.

    The following example uses the Docker --mount option to persist InfluxDB configuration and data to volumes. Persisting your data to a file system outside the container ensures that your data isn’t deleted if you delete the container.

    docker run \
     --name influxdb2 \
     --publish 8086:8086 \
     --mount type=volume,source=influxdb2-data,target=/var/lib/influxdb2 \
     --mount type=volume,source=influxdb2-config,target=/etc/influxdb2 \
     --env DOCKER_INFLUXDB_INIT_MODE=setup \
     --env DOCKER_INFLUXDB_INIT_USERNAME=<USERNAME> \
     --env DOCKER_INFLUXDB_INIT_PASSWORD=<PASSWORD> \
     --env DOCKER_INFLUXDB_INIT_ORG=<ORG_NAME> \
     --env DOCKER_INFLUXDB_INIT_BUCKET=<BUCKET_NAME> \
     influxdb:2.7.4
    

    The command passes the following arguments:

    • --publish 8086:8086: Exposes the container port 8086 for the InfluxDB UI and HTTP API on the host port 8086.
    • --mount type=volume,source=influxdb2-data,target=/var/lib/influxdb2: Creates a volume named influxdb2-data mapped to the InfluxDB Dockerhub data directory to persist data outside the container.
    • --mount type=volume,source=influxdb2-config,target=/etc/influxdb2: Creates a volume named influxdb2-config mapped to the InfluxDB Dockerhub configuration directory to make configurations available outside the container.
    • --env DOCKER_INFLUXDB_INIT_MODE=setup: Environment variable that invokes the automated setup for the initial organization, user, bucket, and token when creating the container.
    • --env DOCKER_INFLUXDB_INIT_<SETUP_OPTION>: Environment variables for initial setup options–replace the following with your own values:
      • <USERNAME>: The username for the initial user.
      • <PASSWORD>: The password for the initial user.
      • <ORG_NAME>: The name for the initial organization.
      • <BUCKET_NAME>: The name for the initial bucket.

    For more options, see the influxdb Dockerhub image documentation. If you don’t specify InfluxDB initial setup options, you can setup manually later using the UI or CLI in a running container.

If successful, the command starts InfluxDB initialized with the user, organization, bucket, and operator token, and logs to stdout. You can view the operator token in the /etc/influxdb2/influx-configs file and use it to authorize creating an All-Access token.

To run the InfluxDB container in detached mode, include the --detach flag in the docker run command.

Run InfluxDB CLI commands in a container

When you start a container using the influxdb Dockerhub image, it also installs the influx CLI in the container. With InfluxDB setup and running in the container, you can use the Docker CLI docker exec command to interact with the influx and influxd CLIs inside the container.

To use the influx CLI in the container, run docker exec -it <CONTAINER_NAME> <INFLUX_CLI_COMMAND>–for example:

# List CLI configurations
docker exec -it influxdb2 influx config ls
# View the server configuration
docker exec -it influxdb2 influx server-config
# Inspect server details
docker exec -it influxdb2 influxd inspect -d

Manage files in mounted volumes

To copy files, such as the InfluxDB server config.yml file, between your local file system and a volume, use the docker container cp command.

Install InfluxDB in a Kubernetes cluster

The instructions below use minikube or kind, but the steps should be similar in any Kubernetes cluster. InfluxData also makes Helm charts available.

  1. Install minikube or kind.

  2. Start a local cluster:

    # with minikube
    minikube start
    
    # with kind
    kind create cluster
    
  3. Apply the sample InfluxDB configuration by running:

    kubectl apply -f https://raw.githubusercontent.com/influxdata/docs-v2/master/static/downloads/influxdb-k8-minikube.yaml
    

    This creates an influxdb Namespace, Service, and StatefulSet. A PersistentVolumeClaim is also created to store data written to InfluxDB.

    Important: Always inspect YAML manifests before running kubectl apply -f <url>!

  4. Ensure the Pod is running:

    kubectl get pods -n influxdb
    
  5. Ensure the Service is available:

    kubectl describe service -n influxdb influxdb
    

    You should see an IP address after Endpoints in the command’s output.

  6. Forward port 8086 from inside the cluster to localhost:

    kubectl port-forward -n influxdb service/influxdb 8086:8086
    

Requirements

To run InfluxDB on Raspberry Pi, you need:

  • a Raspberry Pi 4+ or 400
  • a 64-bit operating system. We recommend installing a 64-bit version of Ubuntu of Ubuntu Desktop or Ubuntu Server compatible with 64-bit Raspberry Pi.

Install Linux binaries

Follow the Linux installation instructions to install InfluxDB on a Raspberry Pi.

Monitor your Raspberry Pi

Use the InfluxDB Raspberry Pi template to easily configure collecting and visualizing system metrics for the Raspberry Pi.

Monitor 32-bit Raspberry Pi systems

If you have a 32-bit Raspberry Pi, use Telegraf to collect and send data to:

  • InfluxDB OSS, running on a 64-bit system
  • InfluxDB Cloud with a Free Tier account
  • InfluxDB Cloud with a paid Usage-Based account with relaxed resource restrictions.

Configure and start InfluxDB

Optional: Customize InfluxDB server configuration

To customize your InfluxDB server configuration, specify configuration options in command line arguments, environment variables, or a configuration file.

InfluxDB telemetry reporting

By default, InfluxDB sends telemetry data back to InfluxData. The InfluxData telemetry page provides information about what data is collected and how it is used.

To opt-out of sending telemetry data back to InfluxData, include the --reporting-disabled flag when starting influxd–for example:

influxd --reporting-disabled
./influxd --reporting-disabled

Networking ports

By default, InfluxDB uses TCP port 8086 for client-server communication through the UI and the HTTP API. To specify a different port or address, use the http-bind-address option.

Start InfluxDB

If it isn’t already running, follow the instructions to start InfluxDB on your system:

To start InfluxDB, run the influxd daemon:

influxd

(macOS Catalina and newer) Authorize the influxd binary

macOS requires downloaded binaries to be signed by registered Apple developers. Currently, when you first attempt to run influxd, macOS will prevent it from running.

To manually authorize the influxd binary, follow the instructions for your macOS version to allow downloaded applications.

Run InfluxDB on macOS Ventura
  1. Follow the preceding instructions to attempt to start influxd.
  2. Open System Settings and click Privacy & Security.
  3. Under the Security heading, there is a message about “influxd” being blocked, click Allow Anyway.
  4. When prompted, enter your password to allow the setting.
  5. Close System Settings.
  6. Attempt to start influxd.
  7. A prompt appears with the message “macOS cannot verify the developer of “influxd”…”". Click Open.
Run InfluxDB on macOS Catalina
  1. Attempt to start influxd.
  2. Open System Preferences and click Security & Privacy.
  3. Under the General tab, there is a message about influxd being blocked. Click Open Anyway.

We are in the process of updating the build process to ensure released binaries are signed by InfluxData.

“too many open files” errors

After running influxd, you might see an error in the log output like the following:

too many open files

To resolve this error, follow the recommended steps to increase file and process limits for your operating system version then restart influxd.

If InfluxDB was installed as a systemd service, systemd manages the influxd daemon and no further action is required. If the binary was manually downloaded and added to the system $PATH, start the influxd daemon with the following command:

influxd

In Powershell, navigate into C:\Program Files\InfluxData\influxdb and start InfluxDB by running the influxd daemon:

cd -Path 'C:\Program Files\InfluxData\influxdb'
./influxd

Grant network access

When starting InfluxDB for the first time, Windows Defender appears with the following message:

Windows Defender Firewall has blocked some features of this app.

  1. Select Private networks, such as my home or work network.
  2. Click Allow access.

To use the Docker CLI to start an existing container, enter the following command:

docker start influxdb2

Replace influxdb2 with the name of your container.

To start a new container, follow instructions to install and set up InfluxDB in a container.

To start InfluxDB using Kubernetes, follow instructions to install InfluxDB in a Kubernetes cluster.

Download and install the influx CLI

The influx CLI lets you manage InfluxDB from your command line.

InfluxDB and the influx CLI are separate packages

The InfluxDB server (influxd) and the influx CLI are packaged and versioned separately. Some install methods (for example, the InfluxDB Dockerhub image) include both.

For more information about influx CLI for your system, see how to install and use the influx CLI.

Download and install the influx CLI

Set up InfluxDB

The initial setup process for an InfluxDB instance creates the following:

  • An organization with the name you provide.
  • A primary bucket with the name you provide.
  • An admin authorization with the following properties:
    • The username and password that you provide.
    • An API token (operator token).
    • Read-write permissions for all resources in the InfluxDB instance.

If you installed InfluxDB using Docker with initial setup options, then you’ve already completed the setup process.

To run an interactive setup that prompts you for the required information, use the InfluxDB user interface (UI) or the influx command line interface (CLI).

To automate the setup–for example, with a script that you write– use the influx command line interface (CLI) or the InfluxDB /api/v2 API.

  1. With InfluxDB running, visit http://localhost:8086.
  2. Click Get Started

Set up your initial user

  1. Enter a Username for your initial user.
  2. Enter a Password and Confirm Password for your user.
  3. Enter your initial Organization Name.
  4. Enter your initial Bucket Name.
  5. Click Continue.
  6. Copy the provided operator API token and store it for safe keeping.

We recommend using a password manager or a secret store to securely store sensitive tokens.

Your InfluxDB instance is now initialized.

Use the influx setup CLI command in interactive or non-interactive (headless) mode to initialize your InfluxDB instance.

Do one of the following:

Run influx setup without user interaction

To run the InfluxDB setup process with your automation scripts, pass flags with the required information to the influx setup command. Pass the -f, --force flag to bypass screen prompts.

The following example command shows how to set up InfluxDB in non-interactive mode with an initial admin user, operator token, and bucket:

influx setup \
  --username USERNAME \
  --password PASSWORD \
  --token TOKEN \
  --org ORGANIZATION_NAME \
  --bucket BUCKET_NAME \
  --force

The command outputs the following:

User        Organization         Bucket
USERNAME    ORGANIZATION_NAME    BUCKET_NAME

If you run influx setup without the -t, --token flag, InfluxDB automatically generates an operator API token and stores it in an influx CLI connection configuration.

Once setup completes, InfluxDB is initialized with an operator token, user, organization, and bucket.

InfluxDB creates a default configuration profile for you that provides your InfluxDB URL, organization, and API token to influx CLI commands. For more detail about configuration profiles, see influx config.

Once you have the default configuration profile, you’re ready to create All-Access tokens or get started collecting and writing data.

Run influx setup with user prompts

To run setup with prompts for the required information, enter the following command in your terminal:

influx setup

Complete the following steps as prompted by the CLI:

  1. Enter a primary username.
  2. Enter a password for your user.
  3. Confirm your password by entering it again.
  4. Enter a name for your primary organization.
  5. Enter a name for your primary bucket.
  6. Enter a retention period for your primary bucket—valid units are nanoseconds (ns), microseconds (us or µs), milliseconds (ms), seconds (s), minutes (m), hours (h), days (d), and weeks (w). Enter nothing for an infinite retention period.
  7. Confirm the details for your primary user, organization, and bucket.

Once setup completes, InfluxDB is initialized with the user, organization, bucket, and operator token.

InfluxDB creates a default configuration profile for you that provides your InfluxDB URL, organization, and API token to influx CLI commands. For more detail about configuration profiles, see influx config.

Once you have the default configuration profile, you’re ready to create All-Access tokens or get started collecting and writing data.

Optional: Configure and use the influx CLI

If you set up InfluxDB using the CLI, it creates a default configuration profile for you. A configuration profile stores your credentials to avoid having to pass your InfluxDB API token with each influx command.

To manually create a configuration profile use the influx config CLI command–for example, enter the following code in your terminal:

# Set up a configuration profile
influx config create \
  --config-name 
default
\
--host-url
http://localhost:8086
\
--org
ORG
\
--token
API_TOKEN
\
--active

Replace the following:

This configures a new profile named default and makes the profile activeinflux CLI commands run against the specified InfluxDB instance.

Once you have the default configuration profile, you’re ready to create All-Access tokens or get started collecting and writing data.

Optional: Create All-Access tokens

Because Operator tokens have full read and write access to all organizations in the database, we recommend creating an All-Access token for each organization and using those tokens to manage InfluxDB.


Was this page helpful?

Thank you for your feedback!


Introducing InfluxDB Clustered

A highly available InfluxDB 3.0 cluster on your own infrastructure.

InfluxDB Clustered is a highly available InfluxDB 3.0 cluster built for high write and query workloads on your own infrastructure.

InfluxDB Clustered is currently in limited availability and is only available to a limited group of InfluxData customers. If interested in being part of the limited access group, please contact the InfluxData Sales team.

Learn more
Contact InfluxData Sales

The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Flux is going into maintenance mode and will not be supported in InfluxDB 3.0. This was a decision based on the broad demand for SQL and the continued growth and adoption of InfluxQL. We are continuing to support Flux for users in 1.x and 2.x so you can continue using it with no changes to your code. If you are interested in transitioning to InfluxDB 3.0 and want to future-proof your code, we suggest using InfluxQL.

For information about the future of Flux, see the following: