2025-03-28 04:44:39 +03:00
2025-03-28 04:44:39 +03:00

How to Set Up and Self-Host Perplexica Using Docker

1. Preparing Your Development Environment

Updating Dependencies

Before you start, it's essential to ensure your system has the necessary dependencies installed:

sudo apt update && sudo apt upgrade -y

This command updates your package lists and installs any new required packages.

Installing Docker

Docker is crucial for containerizing and running Perplexica. Install Docker CE (for development) or Docker Hub (for production):

apt install docker.io docker-compose git -y

This will install Docker CE on your system, allowing you to create and run Docker containers.

2. Cloning the Perplexica Repository

To get access to the Perplexica codebase:

git clone https://github.com/ItzCrazyKns/Perplexica
cd Perplexica

Replace [your-repository-url] with the actual GitHub repository URL of your Perplexica project.

3. Configuring the Docker Compose File

Understanding the Docker Compose File

The following YAML file configures a multi-service application:

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    volumes:
      - ./searxng:/etc/searxng:rw
    ports:
      - 4000:8080
    networks:
      - perplexica-network
    restart: unless-stopped

  ollama:
    image: ollama/ollama:latest
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    environment:
      - OLLAMA_HOST=0.0.0.0:11434
    networks:
      - perplexica-network
    restart: unless-stopped

  app:
    image: itzcrazykns1337/perplexica:main
    build:
      context: .
      dockerfile: app.dockerfile
    environment:
      - SEARXNG_API_URL=http://searxng:8080
      - OLLAMA_API_URL=http://ollama:11434    # Added Ollama API URL
    ports:
      - 3000:3000
    networks:
      - perplexica-network
    volumes:
      - backend-dbstore:/home/perplexica/data
      - uploads:/home/perplexica/uploads
      - ./config.toml:/home/perplexica/config.toml
    depends_on:
      - ollama  #Ensure ollama is started first
      - searxng #Ensure searxng is started second
    restart: unless-stopped

networks:
  perplexica-network:

volumes:
  backend-dbstore:
  uploads:
  ollama_data:    # Add ollama volume so it does not get lost

Explanation of Each Service

  1. searxng:

    • Uses the official docker.io/searxng/searxng:latest image.
    • Listens on port 4000 and maps to Perplexica's 8080 endpoint.
  2. ollama:

    • Uses the Ollama image with CUDA support for GPU acceleration.
    • Exposes port 11434, which is used by Perplexica for API communication.
  3. app (Perplexica Service):

    • Runs in a custom Docker image (itzcrazykns1337/perplexica:main).
    • Exposes the application on port 3000.
    • Maps local development files to host volumes for data persistence.

Volume Configuration

Volumes ensure that data remains accessible after deployment:

  • backend-dbstore: Stores the database used by Perplexica.
  • uploads: Stores uploaded content (e.g., PDFs).
  • config.toml: Stores configuration settings.

4. Building and Running the Application

After setting up the Docker Compose file, run these commands to deploy:

docker-compose down && docker-compose up --build -d

This command:

  1. Removes existing containers (docker-compose down).
  2. Builds and starts a new deployment (docker-compose up --build -d).

5. What If It Fails?

If the setup fails, clean all containers and volumes:

docker rm -v -f $(docker ps -qa)
docker rmi -f $(docker images -aq)
docker volume prune
docker system prune
sudo systemctl restart docker

Then, repeat the deployment steps.

6. Conclusion

By following these steps, you'll have a fully functional Perplexica application running on your local machine. The Docker setup ensures consistency across development environments and simplifies deployment to production.false

Description
Introduction on how to install perplexica on proxmox lxc -> docker
Readme 38 KiB