Files
homelab-configs/opencode-litellm-ready.md
jgitta 821f954200 Add Caddy reverse proxy configuration and Kopia backup documentation
- Create INFRASTRUCTURE-COMPLETE.md: Comprehensive infrastructure overview
  * Network architecture and DNS configuration
  * Storage architecture for Nextcloud (1.4TB warm storage via LVM)
  * Kopia backup setup with Backblaze B2 integration
  * Caddy reverse proxy configuration (CT 202)
  * Security configuration and capacity planning

- Add Caddy reverse proxy configurations:
  * caddy-kopia-integration.md: Integration steps for CT 202
  * caddy-kopia-reverse-proxy.md: Complete configuration reference
  * caddy/Caddyfile: Production-ready configuration
  * caddy/docker-compose.yml: Docker deployment spec

- Add Kopia backup documentation:
  * kopia-nextcloud-backblaze-setup.md: Complete Kopia setup guide
  * Backup strategy, retention policies, and restore procedures

- Update related documentation with consolidated references

Status: Infrastructure documented and ready for deployment
2026-04-27 11:46:47 -05:00

5.2 KiB

OpenCode + LiteLLM Integration - READY TO USE

Status: Fully Configured and Tested
Date: April 25, 2026
Location: Nextcloud VM (next @ 192.168.88.62)


🎉 What's Working

Configuration

  • OpenCode installed at ~/.opencode/
  • Config file created at ~/.opencode/config.json
  • Points to LiteLLM gateway: http://192.168.88.27:4000
  • Uses master key: litellm-local-key-change-in-production
  • Default model: gpt-4o

Network Connectivity

  • OpenCode can reach LiteLLM gateway (10 models currently available)
  • API routing working (receives requests correctly)
  • Authorization header accepted

Status

Test Results:
✅ Config file loaded
✅ LiteLLM gateway reachable  
✅ API calls being routed correctly
✅ OpenCode binary ready to execute

🚀 Using OpenCode

Option 1: Command Line (Direct)

ssh jgitta@192.168.88.62

# Go to a project directory
cd ~/my-project

# Run OpenCode
~/.opencode/bin/opencode

# Or with alias
opencode

Option 2: From Your Project

cd ~/my-project
~/.opencode/bin/opencode [options]

Option 3: As a Service/Background

~/.opencode/bin/opencode &

🔧 Configuration Details

File: ~/.opencode/config.json

{
  "apiProvider": "openai",           // OpenAI-compatible API
  "apiBase": "http://192.168.88.27:4000",  // LiteLLM gateway
  "apiKey": "litellm-local-key-change-in-production",  // Master key
  "model": "gpt-4o",                 // Default model
  "timeout": 600,                    // 10 min timeout
  "maxTokens": 4096,                 // Max response tokens
  "verbose": true                    // Detailed logging
}

📊 Available Models (via LiteLLM)

Currently 10 models available:

OpenAI (3)

  • gpt-4 (most capable)
  • gpt-4-turbo (faster)
  • gpt-3.5-turbo (budget)

Claude (4)

  • claude-3-opus (most capable)
  • claude-3-sonnet (balanced)
  • claude-3-haiku (lightweight)
  • claude-2.1 (legacy)

Gemini (3)

  • gemini-pro (main)
  • gemini-pro-vision (with vision)
  • gemini-1.5-pro (latest)

To expand to 16 models: Deploy the updated litellm_config_updated.yaml on docker-server


🔄 Switching Models

Quick Switch (Edit Config)

ssh jgitta@192.168.88.62

# Change model in config
sed -i 's/"model": "gpt-4o"/"model": "claude-3.5-sonnet"/' ~/.opencode/config.json

# Verify
cat ~/.opencode/config.json | jq '.model'

Via Gitea (Centralized)

Once you set up the Gitea integration:

  1. Edit in Gitea: opencode/config.json
  2. Change model line
  3. Push: git push origin main
  4. Restart OpenCode to pull latest

⚠️ Current Limitation

API Keys: Currently using placeholder keys

OPENAI_API_KEY=sk-your-actual-openai-key-here
ANTHROPIC_API_KEY=sk-ant-your-actual-claude-key-here
GOOGLE_API_KEY=your-actual-google-gemini-api-key-here

To Enable Real API Access:

  1. Get real API keys from:

  2. Update LiteLLM on docker-server:

    ssh root@192.168.88.27
    cd /opt/litellm
    nano .env
    # Add real keys
    docker-compose restart
    
  3. Test from OpenCode:

    # Will now work without 401 errors
    opencode
    

🧪 Quick Test

ssh jgitta@192.168.88.62

# Verify everything is ready
echo "=== Config ===" && \
cat ~/.opencode/config.json | jq '.model' && \
echo "=== LiteLLM Access ===" && \
curl -s http://192.168.88.27:4000/models \
  -H "Authorization: Bearer litellm-local-key-change-in-production" | jq '.data | length'

# Should show:
# "gpt-4o"
# 10

Gitea Integration (Optional)

To make OpenCode pull config from Gitea automatically:

# In docker-compose.yml
services:
  opencode:
    entrypoint: /bin/sh
    command: |
      -c "
      git clone http://192.168.88.27:3002/jgitta/homelab-configs.git /tmp/configs
      cp /tmp/configs/opencode/config.json ~/.opencode/config.json
      exec ~/.opencode/bin/opencode
      "

See: gitea-centralized-implementation.md

LiteLLM Gateway

Full details on the API gateway:

  • Setup Guide: litellm-complete-setup.md
  • Model List: litellm-models-update.md
  • Testing: litellm-testing-verification.md

🎯 Next Steps

  1. Start using OpenCode with LiteLLM backend:

    ssh jgitta@192.168.88.62
    cd ~/your-project
    ~/.opencode/bin/opencode
    
  2. Add real API keys (optional, for full functionality):

    • Update /opt/litellm/.env on docker-server
    • Restart LiteLLM: docker-compose restart
  3. Setup Gitea integration (optional, for centralized config):

    • Follow: gitea-centralized-implementation.md
  4. Monitor logs (if needed):

    # Real-time logs if running in foreground
    ~/.opencode/bin/opencode --verbose
    

Summary

You now have:

  • OpenCode installed and configured on Nextcloud VM
  • Pointing to centralized LiteLLM API gateway
  • Access to 10 AI models (can expand to 16)
  • Ready to use immediately
  • Easy config switching via Gitea (when integrated)
  • No per-VM configuration needed (handled by LiteLLM)

Start using OpenCode now! 🚀