Install

    Install Collectd-web in minutes

    Three supported installation paths cover almost every environment: a Debian package for traditional servers, a Docker image for container hosts, and a source-based runner for development or air-gapped deployments. Each path converges on the same configuration file so you can switch later without rewriting anything.

    Before you start

    Collectd-web is a front-end for Collectd. It assumes Collectd is already installed and writing RRD files to disk. If that's not the case yet, install Collectd from your distribution's package manager first (apt install collectd on Debian/Ubuntu, dnf install collectd on Fedora) and verify that /var/lib/collectd or your configured datadir is filling up with per-host subdirectories. Collectd-web reads from that directory; it does not collect data itself.

    You will also need Python 3.6 or newer (the source runner uses it directly, and the Debian package depends on it). The Docker image bundles its own Python, so you don't need it on the host.

    Option 1 — Debian / Ubuntu (.deb package)

    The recommended path for traditional Linux servers. The package wires up a systemd service, sets sensible defaults, and pulls in the right Python dependencies. Releases are published on GitHub.

    bash
    # Download the latest .deb
    wget $(curl -s https://api.github.com/repos/httpdss/collectd-web/releases/latest \
      | grep "browser_download_url.*\.deb" | cut -d '"' -f 4)
    
    # Install
    sudo dpkg -i collectd-web*.deb
    sudo apt-get install -f   # resolve any dependencies
    
    # Enable and start the service
    sudo systemctl enable --now collectd-web
    
    # Confirm it's listening
    sudo systemctl status collectd-web

    By default the service binds to 0.0.0.0:8888. For anything beyond a trusted local network, put it behind a reverse proxy with TLS and basic auth — there's a copy-pasteable nginx config in the docs.

    Option 2 — Docker

    Useful when you already run a container stack or want to keep the host's package set minimal. Mount your Collectd configuration and data directories read-only and expose the web port.

    bash
    docker run -d --name collectd-web \
      --restart unless-stopped \
      -p 8888:8888 \
      -v /etc/collectd:/etc/collectd:ro \
      -v /var/lib/collectd:/var/lib/collectd:ro \
      httpdss/collectd-web:latest
    
    # Tail the logs to confirm it started
    docker logs -f collectd-web

    The Docker image expects the same directory layout as the .deb package, so configuration files written for one path work unchanged in the other. If you're orchestrating with Compose or Kubernetes, the same volume mounts and port mappings apply.

    Option 3 — From source

    Best for development, air-gapped environments, or anyone who wants to read the code before running it. Clone, install Python dependencies, and launch the standalone server.

    bash
    git clone https://github.com/httpdss/collectd-web.git
    cd collectd-web
    
    # (optional) create a virtualenv
    python3 -m venv .venv && source .venv/bin/activate
    
    # Run the standalone Python server (3.6+)
    python3 ./runserver.py
    
    # Then open http://localhost:8888

    For a long-running source install, write a small systemd unit that invokes runserver.py from inside the virtualenv. The Debian package ships a known-good unit file you can use as a reference.

    Configuration

    All three install paths read the same configuration file. The most important setting is datadir, which tells Collectd-web where to look for per-host RRD files.

    yaml
    # /etc/collectd/collection.conf
    datadir: "/var/lib/collectd/"
    
    # Expected layout:
    #   /var/lib/collectd/<hostname>/<plugin>/<metric>.rrd
    #
    # New host directories appear in the UI automatically —
    # no restart required.

    Verifying the install

    Open http://<host>:8888 in a browser. You should see a sidebar with one entry per host directory under your datadir. Click any host to expand its plugins and render a graph. If the sidebar is empty, the most likely causes are an unset or wrong datadir, a Collectd instance that hasn't written any RRD files yet, or a permissions issue preventing the Collectd-web process from reading the data directory.

    Next steps

    Once the dashboard is up, the docs cover production hardening: putting Collectd-web behind nginx with TLS, centralizing metrics from multiple hosts over Collectd's Network plugin, and tuning RRD retention. The blog has shorter, scenario-driven walkthroughs for common environments.