--- title: "Installation" --- ### Installation Prowler App offers flexible installation methods tailored to various environments. Refer to the [Prowler App Tutorial](/user-guide/tutorials/prowler-app) for detailed usage instructions. Prowler configuration is based on `.env` files. Every version of Prowler can have differences on that file, so, please, use the file that corresponds with that version or repository branch or tag. _Requirements_: - `Docker Compose` installed: https://docs.docker.com/compose/install/. _Commands_: ```bash VERSION=$(curl -s https://api.github.com/repos/prowler-cloud/prowler/releases/latest | jq -r .tag_name) curl -sLO "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/${VERSION}/docker-compose.yml" # Environment variables can be customized in the .env file. Using default values in production environments is not recommended. curl -sLO "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/${VERSION}/.env" docker compose up -d ``` For a secure setup, the API auto-generates a unique key pair, `DJANGO_TOKEN_SIGNING_KEY` and `DJANGO_TOKEN_VERIFYING_KEY`, and stores it in `~/.config/prowler-api` (non-container) or the bound Docker volume in `_data/api` (container). Never commit or reuse static/default keys. To rotate keys, delete the stored key files and restart the API. _Requirements_: - `git` installed. - `poetry` installed: [poetry installation](https://python-poetry.org/docs/#installation). - `npm` installed: [npm installation](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). - `Docker Compose` installed: https://docs.docker.com/compose/install/. Make sure to have `api/.env` and `ui/.env.local` files with the required environment variables. You can find the required environment variables in the [`api/.env.template`](https://github.com/prowler-cloud/prowler/blob/master/api/.env.example) and [`ui/.env.template`](https://github.com/prowler-cloud/prowler/blob/master/ui/.env.template) files. _Commands to run the API_: ```bash git clone https://github.com/prowler-cloud/prowler \ cd prowler/api \ poetry install \ eval $(poetry env activate) \ set -a \ source .env \ docker compose up postgres valkey -d \ cd src/backend \ python manage.py migrate --database admin \ gunicorn -c config/guniconf.py config.wsgi:application ``` Starting from Poetry v2.0.0, `poetry shell` has been deprecated in favor of `poetry env activate`. If your poetry version is below 2.0.0 you must keep using `poetry shell` to activate your environment. In case you have any doubts, consult the Poetry environment activation guide: https://python-poetry.org/docs/managing-environments/#activating-the-environment > Now, you can access the API documentation at http://localhost:8080/api/v1/docs. _Commands to run the API Worker_: ```bash git clone https://github.com/prowler-cloud/prowler \ cd prowler/api \ poetry install \ eval $(poetry env activate) \ set -a \ source .env \ cd src/backend \ python -m celery -A config.celery worker -l info -E ``` _Commands to run the API Scheduler_: ```bash git clone https://github.com/prowler-cloud/prowler \ cd prowler/api \ poetry install \ eval $(poetry env activate) \ set -a \ source .env \ cd src/backend \ python -m celery -A config.celery beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler ``` _Commands to run the UI_: ```bash git clone https://github.com/prowler-cloud/prowler \ cd prowler/ui \ npm install \ npm run build \ npm start ``` > Enjoy Prowler App at http://localhost:3000 by signing up with your email and password. Google and GitHub authentication is only available in [Prowler Cloud](https://prowler.com). ### Updating Prowler App Upgrade Prowler App installation using one of two options: #### Option 1: Updating the Environment File To update the environment file: Edit the `.env` file and change version values: ```env PROWLER_UI_VERSION="5.21.0" PROWLER_API_VERSION="5.21.0" ``` You can find the latest versions of Prowler App in the [Releases Github section](https://github.com/prowler-cloud/prowler/releases) or in the [Container Versions](#container-versions) section of this documentation. #### Option 2: Using Docker Compose Pull ```bash docker compose pull --policy always ``` The `--policy always` flag ensures that Docker pulls the latest images even if they already exist locally. **What Gets Preserved During Upgrade** Everything is preserved, nothing will be deleted after the update. ### Troubleshooting Installation Issues If containers don't start, check logs for errors: ```bash # Check logs for errors docker compose logs # Verify image versions docker images | grep prowler ``` If issues are encountered, rollback to the previous version by changing the `.env` file back to the previous version and running: ```bash docker compose pull docker compose up -d ``` ### Container Versions The available versions of Prowler App are the following: - `latest`: in sync with `master` branch (please note that it is not a stable version) - `v4-latest`: in sync with `v4` branch (please note that it is not a stable version) - `v3-latest`: in sync with `v3` branch (please note that it is not a stable version) - `` (release): you can find the releases [here](https://github.com/prowler-cloud/prowler/releases), those are stable releases. - `stable`: this tag always point to the latest release. - `v4-stable`: this tag always point to the latest release for v4. - `v3-stable`: this tag always point to the latest release for v3. The container images are available here: - Prowler App: - [DockerHub - Prowler UI](https://hub.docker.com/r/prowlercloud/prowler-ui/tags) - [DockerHub - Prowler API](https://hub.docker.com/r/prowlercloud/prowler-api/tags)