Upgrade Path: v2.2.x → v2.5.x+
Deployment Method: Manual (DEB)
Platform: Ubuntu/Debian 22.x+
Overview
This guide walks you through upgrading an existing Diskover v2.2.x deployment to version 2.5.x or later on Ubuntu/Debian-based Linux systems using DEB packages.
By the end of this guide, your environment will be running the latest Diskover platform — including Diskover Web, Diskover Admin, Diskoverd (task workers), Celery, and all licensed scanners, plugins, and file actions — with your existing configuration and data preserved.
What this guide covers:
Pre-upgrade checks and backups
Upgrading Elasticsearch, PHP, Diskover Web, Diskover Admin, Diskoverd, Celery, and RabbitMQ via DEB packages
Migrating flat-file configurations into Diskover Admin
Post-upgrade verification and service startup
Rollback procedures
What this guide does NOT cover:
Fresh installations (see the Full Stack Deployment Guide)
Ansible-based upgrades (see the Ansible Upgrade Guide)
RHEL/Rocky Linux upgrades (a separate guide is available)
Windows or macOS worker upgrades (see the respective platform guides)
Components affected by this upgrade:
Component |
Host Group |
Impact |
|---|---|---|
Elasticsearch |
elasticsearch |
Version upgrade from 7.x to 8.x (if needed) |
Python |
all |
Upgrade to 3.11+ with dedicated virtual environment |
PHP |
web |
Upgrade to 8.4 |
Diskover Web |
web |
Package upgrade + configuration migration |
Diskover Admin |
web |
New component — replaces flat-file configuration |
Diskoverd |
worker |
Package upgrade + config import into Admin |
Celery |
worker |
Installation and configuration for file actions |
RabbitMQ |
rabbitmq |
Installation (if not already present) |
Architecture & Topology
Before upgrading, it helps to understand which components live on which hosts. A typical Diskover deployment has these host groups:
Host Group |
Components |
systemd Services |
|---|---|---|
web |
Diskover Web UI, Diskover Admin, Nginx, PHP-FPM, Kibana (optional), Diskover MCP |
|
worker |
Diskoverd scanner daemon, Celery task queue |
|
elasticsearch |
Elasticsearch cluster (one or more nodes) |
|
rabbitmq |
RabbitMQ message broker |
|
In single-host deployments, all four groups run on the same machine. In multi-host deployments, each group may run on dedicated hosts.
Network Port Requirements:
Port |
Service |
Direction |
Notes |
|---|---|---|---|
80 |
Diskover Web (Nginx) |
Users → web host |
HTTP; redirects to 443 when SSL enabled |
443 |
Diskover Web (Nginx) |
Users → web host |
HTTPS; only when SSL is enabled |
8000 |
Diskover Admin |
Users → web host |
Admin UI and API |
9200 |
Elasticsearch HTTP |
Web + workers → ES hosts |
Search queries and indexing |
9300 |
Elasticsearch transport |
ES node → ES node |
Multi-node clusters only |
5672 |
RabbitMQ (AMQP) |
Web + workers → RabbitMQ host |
Message broker for Celery |
15672 |
RabbitMQ Management |
Admins → RabbitMQ host |
Optional management UI |
The upgrade touches all host groups. You will work through each group in the order specified in this guide.
Version-Specific Migration Notes
The jump from v2.2.x to v2.5.x is a significant upgrade. Here are the key changes you should be aware of before starting:
Diskover Admin (new in v2.3+): This is the biggest architectural change. In v2.2.x, Diskover was configured through flat files (Constants.php for Web, config.yaml for workers). Starting with v2.3, Diskover Admin provides a centralized web-based configuration UI that replaces these flat files. During this upgrade, you will migrate your existing flat-file settings into Diskover Admin.
Python virtual environment (new requirement): v2.5.x requires Python 3.11+ running inside a dedicated virtual environment at /opt/python-venv-diskover. Previous versions used the system Python directly. This guide covers setting up the venv on all hosts.
PHP 8.4 required: v2.5.x requires PHP 8.x or later. If you are running PHP 7.x, this guide covers the PHP upgrade on the web host.
Elasticsearch 8.x required: If you are still on Elasticsearch 7.x, you must upgrade to 8.x. Be aware that indexes created in 7.x may not be compatible with 8.x, which means storage may need to be re-scanned after the upgrade.
License impact: If you upgrade Elasticsearch, your cluster ID will change. This invalidates your existing Diskover licenses (both Web and Worker). You will need to request new licenses from Diskover Data after the upgrade.
Configuration file changes:
Setting |
v2.2.x Location |
v2.5.x Location |
|---|---|---|
Web UI settings |
|
Diskover Admin UI |
Worker/scanner config |
|
Diskover Admin UI (imported via |
Web license |
|
Diskover Admin UI |
Worker license |
|
Diskover Admin UI |
ES connection |
|
Diskover Admin → Wizard |
RabbitMQ connection |
N/A (new) |
Diskover Admin → Message Queue |
Deprecated settings: Flat-file configurations (Constants.php, config.yaml) are still read for backward compatibility, but Diskover Admin is now the authoritative source. After migrating your settings into Admin, the flat files are no longer used.
Pre-Upgrade Checklist
Complete every item before starting the upgrade. Skipping a step here is the most common cause of upgrade issues.
- Current Diskover version verified — In Diskover Web, click the Gear Icon → Settings → Diskover Version
- All running scans completed or paused — Do not upgrade while an active scan is in progress. Check the Task Panel in Diskover Admin
- Maintenance window scheduled — Diskover services will be stopped during the upgrade. Coordinate with stakeholders who rely on the Web UI
- Release notes reviewed — Check the Diskover Release Notes for any breaking changes or new requirements
- JFrog credentials confirmed — Verify your JFrog Artifactory username and token are still valid. If you don't have credentials, contact Diskover Data
- Elasticsearch cluster health is green or yellow — Run:
curl -s http://localhost:9200/_cluster/healthand verify"status"is not"red" - Elasticsearch snapshot created — Recommended if upgrading ES versions (see Backup Procedures below)
- New license file obtained — If upgrading Elasticsearch versions, you will need new licenses from Diskover Data
Prerequisites
Before upgrading, your environment must meet these minimum requirements:
Requirement |
Detail |
|---|---|
OS |
Ubuntu/Debian 22.x+ |
Elasticsearch |
8.x required. If you are still on 7.x, upgrade Elasticsearch first (see Step 1). |
PHP |
8.x+ required on the web host. The upgrade process covers PHP installation if needed. |
Python |
3.11+ (installed during the upgrade process). |
Internet access |
Required to reach JFrog Artifactory for DEB packages and public PHP repos. |
Root / sudo access |
All commands in this guide must be run as |
Credentials
Credential |
Purpose |
How to Obtain |
|---|---|---|
JFrog Artifactory username & token |
Download Diskover DEB packages |
Provided by Diskover Data. Contact support if you need new credentials. |
Backup Procedures
Backups are your safety net. Even if you're confident, take them — they make rollbacks painless.
On the web host:
# Back up Diskover Web mv /var/www/diskover-web/ /var/www/diskover-web-$(date +%Y%m%d)/ # Back up Nginx configuration cp /etc/nginx/conf.d/diskover-web.conf /etc/nginx/conf.d/diskover-web.conf.$(date +%Y%m%d) # Back up the Diskover core directory (only if the web host also runs as a worker) mv /opt/diskover/ /opt/diskover-$(date +%Y%m%d)/
On each worker host:
# Back up Diskover core mv /opt/diskover/ /opt/diskover-$(date +%Y%m%d)/ # Back up diskoverd configuration cp -r /root/.config/diskoverd/ /root/.config/diskoverd-$(date +%Y%m%d)/
Elasticsearch Snapshot (Recommended for Major Upgrades)
If you are upgrading Elasticsearch versions (e.g., 7.x → 8.x) as part of this process, create an Elasticsearch snapshot first. This protects your indexed data in case the ES upgrade encounters issues.
Refer to the Elastic documentation for snapshot procedures:
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html
Upgrade Order
When upgrading manually, follow this order to avoid dependency issues:
Elasticsearch (if upgrading ES version)
Python 3.11 (all hosts that run Diskover Admin or Diskoverd)
PHP 8.4 (web host, if upgrading from a version older than 8.x)
Diskover Web & Diskover Admin (web host)
Diskoverd (worker hosts)
RabbitMQ (if not already installed or needs upgrade)
Celery (worker hosts)
Important: All commands below should be run as
rootor withsudo.
Step 1: Elasticsearch Upgrade (If Needed)
Your system must be running Elasticsearch 8.x. If you are already on 8.x, skip this step.
If upgrading from Elasticsearch 7.x, be aware that indexes created in 7.x may not be compatible with 8.x, which means all storage may need to be re-scanned after the upgrade. Use the Elastic Upgrade Assistant to identify any settings or indices that could prevent you from successfully upgrading your cluster.
Resources:
Upgrade Assistant: https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade/upgrade-assistant
General ES Upgrade: https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html
ES 7.x → 8.x Upgrade: https://www.elastic.co/guide/en/elastic-stack/8.14/upgrading-elastic-stack.html
License impact: If you upgrade Elasticsearch, your cluster ID will change. This invalidates your existing Diskover licenses (both Web and Worker). You will need to request new licenses from Diskover Data once you complete the full upgrade.
Verify Elasticsearch is running after the upgrade:
curl -s http://localhost:9200/_cluster/health | python3 -m json.tool
You should see "status": "green" or "status": "yellow". If you see "red", resolve the cluster health issue before continuing.
Step 2: Python 3.11 and Virtual Environment
Diskover v2.5.x requires Python 3.11+ running in a dedicated virtual environment. Repeat these steps on every host that runs Diskover Admin or Diskoverd workers.
2a. Install Python 3.11
apt -y install python3.11 python3.11-dev python3.11-venv gcc
2b. Create a Dedicated Python Virtual Environment
python3.11 -m venv /opt/python-venv-diskover
2c. Add the Virtual Environment to the System PATH
This makes Python commands available from any shell session without needing to manually source the virtual environment:
cat > /etc/profile.d/diskover-venv.sh << 'EOF' # Add Diskover venv to PATH for CLI usage export PATH="/opt/python-venv-diskover/bin:$PATH" EOF
Load the new PATH into your current session:
source /etc/profile.d/diskover-venv.sh
2d. Verify
which python3 # Expected: /opt/python-venv-diskover/bin/python3 python3 -V # Expected: Python 3.11.x
If which python3 does not return the venv path, run source /etc/profile.d/diskover-venv.sh again to load the PATH in your current session.
Step 3: PHP 8.4 Upgrade (If Needed)
You must be running PHP 8.x+ for Diskover v2.5.x. If you are already running PHP 8.x+, skip this step. The steps below install PHP 8.4 on the web host only.
3a. Enable the PHP Repository
add-apt-repository ppa:ondrej/php
3b. Install PHP 8.4 Packages
apt -y install php8.4 php8.4-cli php8.4-common php8.4-curl php8.4-mbstring \ php8.4-mysql php8.4-xml php8.4-zip php8.4-gd php8.4-bcmath php8.4-intl php8.4-fpm
3c. Configure php.ini
-
Locate the production php.ini template:
find / -mount -name php.ini-production
Example result:
/usr/lib/php/8.4/php.ini-production -
Locate the FPM php.ini file:
find / -mount -name php.ini | grep fpm
Example result:
/etc/php/8.4/fpm/php.ini
3d. Configure PHP-FPM Pool
Edit the pool configuration file:
vi /etc/php/8.4/fpm/pool.d/www.conf
Ensure the following properties are set (uncomment or change as needed):
user = www-data group = www-data listen = /var/run/php/php8.4-fpm.sock listen.owner = www-data listen.group = www-data ;listen.acl_users = apache ; ensure this stays commented out
Note: Take note of the
listensocket path — you will need it when configuring Nginx in Step 4.
3e. Set PHP Directory Ownership
chown -R root:www-data /var/lib/php chown -R www-data:www-data /var/run/php
Note: Adjust paths if your PHP 8.4 installation directory differs.
3f. Create the PHP-FPM Service File
vi /etc/systemd/system/php-fpm.service
Add the following content:
[Unit] Description=PHP FastCGI process manager After=local-fs.target network.target nginx.service [Service] PIDFile=/var/run/php/php8.4-fpm.pid ExecStartPre=-/usr/bin/rm -f /var/run/php/php8.4-fpm.sock ExecStart=/usr/sbin/php-fpm8.4 --fpm-config /etc/php/8.4/fpm/php-fpm.conf --nodaemonize Type=simple [Install] WantedBy=multi-user.target
3g. Enable and Start PHP-FPM
chmod 644 /etc/systemd/system/php-fpm.service systemctl daemon-reload systemctl enable php-fpm --now
Verify the service started successfully:
systemctl status php-fpm
You should see active (running) in the output. Do not continue until PHP-FPM is online.
Step 4: Diskover Web & Diskover Admin (Web Host)
Diskover Admin is new in the v2.3+ branch. It provides a centralized web-based UI for configuring all Diskover components and replaces the flat-file configuration approach used in v2.2.x and earlier. Diskover Admin must be installed on the web host.
4a. Stop Services and Create Backups
systemctl stop nginx php-fpm # Move existing directories to date-stamped backups mv /var/www/diskover-web/ /var/www/diskover-web-$(date +%Y%m%d)/ # Back up the Nginx config cp /etc/nginx/conf.d/diskover-web.conf /etc/nginx/conf.d/diskover-web.conf.$(date +%Y%m%d)
If this web host also doubles as a worker (single-host deployment), back up the Diskover core directory as well:
mv /opt/diskover/ /opt/diskover-$(date +%Y%m%d)/
Note: Remember the date-stamped directory names — you will need them when migrating configuration in Step 4d and for rollback if needed. Run
date +%Y%m%dto confirm today's date string (e.g.,20260406).
4b. Configure the JFrog APT Repository
Configure the Diskover APT repository so you can install packages via apt. If you need JFrog credentials, contact Diskover Data to have them issued.
Create the repository source list:
vi /etc/apt/sources.list.d/diskover.list
Add the following line, replacing the placeholders with your actual credentials:
deb [trusted=yes] https://your-jfrog-username:your-jfrog-token@diskover.jfrog.io/artifactory/diskover-debian-prod stable main
Create the authentication configuration:
mkdir -p /etc/apt/auth.conf.d vi /etc/apt/auth.conf.d/diskover.conf
Add the following:
machine diskover.jfrog.io login your-jfrog-username password your-jfrog-token
Secure the auth file:
chmod 600 /etc/apt/auth.conf.d/diskover.conf
Update the APT cache:
apt update
If you see a 401 Unauthorized error, double-check your username and token. Contact Diskover Data if you need new credentials.
4c. Install the Upgraded Packages
On the web host, install the web and admin packages:
apt install diskover-web diskover-admin \ diskover-plugin* diskover-scanner* diskover-file-action*
Note: Do not install
diskoverdon the web host unless this is a single-host deployment where the web host also acts as a worker. For multi-host deployments,diskoverdis installed on worker hosts in Step 5.
4d. Migrate Configuration and Data
You should now have the new version installed. The next step is to migrate your existing smart searches, tasks, and configuration from the backed-up directories. Replace YYYYMMDD with the date string from your backup (e.g., 20260406):
-
Smart Searches / Reports / Cost Analysis / Custom Tags:
rsync -av /var/www/diskover-web-YYYYMMDD/public/*txt /var/www/diskover-web/public/ chown www-data:www-data /var/www/diskover-web/public/*txt
-
Workers / Tasks / Templates / Task History:
rsync -av /var/www/diskover-web-YYYYMMDD/public/tasks/*.json /var/www/diskover-web/public/tasks/ chown www-data:www-data /var/www/diskover-web/public/tasks/*json
-
Constants.php: This preserves your existing Diskover Web UI settings (Elasticsearch connection, display preferences, etc.) until they are fully migrated into Diskover Admin via the setup wizard in Step 8. If the ES host or any Diskover sub-system addresses changed during the upgrade, update this file to reflect those changes.
cp /var/www/diskover-web-YYYYMMDD/src/diskover/Constants.php /var/www/diskover-web/src/diskover/ chown www-data:www-data /var/www/diskover-web/src/diskover/Constants.php
-
SQLite DB file:
cp /var/www/diskover-web-YYYYMMDD/diskoverdb.sqlite3 /var/www/diskover-web/diskoverdb.sqlite3 chown www-data:www-data /var/www/diskover-web/diskoverdb.sqlite3
4e. Install Diskover Admin Python Dependencies
Install the Python packages required by Diskover Admin. Make sure you are using the venv Python — if which pip3 does not return /opt/python-venv-diskover/bin/pip3, run source /etc/profile.d/diskover-venv.sh first.
cd /opt/diskover-admin/etc/ pip3 install -r requirements.txt
4f. Update the Nginx Configuration
Replace your existing Nginx configuration for Diskover. The key changes from v2.2.x are: the PHP socket path is now php8.4-fpm.sock, and there is a new location block that proxies requests to Diskover Admin.
Edit /etc/nginx/conf.d/diskover-web.conf and replace its contents with the following:
server {
listen 80;
server_name diskover-web;
root /var/www/diskover-web/public;
index index.php index.html index.htm;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location / {
try_files $uri $uri/ /index.php?$args =404;
}
location ~ \.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 900;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location /diskover_admin {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/opt/diskover-admin/run/diskover-admin.sock;
}
}
Important: Verify the
fastcgi_passsocket path matches thelistenvalue you set in/etc/php/8.4/fpm/pool.d/www.conf(Step 3d). If you had a different socket path, update it accordingly.
4g. Copy the Nginx Proxy Params File
cp /opt/diskover-admin/etc/proxy_params /etc/nginx/
4h. Create the Diskover Admin Service File
vi /etc/systemd/system/diskover-admin.service
Add the following content:
[Unit] Description=Uvicorn instance to serve /diskover-admin After=network.target [Service] User=root Group=root Environment=PYTHONUNBUFFERED=TRUE WorkingDirectory=/opt/diskover-admin ExecStart=uvicorn --interface wsgi --loop uvloop --workers 5 --log-level debug --uds /opt/diskover-admin/run/diskover-admin.sock wsgi:app ExecStartPost=/bin/bash -c 'while [ ! -S /opt/diskover-admin/run/diskover-admin.sock ]; do sleep 1; done'; chown www-data:www-data /opt/diskover-admin/run/diskover-admin.sock; chmod 777 /opt/diskover-admin/run/diskover-admin.sock ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
4i. Start Diskover Admin
systemctl daemon-reload systemctl enable diskover-admin --now
Verify the service is online:
systemctl status diskover-admin
You should see active (running) and the following in the logs:
uvicorn.error - INFO - Application startup complete.
If it has not come online, check the startup logs for errors:
journalctl -n 100 -u diskover-admin
If you are unable to resolve the issue, include these logs when submitting a support ticket to the Diskover team.
4j. Verify the Web UI
Start Nginx and PHP-FPM:
systemctl start nginx php-fpm
Access the Diskover Web UI at http://your-web-host-ip. You should see the login page with the new version number displayed. Clear your browser cache (Ctrl+Shift+R) if you still see the old branding or version.
Note: If you upgraded Elasticsearch during this process, your Diskover Web license is no longer valid because the cluster ID changed. You will need to request a new license from Diskover Data. The license can be entered in Diskover Admin after completing the setup wizard in Step 8.
Diskover Admin logs (for troubleshooting): journalctl -fu diskover-admin or /var/log/diskover/diskover-admin.log
Step 5: Diskoverd — Task Workers (Worker Hosts)
Repeat these steps on each dedicated worker host in your environment. If you have a single-host deployment where the web host also runs as a worker, run these steps on that host as well (the web packages from Step 4 and worker packages can coexist).
5a. Stop Services and Create Backups
systemctl stop diskoverd mv /opt/diskover/ /opt/diskover-$(date +%Y%m%d)/ cp -r /root/.config/diskoverd/ /root/.config/diskoverd-$(date +%Y%m%d)/
5b. Configure the JFrog APT Repository
If this worker host does not already have the Diskover APT repo configured, follow the same steps shown in Step 4b to set it up.
5c. Install the Upgraded Packages
On worker-only hosts, you do not need to install diskover-web or diskover-admin:
apt install diskoverd diskover-plugin* diskover-scanner* diskover-file-action*
5d. Install Python Dependencies
Install the Python packages required by Diskoverd. Make sure you are using the venv Python — if which pip3 does not return /opt/python-venv-diskover/bin/pip3, run source /etc/profile.d/diskover-venv.sh first.
cd /opt/diskover pip3 install -r requirements.txt
5e. Import Configurations into Diskover Admin
In v2.2.x, Diskoverd was configured through flat YAML files. In v2.5.x, these settings live in Diskover Admin. The --importconfig flag reads your existing flat files and imports them into Diskover Admin.
Default configuration — /root/.config/diskoverd/config.yaml:
python3 /opt/diskover/diskover.py --importconfig
If successful, you should see: Importing Diskover configuration from /root/.config/diskoverd/config.yaml to Diskover.Configurations.Default — and the settings will now be visible in Diskover Admin → Diskover → Configurations → Default.
Alternate configurations — If you have additional named configurations (e.g., /root/.config/diskoverd_altconfig1/), import each one separately. This does not apply to plugin configs like /root/.config/diskover_costs.
# Set the DISKOVERDIR variable to the directory containing the config.yaml export DISKOVERDIR=/root/.config/diskoverd_altconfig1/ python3 /opt/diskover/diskover.py --importconfig -c NAME_OF_CONFIG_IN_ADMIN
Full example:
export DISKOVERDIR=/root/.config/diskoverd_no_plugins_enabled/ python3 /opt/diskover/diskover.py --importconfig -c No_plugins_enabled
If successful, you should see: Importing Diskover configuration from /root/.config/diskoverd_no_plugins_enabled/config.yaml to Diskover.Configurations.No_plugins_enabled
Do not start Diskoverd yet — wait until Diskover Admin is fully configured (see Step 8 below).
Note: If you upgraded Elasticsearch during this process, your Diskoverd license is no longer valid because the cluster ID changed. You will need to request a new license from Diskover Data after completing the full upgrade.
Step 6: RabbitMQ (If Not Already Installed)
RabbitMQ is the message broker used by Celery for file actions. It is best installed on a standalone host, but can also run on the web host in single-host deployments. If you already have RabbitMQ running, skip this step.
6a. Add the RabbitMQ Repository
For the latest stable version of RabbitMQ, add the official repository before installing. Refer to the RabbitMQ installation guide for Ubuntu/Debian for repository setup: https://www.rabbitmq.com/docs/install-debian
6b. Install RabbitMQ & Erlang
apt install rabbitmq-server erlang
6c. Enable and Start the Service
systemctl enable rabbitmq-server --now
Verify the service is online before continuing:
systemctl status rabbitmq-server
Troubleshooting: If the service fails to start, the most common cause is that the host's hostname is not resolvable. Verify with
hostname -fand ensure the hostname is in/etc/hostsor resolvable via DNS.
6d. Configure RabbitMQ for Diskover
# Enable the management UI plugin rabbitmq-plugins enable rabbitmq_management # Secure the default guest account (this password is not used by Diskover) rabbitmqctl change_password guest your-guest-password # Create a dedicated Diskover user (choose your own username and password) rabbitmqctl add_user diskover your-rabbitmq-password # Grant administrator privileges rabbitmqctl set_user_tags diskover administrator # Set permissions rabbitmqctl set_permissions -p / diskover ".*" ".*" ".*" # Restart to apply changes systemctl restart rabbitmq-server
Important: Remember the username and password you set here — you will need them when configuring the Message Queue settings in Diskover Admin (Step 8).
You should now be able to access the RabbitMQ Management UI at:http://your-rabbitmq-host:15672/
Additional resources:
RabbitMQ Debian Installation Guide: https://www.rabbitmq.com/docs/install-debian
RabbitMQ Configuration Guide: https://www.rabbitmq.com/docs/configure
Step 7: Celery (Worker Hosts)
Celery is the task queue that powers Diskover file actions. It should be installed on all worker hosts. Celery connects to RabbitMQ for message delivery, so RabbitMQ must be installed and running before starting Celery.
7a. Install Celery
pip3 install celery
Verify the binary is available:
which celery # Expected: /opt/python-venv-diskover/bin/celery
7b. Copy Configuration and Service Files
# Copy the default Celery config cp /opt/diskover/diskover_celery/etc/celery.conf /etc/ # Copy the systemd service file cp /opt/diskover/diskover_celery/etc/celery.service /etc/systemd/system/
7c. Create Log and Run Directories
mkdir -p /var/log/celery mkdir -p /var/run/celery chown root:root /var/log/celery chown root:root /var/run/celery chmod 755 /var/log/celery chmod 755 /var/run/celery
7d. Enable the Service
chmod 644 /etc/systemd/system/celery.service systemctl daemon-reload systemctl enable celery
Do not start Celery yet. Celery needs the RabbitMQ connection details that are configured in Diskover Admin (Step 8). If Celery cannot reach RabbitMQ, the service will fail to start.
Additional resources:
Celery Documentation: https://docs.celeryq.dev/en/stable/getting-started/first-steps-with-celery.html
Step 8: Diskover Admin Configuration
Now that all components are installed, configure them through the Diskover Admin setup wizard. This is where your flat-file settings are migrated into the centralized Admin UI.
Diskover Admin URL:
HTTP:
http://your-web-host-ip:8000/diskover_admin/configHTTPS:
https://your-diskover-fqdn/diskover_admin/config
If this is the first time configuring Diskover Admin, you will be automatically routed to the setup wizard. You should see Elasticsearch Connection Configuration for Diskover-Web on the first page. If not, navigate to System → Meta → Wizard → Setup.
Since you are upgrading from an older version of Diskover, the majority of your Elasticsearch settings should be migrated from the Constants.php file. Verify they are correct and update any values that changed during the upgrade.
Wizard Steps
-
Elasticsearch connection settings for Diskover Web:
Enter the IP, hostname, or AWS/Elastic Cloud endpoint where Elasticsearch is running. If you have a clustered ES setup, click Add item to enter additional endpoints.
Keep the port at 9200 unless your cluster runs on a non-standard port. For AWS OpenSearch, use port 443.
-
Enable HTTPS if Elasticsearch has TLS configured. If so:
Enter your Elasticsearch username and password.
Enter the path to the Elasticsearch
http_ca.crtfile on your web host in the CA Certificates Path field.
Click Test to verify the connection. The page will display the cluster health, shard count, node count, and other details. If the test succeeds, click Save & Continue.
-
Copy settings to Diskover Ingesters (Task Workers):
Select Yes to copy the Elasticsearch connection settings from Diskover Web to the worker configuration. Review and adjust as needed.
-
License:
-
If upgrading from v2.2.x (and you did NOT upgrade Elasticsearch), copy the contents of your existing license flat files into their respective fields:
Web license: from
/var/www/diskover-web-YYYYMMDD/src/diskover/diskover-web.licWorker license: from
/opt/diskover-YYYYMMDD/diskover.lic
If you upgraded Elasticsearch (or this is a fresh license), click Request License and fill out the required fields (email, ES node count, name/company). The Diskover team will respond with your new licenses.
-
-
Time Zone for Indices:
Select the timezone for displaying index timestamps in the Web UI. This also affects file and directory timestamps if timezone display is enabled.
-
Message Queue Configuration:
Select RabbitMQ or AmazonMQ as your message broker.
Enter the RabbitMQ username and password you created in Step 6d.
Enter the host (IP address of the RabbitMQ server, or AmazonMQ endpoint).
Click Test to verify the connection. You should see "Connection Successful" before proceeding.
-
API Configuration:
Set the API Host to the IP or hostname of your web host.
Set the API Port to 8000 (HTTP) or 443 (HTTPS).
You are finished when you reach Basic setup is complete. Click DiskoverAdmin at the top of the page to return to the home dashboard.
Step 9: Post-Upgrade — Start Services
Now that all components are installed and Diskover Admin is configured, start the remaining services.
Start Celery
systemctl enable celery --now systemctl status celery
Celery should show active (running). If it fails to start, check the logs at /var/log/celery/ for error details. The most common issue is an incorrect RabbitMQ host or credentials in the Diskover Admin Message Queue settings. If you need help, include the contents of /var/log/celery/ when submitting a support ticket.
Start Diskoverd
systemctl enable diskoverd --now systemctl status diskoverd
Diskoverd should show active (running). If it fails to start, check the startup logs:
journalctl -fu diskoverd
The most common issue is a missing or invalid license. Verify your license is entered correctly in Diskover Admin. If you need help, include the journalctl output when submitting a support ticket.
Verify Workers in the Web UI
Navigate to Diskover Admin → Task Panel → Workers tab. Your worker(s) should appear as online.
Post-Upgrade Verification
Run through this checklist to confirm the upgrade was successful:
Check |
How to Verify |
Expected Result |
|---|---|---|
Diskover version |
Gear Icon → Settings → Diskover Version |
Shows target version (v2.5.x) |
Elasticsearch health |
|
|
RabbitMQ status |
|
Running, listeners on port 5672 |
Diskover Web UI |
Navigate to |
Login page loads with new version |
Diskover Admin |
Navigate to |
Admin dashboard loads |
Diskoverd service |
|
|
Celery service |
|
|
Worker registration |
Diskover Admin → Task Panel → Workers |
Worker(s) listed as online |
Test scan |
Create and run a small test scan |
Completes without errors |
File actions |
Test a file action (e.g., LiveView) |
Executes successfully |
Rollback Procedures
If the upgrade causes critical issues, you can roll back to the previous version using the backups created earlier in this guide.
When to Rollback
Critical functionality (Web UI, scanning, file actions) is broken after upgrade
Services fail to start and troubleshooting does not resolve the issue
Data corruption is detected in Elasticsearch indices
Rollback Steps
Stop all Diskover services:
systemctl stop diskoverd celery nginx php-fpm diskover-admin
Restore the backed-up directories.
Replace YYYYMMDD with the date string from your backup:
On the web host:
mv /var/www/diskover-web/ /var/www/diskover-web-failed/ mv /var/www/diskover-web-YYYYMMDD/ /var/www/diskover-web/ cp /etc/nginx/conf.d/diskover-web.conf.YYYYMMDD /etc/nginx/conf.d/diskover-web.conf
On worker hosts:
mv /opt/diskover/ /opt/diskover-failed/ mv /opt/diskover-YYYYMMDD/ /opt/diskover/ cp -r /root/.config/diskoverd-YYYYMMDD/ /root/.config/diskoverd/
Disable Diskover Admin (it did not exist in v2.2.x):
systemctl stop diskover-admin systemctl disable diskover-admin
Restore the previous Nginx configuration (which does not include the Diskover Admin proxy block):
If your backed-up Nginx config from Step 4a was the v2.2.x version, it was already restored in step 2 above.
Start services:
systemctl start nginx php-fpm diskoverd celery
Verify the rollback by checking the version in Gear Icon → Settings → Diskover Version and confirming all services are running.
Note: If you also upgraded Elasticsearch as part of this process, rolling back ES is a separate procedure. Refer to the Elastic documentation for downgrade instructions, or restore from the Elasticsearch snapshot you created before upgrading.
Service Management Reference
Service |
systemd Unit |
Host Group |
Start |
Status |
Logs |
|---|---|---|---|---|---|
Elasticsearch |
|
elasticsearch |
|
|
|
Diskoverd |
|
worker |
|
|
|
Celery |
|
worker |
|
|
|
RabbitMQ |
|
rabbitmq |
|
|
|
Nginx |
|
web |
|
|
|
PHP-FPM |
|
web |
|
|
|
Diskover Admin |
|
web |
|
|
|
Kibana |
|
web |
|
|
|
Troubleshooting
Issue |
Cause |
Solution |
|---|---|---|
|
Python dependencies missing or wrong Python version |
Run |
|
Invalid or missing license |
Check |
|
Cannot connect to RabbitMQ |
Verify RabbitMQ host and credentials in Diskover Admin → Message Queue settings. Test RabbitMQ: |
Web UI shows old version after upgrade |
Browser cache serving stale assets |
Clear browser cache or hard-refresh with Ctrl+Shift+R. |
Nginx returns 502 Bad Gateway |
PHP-FPM socket path mismatch |
Verify the |
Nginx returns 502 for |
Diskover Admin socket not ready |
Verify |
Elasticsearch connection fails in Admin wizard |
Wrong host/port or TLS misconfiguration |
Verify ES is running: |
Old indexes missing after ES upgrade |
ES 7.x indexes incompatible with 8.x |
Re-scan storage to rebuild indexes. This is expected behavior for major ES version upgrades. |
RabbitMQ fails to start |
Hostname not resolvable |
Ensure the host's hostname is in |
|
Invalid JFrog credentials |
Verify username and token in |
Python pip install fails |
pip version too old or wrong Python |
Upgrade pip: |
Log File Locations:
Component |
Log Location |
|---|---|
Elasticsearch |
|
Diskoverd |
|
Celery |
|
Nginx |
|
PHP-FPM |
|
Diskover Admin |
|
RabbitMQ |
|
Support
If you encounter issues during the upgrade that you cannot resolve using this guide:
Documentation: https://docs.diskoverdata.com
Support Portal: https://support.diskoverdata.com
Help Center: https://support.diskoverdata.com/hc/en-us
When submitting a support ticket for upgrade issues, please include:
Previous Diskover version and target version
Target OS and version (
cat /etc/os-release)The upgrade step where the issue occurred
Relevant service logs (
journalctl -u diskoverd,/opt/diskover/diskover_celery/log/, etc.)Any error messages encountered during the upgrade
Comments
0 comments
Please sign in to leave a comment.