Unlock AI Power: Run DeepSeek Locally on OpenMediaVault with Docker Compose

This guide walks you through running DeepSeek on OMV using Docker Compose, Ollama (for local AI management), and Open WebUI (a user-friendly interface)

Unlock AI Power: Run DeepSeek Locally on OpenMediaVault with Docker Compose
Photo by John Cameron / Unsplash

Introduction
OpenMediaVault (OMV) is a versatile, open-source NAS platform perfect for self-hosted workflows. By combining it with Docker, you can deploy powerful tools like DeepSeek—a state-of-the-art AI model optimized for coding, mathematics, and logical tasks—directly on your hardware. This guide walks you through running DeepSeek on OMV using Docker Compose, Ollama (for local AI management), and Open WebUI (a user-friendly interface), bypassing cloud dependencies and keeping your data private.


Why Host DeepSeek on Your OMV Server?

  1. Full Data Control:
    Avoid sending sensitive code, financial data, or proprietary information to third-party servers.
  2. Offline Accessibility:
    Use DeepSeek even without an internet connection—ideal for labs or remote workspaces.
  3. Hardware Flexibility:
    Scale resources based on your needs. Run smaller models on modest hardware or leverage GPU acceleration for complex tasks.

Step-by-Step Installation Guide

Prerequisites

  • OpenMediaVault (v6.x+) with OMV-Extras and Docker installed.
  • A shared folder for Docker data (e.g., docker).
  • At least 8GB of RAM (16GB+ recommended for larger models).

Step 1: Prepare Docker Directories

  1. In the OMV web interface, go to Storage > Shared Folders.
  2. Create subfolders for Ollama and Open WebUI under your existing Docker shared folder:
    • ollama (to store AI models)
    • open-webui (to store UI settings and chat history)

Step 2: Create the Docker Compose File

  1. Navigate to Services > Compose > Files in the OMV interface.
  2. Click Create, name the file deepseek.yml, and paste the following configuration:
version: "3.8"
services:
  ollama:
    image: ollama/ollama
    ports:
      - "11434:11434"
    volumes:
      - /sharedfolders/docker/ollama:/root/.ollama  # Use your shared folder path
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "8080:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - /sharedfolders/docker/open-webui:/app/backend/data
    depends_on:
      - ollama
    restart: unless-stopped

Notes:

  • Replace /sharedfolders/docker with your actual Docker shared folder path (visible under Storage > Shared Folders).
  • The ollama service hosts the AI models, while open-webui provides the chat interface.

Step 3: Deploy the Stack

  1. In the OMV Compose plugin interface, select the deepseek.yml file.
  2. Click Up to start the containers.
  3. Verify the status under Services > Compose > Containers—both ollama and open-webui should show as “Running.”

Step 4: Access Open WebUI

  1. Open http://<your-omv-ip>:8080 in a browser.
  2. Create an admin account (disable public sign-ups later via Settings > Authentication).

Step 5: Download the DeepSeek Model

  1. Option 2: Via Open WebUI:
    • Go to the Models tab.
    • Search for deepseek-coder:33b and click Download.

Option 1: Via OMV’s CLI (SSH or Services > SSH > Terminal):

docker exec -it ollama ollama pull deepseek-coder:33b

Step 6: Start Using DeepSeek

Select the deepseek-coder:33b model from the dropdown and ask questions like:

  • “Write a script to back up my OMV shared folders to an external drive.”
  • “Optimize this Python code for memory efficiency.”

Conclusion & Pro Tips

You’ve now transformed your OpenMediaVault server into a private AI workstation. To optimize your setup:

  1. Integrate with OMV Workflows:
    Use Ollama’s API (port 11434) to connect DeepSeek to automation scripts or cron jobs.
  2. Monitor Resource Usage:
    Check OMV’s System > Performance Statistics to ensure RAM/CPU stays within limits.
  3. Update Containers:
    Periodically refresh your Docker images via the Compose plugin:
    • Click Pull for the deepseek.yml stack, then Down and Up to restart.
  4. Experiment with Models:
    Try smaller models like deepseek-coder:6.7b for faster responses or quantized versions for lower RAM usage.

Final Checklist:

  • [ ] Verify shared folder permissions match Docker’s requirements.
  • [ ] Set up OMV’s firewall (Network > Firewall) to restrict external access to port 8080 if needed.
  • [ ] Explore Open WebUI’s prompt templates for coding or math-specific tasks.

With DeepSeek running locally on OMV, you’re equipped to tackle complex challenges while maintaining full ownership of your data. Happy coding!