86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
# Ollama + Cloudflare + Obsidian BMO Chatbot
|
|
|
|
**Course:** Software Engineering Concepts — Final Project
|
|
|
|
A self-hosted AI server running Ollama, tunneled through Cloudflare, and connected to Obsidian via the BMO Chatbot plugin.
|
|
|
|
---
|
|
|
|
## How It Works
|
|
|
|
```
|
|
Obsidian BMO Plugin → Cloudflare Tunnel → Ollama
|
|
```
|
|
|
|
Your prompts go from Obsidian through a secure Cloudflare tunnel to Ollama running on your local machine. No cloud AI provider needed.
|
|
|
|
---
|
|
|
|
## Dependencies
|
|
|
|
| Tool | Purpose |
|
|
|---|---|
|
|
| [Ollama](https://ollama.com) | Runs the local AI model |
|
|
| [cloudflared](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) | Exposes Ollama over a public HTTPS URL |
|
|
| [Obsidian](https://obsidian.md) | Note-taking app |
|
|
| [BMO Chatbot Plugin](https://github.com/longy2k/obsidian-bmo-chatbot) | Connects Obsidian to the Ollama API |
|
|
|
|
---
|
|
|
|
## Setup
|
|
|
|
### 1. Start Ollama
|
|
|
|
```bash
|
|
ollama pull llama3.1
|
|
ollama serve
|
|
```
|
|
|
|
### 2. Create a Cloudflare Tunnel
|
|
|
|
```bash
|
|
cloudflared tunnel login
|
|
cloudflared tunnel create ollama-tunnel
|
|
```
|
|
|
|
Edit `~/.cloudflared/config.yml`:
|
|
|
|
```yaml
|
|
tunnel: <YOUR_TUNNEL_ID>
|
|
credentials-file: /home/<USER>/.cloudflared/<YOUR_TUNNEL_ID>.json
|
|
|
|
ingress:
|
|
- hostname: ai.yourdomain.com
|
|
service: http://localhost:11434
|
|
- service: http_status:404
|
|
```
|
|
|
|
```bash
|
|
cloudflared tunnel route dns ollama-tunnel ollama.yourdomain.com
|
|
cloudflared tunnel run ollama-tunnel
|
|
```
|
|
|
|
### 3. Configure BMO Plugin
|
|
|
|
1. Obsidian → Settings → Community Plugins → install **BMO Chatbot**
|
|
2. Set **REST API URL** to `https://ai-api.fortis-scientia.com`
|
|
3. Set **Model** to `llama3.1`
|
|
4. Leave **API Key** blank
|
|
|
|
---
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
/
|
|
├── README.md
|
|
├── config/
|
|
│ └── cloudflared-config.yml
|
|
├── docs/
|
|
│ ├── part1
|
|
│ │ ├── 01-requirements.docx
|
|
│ │ └── CMSC_319-API_project_diagram.png
|
|
│ └── part2
|
|
│ └── architecture.docx
|
|
└── requirements.md
|
|
``` |