Skip to content

Deploy using Podman

It is recommended to use Podman Compose for deploying NetApp Project Neo using Podman. Podman Compose simplifies the deployment process by allowing you to define and manage multi-container Podman applications with a single configuration file, similar to Docker Compose.

Architecture

Neo v4 consists of four microservices plus a PostgreSQL database:

  • API (port 8000) -- REST API and authentication
  • Worker -- File discovery, SMB crawling, Graph uploads
  • Extractor -- Document content extraction (PDF, Office, images)
  • NER -- Named Entity Recognition
  • Console UI (port 8081) -- Web management interface

Prerequisites

Before deploying Neo using Podman Compose, ensure that you have the following prerequisites in place:

IMPORTANT

The Extractor and Worker services may require privileged container access for SMB share mounting. When running with Podman, you may need to use sudo podman-compose or configure rootful Podman for these services.

Deployment Steps

  1. Download the Docker Compose File: Download the latest docker-compose.yml file from the NetApp Neo GitHub repository to your local machine. Podman Compose uses the same YAML format as Docker Compose.

TIP

A comprehensive docker-compose.example.yml is also available with full inline documentation for every environment variable, GPU configuration options, and an optional nginx load balancer service. To use the load balancer profile: podman compose --profile with-lb up -d

  1. Configure Environment Variables: Open the docker-compose.yml file in a text editor and configure the necessary environment variables, such as database connection details, admin credentials, and any other required settings.

    yaml
    environment:
      - DATABASE_URL=postgresql://postgres:yourStrongPasswordHere!@db:5432/neo

    For example, if my server's IP address is 10.100.20.05, my username is postgres, the port is 5432 and my password is yourStrongPasswordHere!, I would set the DATABASE_URL as follows:

    yaml
    environment:
      - DATABASE_URL=postgresql://postgres:yourStrongPasswordHere!@10.100.20.05:5432/neo
  2. Start the Containers: Open a terminal, navigate to the directory where the docker-compose.yml file is located, and run the following command to start the containers:

    bash
    podman-compose up -d

    This command will download the necessary container images and start all four Neo microservices along with the PostgreSQL database in detached mode.

  3. Verify the Deployment: After the containers are up and running, you can verify the deployment by checking the logs:

    bash
    podman-compose logs -f

    You should see logs indicating that the services have started successfully. The API service will log:

    api-1  | INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
  4. Access the Services:

    • Console UI: Open your web browser and navigate to http://<your-server-ip>:8081 to access the Neo web management console.
    • API: The REST API is available at http://<your-server-ip>:8000. API documentation is at http://<your-server-ip>:8000/docs.

    For further information on using the web interface, refer to the Management section of the documentation.

Stopping the Deployment

To stop the Neo deployment, run the following command in the terminal where the docker-compose.yml file is located:

bash
podman-compose down

This command will stop and remove the containers and networks created by Podman Compose. Data will be preserved in the volumes defined in the docker-compose.yml file.

Podman-Specific Notes

  • Podman runs containers rootless by default, providing enhanced security compared to Docker.
  • Podman does not require a daemon to be running, unlike Docker.
  • The Extractor and Worker services may need privileged access for SMB mounts. Use sudo podman-compose up -d if you encounter mount permission errors.
  • If you encounter permission issues with volumes, you may need to adjust SELinux contexts or volume mount options. Refer to the Podman documentation for troubleshooting.

This concludes the steps to deploy NetApp Project Neo using Podman Compose. For more advanced configurations and management options, please refer to the Management section of the documentation.