HomeDocumentationAPI Reference
Log In
Documentation

Upgrading Sandfly Docker/Podman Deployment

You will receive announcements about new versions of Sandfly from the mailing list, if subscribed. Additionally, you can check our website and other media outlets for announcements about new versions.

👍

TIP: Keep Your System Updated!

We are constantly adding new investigative capabilities and features. Make sure to keep both Sandfly and the underlying Operating System updated.

To update a Sandfly Docker/Podman deployment, read and complete the following steps.

Step 1: Pause Scheduled Tasks

Log into the Sandfly User Interface (UI), navigate to Schedules, and deactivate all active schedules.

This step automatically cancels active Trickle schedules and ensures no other scheduled tasks are started during the upgrade. Make note of which schedules were deactivated as they need to be reactivated once the upgrade is finished. See Deactivating and Deleting Schedule for details.

Step 2: Ensure All Tasks Have Completed

In the Sandfly UI, open the Task Queues page by clicking its button in the Top Bar or via the sidebar at Scanning > Task Queues and confirm all of the following:

  • The task queue(s) are empty, as indicated by a 0 (zero) value in the Total indicators in the All Tasks and Queues sections.
  • There are no Trickle schedules in progress. If a section named Trickle Schedules is showing under Queues , this indicates one or more are active. In that case, first double-check that Step 1 was completed and then manually cancel any remaining Trickle schedules via the red "X" button, as Trickle schedules can also be started manually.

Do not stop nodes in the middle of scans because it can leave orphaned files on the remote hosts. If the nodes are allowed to finish active tasks, everything cleans up correctly.

Empty Task Queue

Empty Task Queue

Step 3: Download the Update

Download the latest version from the following URL:

For a checksum verification of the downloaded file, its sha256 hash is provided to the right of the package name.

If the Sandfly systems are air-gapped, download the archive from a device that has internet access and then transfer the file to the Sandfly hosts as appropriate for your environment.

Once the archive is on the Sandfly hosts, untar it over the existing sandfly-setup directory:

❗️

IMPORTANT: Extract the Archive Over the Existing sandfly-setup Directory

The files contained in the tarball do not overwrite generated configurations or other added files under that directory, so it is generally safe to untar the new version onto the existing directory. If any scripts were customized, or for the cautious, make a backup of the entire directory before extraction.

Step 4: Container Image Cleanup

Once all tasks have completed, run the scripts to stop and delete all containers on the server and node instances.

Run the following command on the server and all nodes.

On the Server:

cd ~/sandfly-setup/setup

./clean_docker.sh
* Sandfly server is running on this system. Stopping...
4b24ab50f1c5
4b24ab50f1c5
* Sandfly server stopped.
* Postgres is running on this system. Stopping...
f23041d1b2b4
waiting for server to shut down....
f23041d1b2b4
* Postgres server stopped.

* Done.

4b24ab50f1c5
f23041d1b2b4
4b24ab50f1c5
f23041d1b2b4
Untagged: quay.io/sandfly/sandfly:5.7.0
...
Untagged: postgres:14.15
...

On every host being used as a Node:

cd ~/sandfly-setup/setup

./clean_docker.sh

* Stopping node container 865c0500124e
865c0500124e
865c0500124e
* Stopping node container 3b9a82446aae
3b9a82446aae
3b9a82446aae

* Done.

...

A large list of container hashes will be displayed; once complete, it will return to the command prompt. This indicates the script has completed and the containers have been removed.

Step 5: Run Start Scripts on Server and Nodes

On the server and all nodes, run the applicable start script. They will load the latest version of Sandfly and run it.

On the Server:

cd ~/sandfly-setup/start_scripts/
./start_sandfly.sh
*** Starting Postgres.
** Loading images from local archive:
** ../../docker_images/sandfly-docker-images-5.7.0.tgz
** There will be a slight delay before further output...
...
Loaded image: quay.io/sandfly/sandfly:5.7.0
Loaded image: postgres:14.21
Loaded image: postgres:18.2

...
*** Starting Sandfly Server.

On every host being used as a Node, including if the Node is on the Server:

cd ~/sandfly-setup/start_scripts/
./start_node.sh
** Loading images from local archive:
** ../../docker_images/sandfly-docker-images-5.7.0.tgz
** There will be a slight delay before further output...
...
Loaded image: quay.io/sandfly/sandfly:5.7.0

On the Node host(s), the start script can be run multiple times to start additional containers depending on the RAM and CPU capacity of the host.

Step 6: Verification

Run the docker ps command on the server and node(s) to verify all containers are running.

On the Server:

docker ps

CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS     NAMES
4b24ab50f1c5   quay.io/sandfly/sandfly:5.7.0   "/opt/sandfly/start_…"   4 seconds ago    Up 3 seconds    0.0.0.0:80->8000/tcp, :::80->8000/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp                  sandfly-server
f23041d1b2b4   postgres:18.2                  "docker-entrypoint.s…"   4 seconds ago    Up 3 seconds    5432/tcp   sandfly-postgres

On every host used as a Node:

docker ps

CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS     NAMES
865c0520124e   quay.io/sandfly/sandfly:5.7.0   "/opt/sandfly/start_…"   5 seconds ago    Up 3 seconds              boring_jang
3b9a82546aae   quay.io/sandfly/sandfly:5.7.0   "/opt/sandfly/start_…"   7 seconds ago    Up 5 seconds              clever_burnell
92b33fe63f33   quay.io/sandfly/sandfly:5.7.0   "/opt/sandfly/start_…"   8 seconds ago    Up 6 seconds              goofy_blackwell

You can now log back into the UI. To confirm the version number and/or public keys, navigate to Settings > About Sandfly within the UI.

Step 7: Resume Your Schedules

Finally, reactivate your previously enabled schedules and Sandfly will resume from its previous state.