Skip to content

MISP/MISP-Fleet-Commander

Repository files navigation

MISP Fleet Commander

SkillAegis Logo

Manage your MISP communities with ease.

🛰️ What is MISP Fleet Commander?

MISP Fleet Commander is a flexible tool designed to manage fleets of MISP servers. Whether you're administering a couple of instances or an entire constellation, this application gives you the visibility and control you need — all from a single interface.

With MISP Fleet Commander, you can diagnose, configure, update, and monitor MISP servers at scale. It’s built for those who need to keep multiple MISP servers in sync and in check.

✨ Features

  • Create and organize fleets of MISP servers.
  • Monitor server health and collect real-time metrics.
  • Perform batch API operations across servers.
  • Drag-and-drop plugin support, integrated directly into the UI.
  • Visualize sync links and topologies with the Strategic View.
  • Quickly enroll new servers via a browser bookmarklet or extension.
  • Built-in integration with Grafana and InfluxDB for metrics storage and visualization
  • Designed for flexibility and ease of use.

💡 Why This Project?

Back in 2021, I was managing multiple MISP servers and found myself constantly repeating tasks — monitoring health, tweaking configs, running the same API calls across instances. I also wanted to explore some modern web technologies I wasn’t familiar with. So, I started building MISP Fleet Commander in my spare time — mostly just for fun.

Now, in 2025 — four years later — it’s finally stable enough to share with the world.

This is a project built out of real-world need, shaped by curiosity and the desire to experiment and have fun. If you’ve ever had to wrangle a fleet of MISP servers, this tool is for you.

🚀 Getting Started

📦 Requirements

  • python 3.11
  • A modern browser (for using the UI and extensions)

🛠️ Installation

Clone the repository:

git clone https://github.com/mokaddem/MISP-Fleet-Commander.git
cd MISP-Fleet-Commander

Install dependencies:

pushd backend
bash install.sh
popd

▶️ Running the Application

Start the server:

bash start.sh

This will start a local server running on all addresses (0.0.0.0) (typically at http://localhost:5001) where you can interact with the UI.

Or you can use the provided docker image

docker compose up

A default admin user is already provisioned with the following credential:

[email protected]:Password1234

🔄 Updating

To update the application:

bash update.sh

Development

▶️ Running the Application (Development Mode)

Start the development server:

bash start_dev.sh

This will start a local development server (typically at http://localhost:5001/) and a local web development server (typically at http://localhost:8080/).

🏗️ Building for Production

To create an optimized production build:

bash build_web.sh

This will build the web application and make the file available for the backend.

🌍 Browser Extension / Bookmarklet

Enrolling new MISP servers can be a pain: You have to generate an API key, and manually enter all the information in MFC. However, there are quicker ways to do it.

  • [recommended] The MISP Fleet Commander Browser Extension (chrome only) allows you to enroll the MISP server you're currently browsing in one click.
  • A browser bookmarklet (drag it to your bookmarks bar from the Fleet Commander UI).
    • You'll have to temporarily disable Content Security Policy headers for the bookmark to execute.

Instructions for both are available on the Home page of the app.

📷 Screenshots

Home page Home page The fleet index showing all servers from the selected fleet Fleet index page
Server view Server view page Plugin page showing all available plugins Plugin page
Batch API modal allowing to run API call on multiple server at once Batch API modal Strategic View page displaying how inter-connected are servers in the selected fleet Strategic view page
Connection page listing all known server synchronisation and their status Connection page Grafana page displaying all the collected metrics Grafana page

Setting up metric collection with InfluxDB and Grafana

  1. Install the needed dependencies.
cd backend
. ./venv/bin/activate
pip3 install -U -r requirements_monitoring.txt
  1. If you already have Grafana and InfluxDB running, go to step 4.
  2. Start the InfluxDB and Grafana containers.
cd backend/application/monitoring/docker
docker compose up
  1. Duplicate and update the config.py configuration file.
cd backend/application/monitoring
cp config.py.sample config.py
vim config.py  # Update the token, org and URL based on what has been created on InfluxDB
  1. If needed, restart the MISP Fleet Commander server and check if monitoring is supported.
    • Login in MISP Fleet Commander and click on the setting button in the top right corner.
    • If everything went right, you should be able to enable the setting monitoring_enabled under the Scheduler tab.
  2. Export the env variable before starting the server. FIXME: Provide sane values
GRAFANA_BASE_URL=http://localhost:3000
GRAFANA_DASHBOARD_DATA_RENDER=render/d-solo/ce6olif96756od
GRAFANA_DASHBOARD=d/ce6olif96756od/circl-monitoring-misp
GRAFANA_APIKEY=glsa_k94PVSfhraGiK5roLyoniHu0xFyvByne_b1604732
bash start.sh

📬 Feedback & Contributions

Contributions, bug reports, and feature suggestions are more than welcome!

  • Fork the project
  • Create a new branch (git checkout -b feature/your-feature)
  • Commit your changes
  • Open a pull request
  • Or simply open an issue

🧩 How to Add a New Plugin

MISP Fleet Commander supports a plugin system to extend its UI and functionality. Adding a new plugin is quick and doesn't require a full rebuild of the application.

🔧 Steps to Create a Plugin

  1. Go in backend/application/plugins.
  2. Copy/Paste a plugin and modify it to your needs 😉.

🤝 Acknowledgments

Special thanks to the MISP Project and its community for building such a foundational tool for threat intelligence sharing.

©️ Copyright

© 2021–2025 Sami Mokaddem.
© Logo designed by Ysaline Rochez — thank you for the beautiful work!