selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Apache IoTDB logo

Self-host Apache IoTDB

v2.0.11

Industrial IoT time-series database with edge-cloud sync

ReleaseOpen SourceApache-2.0
Updatedlast week
LanguageJava
Setup difficultyModerate
Stars
6 425
Ports
10710 (ConfigNode internal port), 10720 (ConfigNode consensus port), 10730 (DataNode internal port), 10740 (DataNode MPP data exchange port), 10750 (DataNode schema region consensus port), 10760 (DataNode data region consensus port)
Requires
Java Runtime
Docker
apache/iotdb
Install with Docker Compose

What is Apache IoTDB?

Apache IoTDB is a time-series database management system designed for industrial IoT scenarios. It provides high-throughput data ingestion and low-latency queries for millions of devices, with a lightweight architecture supporting edge-cloud collaboration. Key capabilities include a flexible deployment model (standalone, cluster, or edge), a high compression ratio reducing storage costs, SQL-like query language with JDBC support, time alignment and aggregation functions across devices, and native integration with the Hadoop, Spark, and Flink ecosystems plus Grafana visualization. It runs on Linux, Windows, and macOS with Java 17+, and can be deployed via binary packages, Docker, or built from source. The project is a top-level Apache project with active development and a growing community.

Should you self-host Apache IoTDB?

Apache IoTDB scores 68/100 on selfhost.directory (how scoring works) and ranks #16 of 38 in Databases. It has 6 425 GitHub stars.

It shipped 7 stable releases in the past year. The latest, v2.0.11, came out on 13 September 2026. New versions land roughly every 5 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Java.

Its closest alternative on selfhost.directory is Redis (86/100, 77 142 stars). It scores higher overall, so compare the two before you pick. See Apache IoTDB vs Redis side by side.

Features

  • Built-in Authentication
  • Cluster mode with ConfigNode/DataNode
  • CSV import/export tools
  • Edge-cloud synchronization
  • Flexible Deployment Modes
  • Grafana visualization
  • Hadoop/Spark/Flink integration
  • High compression ratio
  • High-throughput read/write
  • JDBC standard API
  • Multi-Platform Support
  • SQL-like query language
  • Time alignment and aggregation
  • Time-series data storage

Apache IoTDB README

How to install Apache IoTDB

Install Apache IoTDB with Docker Compose

Docker Compose, external network 'iotdb'

version: "3" services: iotdb-service: image: apache/iotdb:latest hostname: iotdb-service container_name: iotdb-service ports: - "6667:6667" environment: - cn_internal_address=iotdb-service - cn_internal_port=10710 - cn_consensus_port=10720 - cn_seed_config_node=iotdb-service:10710 - dn_rpc_address=iotdb-service - dn_internal_address=iotdb-service - dn_rpc_port=6667 - dn_mpp_data_exchange_port=10740 - dn_schema_region_consensus_port=10750 - dn_data_region_consensus_port=10760 - dn_seed_config_node=iotdb-service:10710 - IOTDB_JMX_OPTS=-Xms4G -Xmx4G -XX:MaxDirectMemorySize=1G - CONFIGNODE_JMX_OPTS=-Xms1G -Xmx1G -XX:MaxDirectMemorySize=256M volumes: - ./data:/iotdb/data - ./logs:/iotdb/logs networks: iotdb: ipv4_address: 172.18.0.6 networks: iotdb: external: true

Standalone deployment with all components in one container

How to configure Apache IoTDB

  • datanode-env.batEnvironment configuration for DataNode (Windows)

    Environment configuration for DataNode (Windows)

  • datanode-env.shEnvironment configuration for DataNode

    Environment configuration for DataNode

  • iotdb-system.propertiesSystem configuration module

    System configuration module

  • logback.xmlLog configuration module

    Log configuration module

Apache IoTDB releases & version history

FAQ

How to resolve lsof issues in IoTDB deployment?

Install the correct lsof RPM package for your OS version, verify with 'lsof -v', create a symlink to /bin/lsof if needed, and ensure the version is compatible.

How to deal with estimated out of memory errors?

Increase heap memory above 4.2GB, adjust datanode_memory_proportion and chunk_timeseriesmeta_free_memory_proportion parameters, reduce exported time series, add slimit to queries, or use 'align by device'.

How can I change IoTDB's CLI time display format?

Add the -disableISO8601 parameter to the start-cli command to display timestamps instead of ISO8601 format.

How does IoTDB handle duplicate points?

A data point is uniquely identified by its full time series path and timestamp. Submitting a new point with the same path and timestamp updates the existing value instead of inserting a duplicate.

Can I use Hadoop and Spark to read TsFile in IoTDB?

Yes, IoTDB has connectors for Hadoop, Spark, and Grafana visualization.

How do I know how many time series are stored in IoTDB?

Use 'show timeseries root' or 'count timeseries root' in the CLI, or grep the schema mlog.txt file on Linux.

Where can I find IoTDB data files?

By default, data files (including tsfile, metadata, and WAL files) are stored under IOTDB_HOME/data/datanode.

Where can I find IoTDB logs?

By default, logs are stored under IOTDB_HOME/logs. You can change the log level and storage path by configuring logback.xml under IOTDB_HOME/conf.

How can I identify my version of IoTDB?

Launch the CLI with start-cli.sh, check pom.xml, use JDBC API getDatabaseProductVersion(), or run 'show version' in the CLI.

More in Data Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…