Skip to content

Kavi Infrastructure

Welcome to the internal documentation for Kavi's server infrastructure.

Internal Only

This documentation is accessible only via internal access. Do not share credentials.


🌐 Quick Access

Servers

Server IP Type Purpose Managed By
Bruno 188.34.198.57 CPX32 (4vCPU/8GB) Production Terraform + Ansible
development-vps 46.224.125.1 CX32 (4vCPU/8GB) Development Manual
Eva (Kimsufi) 144.217.76.53 Dedicated Media Server Manual

!!! danger "Decommissioned Servers" - ~~production-vps (116.203.109.220)~~ → Replaced by Bruno - ~~prod-vps-2026 (195.201.98.132)~~ → Failed attempt, delete - ~~CPX42-Kavi-Hetzner (46.224.146.107)~~ → Old Coolify, delete

Services - Bruno (188.34.198.57)

Service URL Purpose
Infisical secrets.kua.cl Secrets management
Kuanary media.kua.cl Media CDN API
imgproxy cdn.kua.cl Image optimization
Forgejo git.kua.cl Self-hosted Git
Obsidian notes.kua.cl Note taking
Docs docs.kua.cl This documentation

Services - Development VPS (46.224.125.1)

Service Purpose
Open WebUI AI Chat Interface
Ollama Local LLM Runtime

Services - Kimsufi (144.217.76.53)

Service URL Purpose
Plex plex.kua.cl Media streaming
Immich photos.kua.cl Photo management
Radarr radarr.kua.cl Movies
Sonarr sonarr.kua.cl TV Shows
Overseerr overseerr.kua.cl Requests

📊 Infrastructure Overview

┌──────────────────────────────────────────────────────────────────────────┐
│                         KAVI INFRASTRUCTURE                               │
│                    (Terraform + Ansible Managed)                          │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│  ┌──────────────┐  ┌─────────────────────┐  ┌─────────────────────┐     │
│  │   KIMSUFI    │  │   BRUNO (PROD)      │  │  DEVELOPMENT VPS    │     │
│  │   (Canada)   │  │    (Germany)        │  │    (Germany)        │     │
│  │              │  │  188.34.198.57      │  │   46.224.125.1      │     │
│  │              │  │                     │  │                     │     │
│  │  • Plex      │  │  • Traefik v3.6+    │  │  • Open WebUI       │     │
│  │  • Immich    │  │  • Infisical        │  │  • Ollama           │     │
│  │  • Radarr    │  │  • Kuanary          │  │                     │     │
│  │  • Sonarr    │  │  • imgproxy         │  │                     │     │
│  │  • Overseerr │  │  • Forgejo          │  │                     │     │
│  │  • qBittorr. │  │  • Obsidian         │  │                     │     │
│  │              │  │  • PostgreSQL       │  │                     │     │
│  │              │  │  • Redis            │  │                     │     │
│  └──────┬───────┘  └─────────┬───────────┘  └─────────────────────┘     │
│         │                    │                                           │
│         ▼                    ▼                                           │
│  ┌─────────────┐  ┌──────────────────────┐                              │
│  │ Local Disk  │  │   STORAGE            │                              │
│  │   8TB HDD   │  │                      │                              │
│  │             │  │  • Storage Box (5TB) │                              │
│  └─────────────┘  │  • S3 Object Storage │                              │
│                   └──────────────────────┘                              │
└──────────────────────────────────────────────────────────────────────────┘

🔧 Quick Commands

SSH Access

# Bruno (Production)
ssh root@188.34.198.57

# Development VPS
ssh root@46.224.125.1

# Kimsufi
ssh root@144.217.76.53

Docker

# Check containers on Bruno
ssh root@188.34.198.57 "docker ps --format 'table {{.Names}}\t{{.Status}}'"

# View Traefik logs
ssh root@188.34.198.57 "docker logs --tail 50 traefik"

# Restart a service
ssh root@188.34.198.57 "docker restart <container_name>"

Bootstrap & Onboarding

# Create a device bundle
cd ~/coder-core/.bootstrap && ./create-device-bundle.sh

# Serve bundles over Tailscale
cd ~/coder-core/.bootstrap && ./serve-via-tailscale.sh

# Setup a new device (from the new device)
curl http://<TAILSCALE_IP>:8080/device-bootstrap.age | age -d | bash

Deploy Updates

cd ~/coder-core/ansible
ansible-playbook playbooks/deploy-services.yml --limit bruno \
  -e "infisical_client_id=YOUR_ID" \
  -e "infisical_client_secret=YOUR_SECRET"

Terraform

cd ~/coder-core/terraform/hetzner
./bin/deploy-infra.sh plan   # Preview changes
./bin/deploy-infra.sh apply  # Apply changes
./bin/deploy-infra.sh output # View outputs

⚠️ Critical Version Requirements

Component Minimum Version Reason
Traefik v3.6+ Docker 29.x API compatibility
Ubuntu 24.04 LTS with Docker 29.x
Docker 29.x Ships with Ubuntu 24.04

Traefik Version

Never use Traefik < v3.6 on Ubuntu 24.04. It causes: client version 1.24 is too old. Minimum supported API version is 1.44


📁 Documentation Sections


Last updated: January 2026 - Bruno is the primary production server