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:
- Podman installed on your system. You can download Podman from the official Podman website.
- Podman Compose installed. You can install it using pip:
pip3 install podman-composeor refer to the Podman Compose installation instructions. - Sufficient system resources to run Neo. Refer to the Sizing Guide for recommended specifications.
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
- Download the Docker Compose File: Download the latest
docker-compose.ymlfile 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
Configure Environment Variables: Open the
docker-compose.ymlfile in a text editor and configure the necessary environment variables, such as database connection details, admin credentials, and any other required settings.yamlenvironment: - DATABASE_URL=postgresql://postgres:yourStrongPasswordHere!@db:5432/neoFor example, if my server's IP address is
10.100.20.05, my username ispostgres, the port is5432and my password isyourStrongPasswordHere!, I would set theDATABASE_URLas follows:yamlenvironment: - DATABASE_URL=postgresql://postgres:yourStrongPasswordHere!@10.100.20.05:5432/neoStart the Containers: Open a terminal, navigate to the directory where the
docker-compose.ymlfile is located, and run the following command to start the containers:bashpodman-compose up -dThis command will download the necessary container images and start all four Neo microservices along with the PostgreSQL database in detached mode.
Verify the Deployment: After the containers are up and running, you can verify the deployment by checking the logs:
bashpodman-compose logs -fYou 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)Access the Services:
- Console UI: Open your web browser and navigate to
http://<your-server-ip>:8081to access the Neo web management console. - API: The REST API is available at
http://<your-server-ip>:8000. API documentation is athttp://<your-server-ip>:8000/docs.
For further information on using the web interface, refer to the Management section of the documentation.
- Console UI: Open your web browser and navigate to
Stopping the Deployment
To stop the Neo deployment, run the following command in the terminal where the docker-compose.yml file is located:
podman-compose downThis 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 -dif 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.