Domain Strategy: - fig.systems: Homelab services only (removed edfig.dev fallback from all services) - edfig.dev: Professional/public sites (personal site, blog) - figgy.foo: Experimental/private content (SSO protected) Removed edfig.dev Fallbacks: - Updated 22 compose files to remove || Host(...edfig.dev) pattern - All homelab services now use fig.systems only - Traefik email remains admin@edfig.dev Added Caddy Static Sites Service: - compose/services/static-sites/ with Caddy 2 - Serves three domains with different configurations: * edfig.dev (personal/professional) - Public, no SSO * blog.edfig.dev (blog) - Public, Markdown rendering, templates * figgy.foo (experimental) - SSO protected, directory browsing - Example sites with modern, responsive designs - Comprehensive README with usage examples - Auto-reload on config changes (no restarts needed) Features: - Markdown rendering (write .md, serves as HTML) - Go templates for dynamic content - Directory browsing (figgy.foo) - Automatic gzip compression - Static asset caching - Zero-downtime config reloads Updated Documentation: - README.md: Added domain strategy section, static sites in directory structure - README.md: Added static sites to service URLs table - README.md: Updated deployment instructions |
||
|---|---|---|
| .. | ||
| .env | ||
| .gitignore | ||
| compose.yaml | ||
| README.md | ||
Karakeep - Bookmark Everything App
AI-powered bookmark manager for links, notes, images, and PDFs with automatic tagging and full-text search.
Overview
Karakeep (previously known as Hoarder) is a self-hostable bookmark-everything app:
- ✅ Bookmark Everything: Links, notes, images, PDFs
- ✅ AI-Powered: Automatic tagging and summarization
- ✅ Full-Text Search: Find anything instantly with Meilisearch
- ✅ Web Archiving: Save complete webpages (full page archive)
- ✅ Browser Extensions: Chrome and Firefox support
- ✅ Mobile Apps: iOS and Android apps available
- ✅ Ollama Support: Use local AI models (no cloud required!)
- ✅ OCR: Extract text from images
- ✅ Self-Hosted: Full control of your data
Quick Start
1. Configure Secrets
cd ~/homelab/compose/services/karakeep
# Edit .env and update:
# - NEXTAUTH_SECRET (generate with: openssl rand -base64 36)
# - MEILI_MASTER_KEY (generate with: openssl rand -base64 36)
nano .env
2. Deploy
docker compose up -d
3. Access
Go to: https://links.fig.systems
First-time setup:
- Create your admin account
- Start bookmarking!
Features
Bookmark Types
1. Web Links
- Save any URL
- Automatic screenshot capture
- Full webpage archiving
- Extract title, description, favicon
- AI-generated summary and tags
2. Notes
- Quick text notes
- Markdown support
- AI-powered categorization
- Full-text searchable
3. Images
- Upload images directly
- OCR text extraction (if enabled)
- AI-based tagging
- Image search
4. PDFs
- Upload PDF documents
- Full-text indexing
- Searchable content
AI Features
Karakeep can use AI to automatically:
- Tag your bookmarks
- Summarize web content
- Extract key information
- Organize by category
Three AI options:
1. Ollama (Recommended - Local & Free)
# In .env, uncomment:
OLLAMA_BASE_URL=http://ollama:11434
INFERENCE_TEXT_MODEL=llama3.2:3b
INFERENCE_IMAGE_MODEL=llava:7b
2. OpenAI
OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.openai.com/v1
INFERENCE_TEXT_MODEL=gpt-4o-mini
3. OpenRouter (multiple providers)
OPENAI_API_KEY=sk-or-v1-...
OPENAI_BASE_URL=https://openrouter.ai/api/v1
INFERENCE_TEXT_MODEL=anthropic/claude-3.5-sonnet
Web Archiving
Karakeep saves complete web pages for offline viewing:
- Full HTML archive
- Screenshots of the page
- Extracted text for search
- Works offline - view archived pages anytime
Search
Powered by Meilisearch:
- Instant full-text search
- Fuzzy matching - finds similar terms
- Filter by type, tags, dates
- Search across titles, content, tags, notes
Browser Extensions
Install extensions:
Configure extension:
- Install extension
- Click extension icon
- Enter server URL:
https://links.fig.systems - Login with your credentials
- Save bookmarks from any page!
Mobile Apps
Download apps:
Setup:
- Install app
- Open app
- Enter server:
https://links.fig.systems - Login
- Bookmark on the go!
Configuration
Basic Settings
Disable public signups:
DISABLE_SIGNUPS=true
Set max file size (100MB default):
MAX_ASSET_SIZE_MB=100
Enable OCR for multiple languages:
OCR_LANGS=eng,spa,fra,deu
Ollama Integration
Prerequisites:
- Deploy Ollama service (see
compose/services/ollama/) - Pull models:
docker exec ollama ollama pull llama3.2:3b
Enable in Karakeep:
# In karakeep/.env
OLLAMA_BASE_URL=http://ollama:11434
INFERENCE_TEXT_MODEL=llama3.2:3b
INFERENCE_IMAGE_MODEL=llava:7b
INFERENCE_LANG=en
Restart:
docker compose restart
Recommended models:
- Text: llama3.2:3b (fast, good quality)
- Images: llava:7b (vision model)
- Advanced: llama3.3:70b (slower, better results)
Advanced Settings
Custom logging:
LOG_LEVEL=debug # Options: debug, info, warn, error
Custom data directory:
DATADIR=/custom/path
Chrome timeout (for slow sites):
# Add to compose.yaml environment section
BROWSER_TIMEOUT=60000 # 60 seconds
Usage Workflows
1. Bookmark a Website
Via Browser:
- Click Karakeep extension
- Bookmark opens automatically
- AI generates tags and summary
- Edit tags/notes if needed
- Save
Via Mobile:
- Open share menu
- Select Karakeep
- Bookmark saved
Manually:
- Open Karakeep
- Click "+" button
- Paste URL
- Click Save
2. Quick Note
- Open Karakeep
- Click "+" → "Note"
- Type your note
- AI auto-tags
- Save
3. Upload Image
- Click "+" → "Image"
- Upload image file
- OCR extracts text (if enabled)
- AI generates tags
- Save
4. Search Everything
Simple search:
- Type in search box
- Results appear instantly
Advanced search:
- Filter by type (links, notes, images)
- Filter by tags
- Filter by date range
- Sort by relevance or date
5. Organize with Tags
Auto-tags:
- AI generates tags automatically
- Based on content analysis
- Can be edited/removed
Manual tags:
- Add your own tags
- Create tag hierarchies
- Color-code tags
Tag management:
- Rename tags globally
- Merge duplicate tags
- Delete unused tags
Browser Extension Usage
Quick Bookmark
- Visit any page
- Click extension icon (or keyboard shortcut)
- Automatically saved with:
- URL
- Title
- Screenshot
- Full page archive
- AI tags and summary
Save Selection
- Highlight text on any page
- Right-click → "Save to Karakeep"
- Saves as note with source URL
Save Image
- Right-click image
- Select "Save to Karakeep"
- Image uploaded with AI tags
Mobile App Features
- Share from any app to Karakeep
- Quick capture - bookmark in seconds
- Offline access to archived content
- Search your entire collection
- Browse by tags
- Dark mode support
Data Management
Backup
Important data locations:
compose/services/karakeep/
├── data/ # Uploaded files, archives
└── meili_data/ # Search index
Backup script:
#!/bin/bash
cd ~/homelab/compose/services/karakeep
tar czf karakeep-backup-$(date +%Y%m%d).tar.gz ./data ./meili_data
Export
Export bookmarks:
- Settings → Export
- Choose format:
- JSON (complete data)
- HTML (browser-compatible)
- CSV (spreadsheet)
- Download
Import
Import from other services:
- Settings → Import
- Select source:
- Browser bookmarks (HTML)
- Raindrop.io
- Omnivore
- Instapaper
- Upload file
- Karakeep processes and imports
Troubleshooting
Karakeep won't start
Check logs:
docker logs karakeep
docker logs karakeep-chrome
docker logs karakeep-meilisearch
Common issues:
- Missing
NEXTAUTH_SECRETin.env - Missing
MEILI_MASTER_KEYin.env - Services not on
karakeep_internalnetwork
Bookmarks not saving
Check chrome service:
docker logs karakeep-chrome
Verify chrome is accessible:
docker exec karakeep curl http://karakeep-chrome:9222
Increase timeout:
# Add to .env
BROWSER_TIMEOUT=60000
Search not working
Rebuild search index:
# Stop services
docker compose down
# Remove search data
rm -rf ./meili_data
# Restart (index rebuilds automatically)
docker compose up -d
Check Meilisearch:
docker logs karakeep-meilisearch
AI features not working
With Ollama:
# Verify Ollama is running
docker ps | grep ollama
# Test Ollama connection
docker exec karakeep curl http://ollama:11434
# Check models are pulled
docker exec ollama ollama list
With OpenAI/OpenRouter:
- Verify API key is correct
- Check API balance/credits
- Review logs for error messages
Extension can't connect
Verify server URL:
- Must be
https://links.fig.systems - Not
http://orlocalhost
Check CORS:
# Add to .env if needed
CORS_ALLOW_ORIGINS=https://links.fig.systems
Clear extension data:
- Extension settings
- Logout
- Clear extension storage
- Login again
Mobile app issues
Can't connect:
- Use full HTTPS URL
- Ensure server is accessible externally
- Check firewall rules
Slow performance:
- Check network speed
- Reduce image quality in app settings
- Enable "Low data mode"
Performance Optimization
For Large Collections (10,000+ bookmarks)
Increase Meilisearch RAM:
# In compose.yaml, add to karakeep-meilisearch:
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
Optimize search index:
# In .env
MEILI_MAX_INDEXING_MEMORY=1048576000 # 1GB
For Slow Archiving
Increase Chrome resources:
# In compose.yaml, add to karakeep-chrome:
deploy:
resources:
limits:
memory: 1G
cpus: '1.0'
Adjust timeouts:
BROWSER_TIMEOUT=90000 # 90 seconds
Database Maintenance
Vacuum (compact) database:
# Karakeep uses SQLite by default
docker exec karakeep sqlite3 /data/karakeep.db "VACUUM;"
Comparison with Linkwarden
| Feature | Karakeep | Linkwarden |
|---|---|---|
| Bookmark Types | Links, Notes, Images, PDFs | Links only |
| AI Tagging | Yes (Ollama/OpenAI) | No |
| Web Archiving | Full page + Screenshot | Screenshot only |
| Search | Meilisearch (fuzzy) | Meilisearch |
| Browser Extension | Yes | Yes |
| Mobile Apps | iOS + Android | No official apps |
| OCR | Yes | No |
| Collaboration | Personal focus | Team features |
| Database | SQLite | PostgreSQL |
Why Karakeep?
- More bookmark types
- AI-powered organization
- Better mobile support
- Lighter resource usage (SQLite vs PostgreSQL)
- Active development
Resources
Next Steps
- ✅ Deploy Karakeep
- ✅ Create admin account
- ✅ Install browser extension
- ✅ Install mobile app
- ⬜ Deploy Ollama for AI features
- ⬜ Import existing bookmarks
- ⬜ Configure AI models
- ⬜ Set up automated backups
Bookmark everything, find anything! 🔖