Thomas VincentandTheWitness 76b2b693a0 fix: resolve shellcheck and actionlint issues (#6876)
* fix: shellcheck fixes, codespell config, and actionlint config

- Add .github/actionlint.yaml with no-shellcheck to disable
  false positives in run: blocks
- Update .codespell.cfg to skip third-party assets, themes,
  mock data; add intentional words to ignore list
- Fix shellcheck issues in all shell scripts: quoting, egrep
  to grep -E, glob iteration, bare redirects, SIGKILL trap

Does not touch workflow YAML files (handled in #6874).

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* hardening: move to argument array pattern for shell execution (#6854)

* docs: update exec_background docblock for string|array param types

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* docs: add PHPDoc to __rrd_execute for PHPStan

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* fix: resolve php-cs-fixer formatting issues

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* revert: remove oauth2.php fix (moved to standalone PR #6886)

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* chore: remove files that belong in other PRs

- Revert lib/poller.php and lib/rrd.php arg-array changes (belong in PR #6855)
- Remove ArgArrayHardeningTest.php (belongs in PR #6855)
- Revert vendor/composer updates (should be a separate PR)

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* chore: remove composer.lock from tracking

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
Co-authored-by: TheWitness <thewitness@cacti.net>
2026-03-24 08:10:13 -04:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2024-11-29 19:24:16 -05:00
2026-01-28 16:11:10 -05:00
2026-03-07 12:57:00 -05:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2025-03-23 12:51:35 -04:00
2026-01-28 16:11:10 -05:00
2026-01-28 16:11:10 -05:00
2026-03-07 12:57:00 -05:00
2026-01-28 16:11:10 -05:00
2026-02-03 12:02:39 -05:00
2026-01-28 16:11:10 -05:00

Cacti

Cacti Commit Audit Project Status Translation Status Average issue resolution time Open issues


Overview

Cacti is an open-source network monitoring and graphing platform built on RRDtool.

It provides a scalable framework to collect, store, and visualize time-series data from network devices, servers, and applications.

Core capabilities include:

  • Automated device discovery
  • Local and remote data collection
  • Graph, data source, and RRA templating
  • SNMP polling (v1/v2/v3) and IPv6 support
  • Role-based access control (RBAC)
  • Plugin framework
  • Dynamic graph viewing and export options

Release Branches

Cacti maintains two primary branches:

Branch Purpose
1.2.x Stable long-lived release series
develop Active development toward Cacti 1.3.x

For the latest published version, see GitHub Releases.


System Requirements

Minimum supported dependencies by branch:

Dependency Cacti 1.2.x Cacti develop (1.3.x)
MariaDB 5.6+ 10.2.x+
MySQL 5.6+ 8.0+
PHP 8.1+ 8.1+
RRDtool 1.4+ 1.8+
Net-SNMP 5.5+ 5.8+

Notes:

  • RRDtool 1.9+ is recommended for newer dynamic graph features in 1.3.x.
  • Net-SNMP 5.9+ is recommended for broader SNMPv3 protocol coverage.
  • A web server with PHP support is required.
  • PHP should be available as CLI or CGI for scheduled polling and maintenance scripts.
  • php-snmp is optional; validate behavior carefully if you depend on IPv6 and SNMPv3.

Operating system guidance:

  • 1.2.x: RHEL/Rocky/Alma 8+ (or equivalent) is a common baseline.
  • 1.3.x: RHEL/Rocky/Alma 9+ or CentOS Stream 9+ is preferred for modern PHP packaging.
  • Debian and Ubuntu are also well supported.

Installation (Source Checkout)

Clone the repository:

git clone https://github.com/Cacti/cacti.git
cd cacti

Dependency management:

  • For a source checkout on both 1.2.x and develop, install dependencies with Composer.
  • Use composer update only when intentionally refreshing dependency versions.

Install dependencies:

composer install

Windows users may need:

composer install --ignore-platform-req=ext-pcntl --ignore-platform-req=ext-posix

Then configure your database and web server, and complete setup using the official docs:

https://github.com/Cacti/documentation


Database Upgrades and Schema Checks

When running from source (especially develop), schema updates may be required after pulling changes.

Upgrade the database schema:

sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`

If needed, force a re-upgrade from an earlier version:

php -q cli/upgrade_database.php --forcever=<older_version>

Audit schema consistency:

php cli/audit_database.php --report

Data Collection and Polling

Cacti collects data through data sources, which can use:

  • SNMP
  • Scripts
  • Command output
  • Databases
  • Custom input methods

Polling engines:

Poller Description
PHP Poller Built-in polling engine
Spine High-performance C-based poller

Spine supports SNMPv1/v2 and SNMPv3 with IPv6, with some advanced protocol support depending on how Net-SNMP is compiled on your platform.


Features

  • Device discovery and automation workflows
  • Reusable templates for graphs and data sources
  • Distributed remote data collectors
  • Plugin architecture for extensibility
  • Dynamic graph interactions (time navigation, realtime view, CSV export)
  • Fine-grained user and group permissions using RBAC
  • Broad RRDtool graphing support (including VDEFs and stacked lines)

Documentation

Official documentation is maintained in a separate repository:

https://github.com/Cacti/documentation


Contributing

Contributions are welcome.

  1. Fork this repository.
  2. Create a branch for your change.
  3. Submit a pull request.

You can also help improve docs in:

https://github.com/Cacti/documentation


Community

Community support is available on the Cacti forums:

https://forums.cacti.net


License

Cacti is licensed under the GNU General Public License v2.0.

See LICENSE for details.

Copyright (c) 2004-2026 The Cacti Group, Inc.

Languages
PHP 52%
JavaScript 34.7%
CSS 8.9%
SCSS 1.3%
Less 1.2%
Other 1.8%