Release 2025.12.11 requires Elasticsearch 8 and Redis 8. The following steps are required to upgrade. If you are performing a fresh install, you can ignore this migration guide and follow the installation instructions in the documentation.
1. Elasticsearch
Note that the data stored in Elasticsearch is transient. It can be safely deleted and will be refilled with data from the database at startup.
If you are using an Elasticsearch container using Docker Compose:
- Bring down the application.
- Find the Elasticsearch volume using
docker volume ls. - Delete the Elasticsearch volume using
docker volume rm <your volume>. - Make sure the Reporter containers all have
ELASTIC_SCHEME=httpset. In our example docker-compose setup, you can do so by adding this variable tophp.env. - Make sure the Reporter containers and the Elasticsearch container all have an
ELASTIC_PASSWORDenvironment variable set. In our example docker-compose setup, you can generate this secret by running thegen_secrets.shshell script in the same folder asdocker-compose.yml; it will generate a fileelastic_secret.envwith the variable set. Make sure this file is added to theenv_filesection of all Reporter containers and the Elasticsearch container. - Update the Elasticsearch container in
docker-compose.yml.The new default is below.- The image has been updated to 8.19.6.
- The last two environment keys were added (
xpack.security.enabledandxpack.security.http.ssl.enabled). - Everything else remained the same.
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.19.6
container_name: reporter-elasticsearch
hostname: reporter-elasticsearch
restart: unless-stopped
volumes:
- elasticsearch:/usr/share/elasticsearch/data
networks:
- backend
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=true
# don't use SSL for direct container-to-container communication in same Docker network
- xpack.security.http.ssl.enabled=false
env_file: elastic_secret.env
ulimits:
memlock:
soft: -1
hard: -1If you are using a managed Elasticsearch instance:
These steps can be done in a different order, depending on your setup.
- Take down the application.
- Delete the Elasticsearch instance.
- Set up a new Elasticsearch instance with Elasticsearch 8.
- Modify environment variables related to Elasticsearch in your .env files as needed to connect to it (in particular,
ELASTIC_HOST,ELASTIC_USERNAME, andELASTIC_PASSWORDmay need to be updated). - Bring the application back up.
2. Redis
You should update Redis to version 8.
Note that the data stored in Redis is transient. It can be safely deleted and will be refilled with data from the database at startup.
If using Docker Compose, change the image to redis:8 in docker-compose.yml.
If you are using a managed Redis instance, set up a new Redis instance using Redis 8.
After you apply this update, you can check Settings > Status Report for your current Redis version. The latest supported version is 8.4.
After update
After updating the ElasticSearch and Redis images, you can bring the application back up.
When Reporter is back up, log in to Reporter and go to Findings in the main menu.
- If you see any findings, the update was successful.
- If you see the page, but there are no findings, Elasticsearch is still being populated with data from the database. This may take a while, depending on the size of your database.
- If the page is still empty after half an hour, check the queue for any failed
MakeSearchablejobs and contact support
- If the page is still empty after half an hour, check the queue for any failed
- If the page has a 500 internal server error, check the logs for the
reporter-phpcontainer to help diagnose the problem. And if you need to, contact support.