Files
docker-compose/compose.yaml
Sebastian Krüger 0679b7d738 feat: add AI stack with Open WebUI, Crawl4AI, and pgvector
Created complete AI infrastructure stack at ai.pivoine.art:

**New Services:**
- **Open WebUI** (ai.pivoine.art)
  - ChatGPT-like interface for AI models
  - Multi-user chat with authentication
  - RAG (Retrieval-Augmented Generation) support
  - Document upload and processing
  - Claude API integration via Anthropic

- **PostgreSQL with pgvector** (dedicated AI database)
  - Vector similarity search for RAG
  - Separate from production databases
  - Stores embeddings and documents

- **Crawl4AI** (internal API service)
  - Web scraping optimized for LLMs
  - Converts websites to clean Markdown
  - Called by n8n workflows
  - No public exposure (internal only)

**Configuration:**
- Added 18 AI environment variables to arty.yml
- Configured email notifications via IONOS SMTP
- OpenAI API compatibility for Claude integration
- Traefik SSL termination and compression

**Backup:**
- Added 3 AI volumes to Restic backup
- Daily backup at 3 AM
- Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly

**Integration:**
- Shares falcon_network with existing services
- Ready for n8n workflow automation
- Mattermost notifications support
- Watchtower auto-updates enabled

Ready for Phase 2: GPU server integration with Ollama, Whisper, and
Stable Diffusion when IONOS A10 server is provisioned.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 22:34:46 +01:00

29 lines
583 B
YAML

name: falcon
include:
- core/compose.yaml
- awsm/compose.yaml
- sexy/compose.yaml
- mattermost/compose.yaml
- tandoor/compose.yaml
- scrapy/compose.yaml
- n8n/compose.yaml
- stash/compose.yaml
- links/compose.yaml
- vault/compose.yaml
- joplin/compose.yaml
- kit/compose.yaml
- jelly/compose.yaml
- drop/compose.yaml
- ai/compose.yaml
- restic/compose.yaml
- netdata/compose.yaml
- umami/compose.yaml
- sablier/compose.yaml
- proxy/compose.yaml
- watch/compose.yaml
networks:
compose_network:
name: ${NETWORK_NAME}
external: true