Skip to content

설정 파일 참조

~/.mpop/config.json

실제 구조 (14노드 환경):

{
  "language": "en",
  "ollama_host": "g1",
  "ollama_model": "qwen2.5:7b",
  "llm_model": "gpt-4o-mini",
  "connection": {
    "vpn": "wire",
    "ssh_method": "vssh"
  },
  "servers": {
    "v1": {
      "ip": "10.99.85.143",
      "user": "root",
      "role": "Primary relay",
      "ssh_port": 51830,
      "public_ip": "158.247.247.115",
      "wire_ip": "10.99.85.143"
    },
    "g1": {
      "ip": "10.99.74.111",
      "user": "dragon",
      "role": "GPU server, Ollama",
      "wire_ip": "10.99.74.111"
    },
    "m1": {
      "ip": "10.99.84.191",
      "user": "dragon",
      "role": "Local dev",
      "local": true,
      "wire_ip": "10.99.84.191"
    }
  },
  "relays": ["v1", "v2", "v3", "v4"],
  "vssh_secret": "030775d9287fde298da988f319b4c57c",
  "chromadb_host": "10.99.74.111",
  "chromadb_port": 8686,
  "tailscale_prefix": "100.",
  "node": "m1"
}
필드 설명
servers 노드별 IP, user, role, wire_ip
relays 릴레이 노드 목록
vssh_secret vssh 인증용 (모든 노드 동일)
ollama_host Ollama 실행 노드 (meshdb --smart, mpop ask 등)
node 현재 로컬 노드 식별자
lan_ip LAN IP (같은 네트워크 시 우선 사용)
ssh_method vssh 또는 ssh
ssh_port SSH 포트 (기본 22)
public_ip 공인 IP (relay 등)
tailscale_ip Tailscale 사용 시 IP
local true면 로컬 노드 (exec 생략 가능)

connection.vpn 옵션

설명
wire Wire VPN (10.99.x.x) 사용. servers.ip에 wire_ip 사용
tailscale Tailscale (100.x.x.x) 사용. tailscale_prefix, tailscale_ip 사용
auto mpop config auto 시 자동 감지

vssh_secret 설정

모든 노드에 동일한 값이 있어야 합니다.

  1. config.json: vssh_secret 필드에 32자 hex 문자열
  2. 각 서버: export VSSH_SECRET="동일한값" 또는 systemd/서비스 환경에 설정
  3. 생성: openssl rand -hex 16 또는 python3 -c "import secrets; print(secrets.token_hex(16))"

불일치 시 Connection refused 또는 vssh 연결 실패.

서버별 커스텀 설정

"s1": {
  "ip": "10.99.146.69",
  "user": "dragon1",
  "role": "NAS",
  "ssh_method": "ssh",
  "ssh_port": 22
}
  • ssh_method: "ssh": vssh 대신 일반 SSH 사용 (NAS 등)
  • ssh_port: 22가 아닌 경우 지정

v1:/var/lib/mpop/alert.json (알림 설정)

중앙 서버(v1)에 저장. mpop alert setup telegram으로 설정.

{
  "telegram_token": "BOT_TOKEN",
  "telegram_chat_id": "CHAT_ID"
}
필드 설명
telegram_token Telegram Bot API 토큰
telegram_chat_id 알림 수신 채팅방 ID

알림 조건 (mpop watch --alert):

  • DOWN: 노드 오프라인
  • HIGH_LOAD: Load > 80%
  • DISK_FULL: Disk > 90%
  • ATTACK: Failed SSH > 50 (1h)

Agent 설정 (mpop-agent)

Agent는 mpop/mpop-agent 스크립트 내부에 SERVERS, SERVER_CONTEXT 하드코딩.

  • 실행: g1 등 한 노드에서 mpop-agent daemon
  • 수집 주기: 30분 (COLLECT_INTERVAL = 1800)
  • 데이터: /var/lib/mpop/history.jsonl
  • 로그: /var/log/mpop-agent.log

수정 가능 항목 (스크립트 편집):

COLLECT_INTERVAL = 1800  # 30분
MAX_HISTORY_DAYS = 7
SERVERS = { "v1": "10.99.85.143", ... }
SERVER_CONTEXT = { "g1": {"type": "gpu", "high_load_ok": True}, ... }

~/.wire/

Wire VPN 키: private.key, public.key, config.json

환경 변수

도구 변수 설명 예시/기본값
vssh VSSH_SECRET vssh 인증 (모든 노드 동일) config.json vssh_secret과 일치
meshdb MESHDB_DB ChromaDB 저장 경로 ~/.meshdb 또는 지정 경로
meshdb MESHDB_OLLAMA_URL --smart 시맨틱 검색 http://g1:11434 (ollama_host)
meshdb MESHDB_LANG 검색 언어 ko, en
Agent DASHBOARD_URL 대시보드 URL http://127.0.0.1:8800
Agent VSSH_SECRET config와 동일 mpop-agent가 vssh로 메트릭 수집
radiomcp RADIOMCP_BIN radiomcp 실행 파일 경로 ~/.mpop/radiomcp-env/bin/radiomcp
radiomcp RADIOMCP_SOURCE 설치 소스 (로컬/ PyPI) ~/RadioCli 또는 radiomcp