🎯 Goal: Export your best OpenWebUI conversations to EdukaAI for LLM fine-tuning with just one click.
New to OpenWebUI? Follow these steps to get it up and running first.
Use this if you:
- Don't have Ollama installed
- Plan to use OpenAI, Anthropic, or other cloud APIs
- Want to test OpenWebUI without local models
This runs OpenWebUI without any local LLM connection. You'll configure cloud API providers separately in the UI settings.
-
Windows/Mac: Download Docker Desktop
- Run the installer
- Restart your computer if prompted
- Open Docker Desktop and wait for it to start
-
Linux: Run in terminal:
# Ubuntu/Debian curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER newgrp docker
Open your terminal/command prompt and run:
# Basic installation (works with Ollama locally)
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main- Wait 30-60 seconds for the container to start
- Open your browser to: http://localhost:3000
- Create your first admin account (this becomes the admin user)
- You're in! 🎉
Already have Ollama running on localhost:11434? This section is for you!
This is the most common scenario - you've been using Ollama in your terminal, and now you want to add OpenWebUI's nice interface on top of it.
First, make sure Ollama is actually running:
# Check if Ollama responds
curl http://localhost:11434/api/tags
# Or just check if the process is running
ollama listYou should see a list of your downloaded models. If not, start Ollama:
ollama serveThe connection method differs by operating system:
🖥️ Windows & Mac (Easiest)
Docker Desktop automatically handles localhost access via host.docker.internal:
# Run with Ollama connection
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main🐧 Linux (Requires Extra Step)
On Linux, host.docker.internal doesn't work by default. You have two options:
Option A: Use host network mode (Simplest)
docker run -d --network=host \
-e OLLAMA_BASE_URL=http://localhost:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:mainAccess at: http://localhost:8080 (not 3000!)
Option B: Find your host IP (More secure)
# Find your host's IP address
ip addr show | grep "inet " | head -1
# Usually something like: 192.168.1.100
# Use that IP in the connection string
docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=http://192.168.1.100:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main🐳 Docker Compose (Recommended for Linux)
Create a docker-compose.yml file:
version: '3.8'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
open-webui:Run it:
docker-compose up -d- Open http://localhost:3000
- Create/login to your account
- Look at the top-left dropdown (model selector)
- You should see your Ollama models listed!
❌ "Connection refused" or "Cannot connect to Ollama"
Solutions:
-
Check Ollama is running:
curl http://localhost:11434/api/tags
-
For Linux - Ollama might not be listening on all interfaces:
# Check Ollama's bind address sudo netstat -tlnp | grep 11434 # If it shows 127.0.0.1:11434, that's good # If no output, Ollama isn't running
-
Make Ollama listen on all interfaces (Linux only):
# Stop Ollama sudo systemctl stop ollama # Start with explicit host binding OLLAMA_HOST=0.0.0.0:11434 ollama serve # Or edit the systemd service: sudo systemctl edit ollama # Add: # [Service] # Environment="OLLAMA_HOST=0.0.0.0:11434"
-
Check firewall (Linux):
sudo ufw allow 11434/tcp # or sudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT
❌ "No models found"
You need to download models first:
ollama pull llama3.2
ollama pull mistral
# etc.❌ "Connection timeout"
If using IP address method on Linux, the IP might have changed:
- Get your current IP:
ip addr show | grep inet - Recreate the container with the new IP
- Or use host network mode instead
Don't want to use Ollama? You can use OpenWebUI with OpenAI, Anthropic, or other APIs:
# Basic run without Ollama
docker run -d -p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:mainThen configure API connections in Settings → Connections.
For developers who prefer running it directly:
# Install with pip
pip install open-webui
# Start the server
open-webui serve
# Or with custom port
open-webui serve --port 3000Requirements:
- Python 3.11 or higher
- 4GB RAM minimum (8GB recommended)
Want to run it on a server or VPS?
# On your server
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
# Access via server IP: http://your-server-ip:3000Important for remote access:
- Set up SSL/HTTPS for security
- Configure authentication properly
- Check firewall rules for port 3000
✅ OpenWebUI is working if:
- You can access http://localhost:3000
- You see the login/create account page
- After logging in, you see the chat interface
Need Help?
Before we install the plugin, make sure you have:
-
OpenWebUI installed and running (version 0.3.0 or higher)
- Access it at
http://localhost:3000(or your custom URL) - Not installed yet? See the section above ☝️
- Access it at
-
EdukaAI installed and running (version 0.2.1 or higher)
- Should be running at
http://localhost:3030 - Not installed yet? Install EdukaAI first
- Should be running at
localhost:3030 to reach EdukaAI. The plugin is pre-configured with http://host.docker.internal:3030 which works for macOS/Windows. Linux users may need to use their host IP instead - we'll cover this in the configuration step.
We offer 3 ways to install the plugin. Choose the one that works best for you:
| Method | Difficulty | Best For |
|---|---|---|
| Method 1: GitHub URL ⭐ | ⭐ Easy | Most users - direct from GitHub |
| Method 2: Community Hub | ⭐ Easy | If listed on openwebui.com |
| Method 3: Manual Install | ⭐⭐ Medium | Troubleshooting or offline use |
This is the easiest and fastest way to install the plugin directly from our GitHub repository.
-
Navigate to your OpenWebUI instance
- Usually:
http://localhost:3000 - Or your custom domain
- Usually:
-
Login with your admin/user account
- Look at the left sidebar
- Click on "Workspace" (🏠 icon)
- In the submenu, click "Functions"
You should see a page that says "Functions" at the top with a list (possibly empty) below.
- Click the "+" button or "Create Function" button (usually in the top-right)
- A dialog will appear asking for the function details
- Look for the "Import from URL" option
- Paste this URL:
Or the raw file URL:
https://github.com/ElGap/edukaai-openwebuihttps://raw.githubusercontent.com/ElGap/edukaai-openwebui/main/edukaai_openwebui.py - Click "Import" or "Load"
💡 Tip: If the import button is greyed out, try the raw GitHub URL instead.
Take a quick look to verify it says:
title: EdukaAI Exportauthor: EdukaAI- The code looks legitimate (no suspicious network calls to unknown servers)
Click "Save" when you're ready.
- You'll be back at the Functions list
- Find "EdukaAI Export" in the list
- Toggle the switch to "ON" (it should turn blue/green)
-
Click the ⚙️ gear icon next to the toggle
-
A settings panel will open with these options:
Setting Default Value What to Enter EDUKAAI_ENDPOINThttp://host.docker.internal:3030Docker + macOS/Windows: Keep default ✅
Docker + Linux: Use your host IP (e.g.,http://172.17.0.1:3030)
Native install: Usehttp://localhost:3030EDUKAAI_DATASET_ID(empty) Optional - specific dataset ID to save to DEFAULT_CATEGORYgeneralDefault category (coding, explanation, writing, etc.) DEFAULT_QUALITY4Default quality rating 1-5 (4 = Very Good) AUTO_APPROVEfalseSet to trueto auto-approve in EdukaAI -
Click "Save" when done
💡 Tip: Find your Linux host IP with: ip addr show docker0 | grep inet
🎉 Congratulations! The plugin is now installed and ready to use.
Skip to Using the Plugin
If the plugin is listed on the OpenWebUI Community, you can install it directly from there.
- Go to openwebui.com/functions
- Search for "EdukaAI" or "edukaai-export"
- Click on the "EdukaAI Export" function
- Click the "Get" or "Install" button
- A dialog will appear
- Enter your OpenWebUI URL:
- Default:
http://localhost:3000 - Or your custom URL
- Default:
- Click "Import to Open WebUI"
You'll be redirected to your OpenWebUI instance:
- Review the code (security check)
- Click "Save"
- Enable the toggle
- Configure settings (see Step 7 in Method 1)
🎉 Done!
Skip to Using the Plugin
Use this method if the URL import isn't working or you're offline.
Option A: From GitHub Website
- Visit:
https://github.com/ElGap/edukaai-openwebui - Click on
edukaai_openwebui.py - Click the "Raw" button
- Select all the text (Ctrl+A / Cmd+A)
- Copy it (Ctrl+C / Cmd+C)
Option B: Using curl (Command Line)
curl -o edukaai_openwebui.py https://raw.githubusercontent.com/ElGap/edukaai-openwebui/main/edukaai_openwebui.py- Go to OpenWebUI → Workspace → Functions
- Click "Create Function"
- A code editor will appear
- Clear the editor (select all, delete)
- Paste the copied code (Ctrl+V / Cmd+V)
- You should see the complete plugin code
- Give it a name: "EdukaAI Export"
- Click "Save"
- Toggle it ON
- Configure settings (see Step 7 in Method 1)
🎉 Installation complete!
Now that the plugin is installed, let's export your first conversation!
- Go to OpenWebUI's main chat page
- Select any model
- Have a conversation (ask something, get a response)
- Find a good assistant response you want to save
- Look under the message for action buttons
- Click the 📚 Export to EdukaAI button
- It looks like a book or export icon
- If you don't see it, make sure the plugin is enabled
- The export happens immediately using your pre-configured settings
- You'll see a toast notification:
- Green: ✅ Exported to EdukaAI! Sample saved.
- Red: ❌ Connection error (check EdukaAI is running)
- Yellow:
⚠️ Duplicate skipped
- Open EdukaAI at
http://localhost:3030 - Go to your dataset (or "Default Dataset")
- You'll see your exported conversation!
- Review, edit, or export it to training formats (Alpaca, ShareGPT, etc.)
💡 Tip: The export uses your default category and quality rating from the plugin settings. You can edit these in EdukaAI after export if needed!
Problem: Plugin can't reach EdukaAI server
Solution:
-
Check EdukaAI is running:
curl http://localhost:3030/api/health # or start it: npx @elgap/edukaai -
For Docker Users - Check your endpoint URL:
macOS/Windows: Should use
http://host.docker.internal:3030(default)# Test from inside container docker exec open-webui curl http://host.docker.internal:3030/api/health
Linux: Must use host IP, not
host.docker.internal# Find your host IP ip addr show docker0 | grep inet # Usually: 172.17.0.1 # Update plugin setting: http://172.17.0.1:3030
-
Test the connection manually:
# From inside OpenWebUI container docker exec -it open-webui /bin/sh curl http://host.docker.internal:3030/api/capture -X POST \ -H "Content-Type: application/json" \ -d '{"source":"test","records":[]}' exit
Problem: Clicked export without having a back-and-forth conversation
Solution: Make sure you have at least one user message AND one assistant response
Problem: Can't see the export button under messages
Solutions:
- Check plugin is enabled (toggle is ON)
- Refresh the page (F5)
- Try a different browser
- Check browser console for JavaScript errors
Problem: Function import failed
Solutions:
- Try the raw GitHub URL instead of the repo URL
- Check your OpenWebUI version is 0.3.0 or higher
- Use Method 3 (Manual Copy) as fallback
Problem: Plugin shows as enabled but nothing happens when clicking export
Solutions:
- Check EdukaAI is running and accessible
- Verify settings in the gear icon (especially
EDUKAAI_ENDPOINT) - Check browser's Network tab for API errors
- Try restarting OpenWebUI
- Export selectively: Only save the best conversations
- Configure defaults wisely: Set
DEFAULT_CATEGORYandDEFAULT_QUALITYin the plugin settings to match your most common use case - Curate in EdukaAI: The export uses default settings, but you can edit category, quality, and add tags in EdukaAI after export
- Rate honestly: Set default quality to 4 or 5 in plugin settings, then adjust individual samples in EdukaAI if needed
- Export in batches: Don't export everything at once - curate as you go
Currently, the plugin works via mouse click. Future versions may add keyboard shortcuts.
The plugin captures the last message pair. To export older exchanges:
- Click the regenerate button on that specific response
- Then click export
If you share files in the conversation:
- The plugin automatically captures file names and content
- In EdukaAI, you'll see the files in the
context.filesfield - Great for code review datasets!
If you work with different types of conversations:
- You can install the plugin multiple times with different default categories
- Or export everything with one default category and organize in EdukaAI later
Now that you have the plugin working:
- Explore EdukaAI: Learn how to organize, filter, and export your dataset
- Set Quality Standards: Decide what makes a 5-star training example for your use case
- Build Your Dataset: Export 50-100 high-quality examples
- Fine-Tune: Use EdukaAI's export features to create training data for your LLM
Stuck? Here are your options:
- Check this guide again - Most issues are covered in Troubleshooting
- OpenWebUI Discord -
https://discord.gg/5rJgQTnV4s - EdukaAI Issues -
https://github.com/ElGap/edukaai/issues - This Plugin's Issues -
https://github.com/ElGap/edukaai-openwebui/issues
You now have a seamless workflow:
- Chat in OpenWebUI 💬
- Export great conversations with one click 📤
- Build a curated dataset in EdukaAI 📊
- Train better AI models! 🤖
Happy training data collection! 🚀
Last updated: 2026-03-19
Plugin version: 0.1.0-beta.0