Initial commit: OpenMemory에서 마이그레이션한 장기기억 볼트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.obsidian/
|
||||
.trash/
|
||||
.DS_Store
|
||||
25
dev/dev-environment.md
Normal file
25
dev/dev-environment.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: 개발 환경 및 도구
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## Chrome CDP
|
||||
|
||||
해결책: 진짜 Chrome + CDP 연결 (chrome-debug fish 함수, ~/.chrome-debug-profile, 포트 9222)
|
||||
|
||||
## Python 실행 규칙
|
||||
|
||||
kaffa는 Python 스크립트를 실행할 때 반드시 uv run을 사용해야 한다. python3 직접 호출 금지. 예: uv run script.py, uv run python3 -c "..."
|
||||
|
||||
## tmux
|
||||
|
||||
tmux 3.6a
|
||||
|
||||
## tmux CSI u
|
||||
|
||||
텍스트 입력은 일반 send-keys로 가능, Enter(제출)만 CSI u 필요
|
||||
|
||||
## OpenMemory 백업
|
||||
|
||||
launchd로 매일 03:00, 15:00 자동 백업(io.kaffa.openmemory-backup.plist)
|
||||
39
infra/apisix.md
Normal file
39
infra/apisix.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: APISIX 설정 및 운영
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 아키텍처
|
||||
|
||||
구성: 고객 도메인 → Cloudflare(DNS) → SafeLine WAF → APISIX(라우팅) → 고객 오리진
|
||||
|
||||
## ironclad.it.com 라우트
|
||||
|
||||
ironclad.it.com Cloudflare DNS origin: 172.233.93.180 (osaka), zone ID: bc8761b398cc52cf731f804bd3cbf388. APISIX 라우트 ironclad-it-com → web 컨테이너 10.253.100.159:80. SSL: Google Trust Services wildcard cert (*.ironclad.it.com) in APISIX.
|
||||
|
||||
## SSL ID 규칙
|
||||
|
||||
APISIX SSL ID는 도메인 MD5 해시 앞 16자리
|
||||
|
||||
## 플러그인
|
||||
|
||||
APISIX 연동: ip-restriction + geoip-restriction 플러그인
|
||||
|
||||
## Twilio 라우트
|
||||
|
||||
APISIX 라우트 ID: twilio-jp-inouter-com
|
||||
|
||||
## Gitea POST 변환
|
||||
|
||||
Gitea가 POST 미지원(AuthenticateNotImplemented, 404)하므로 APISIX에서 POST body 파라미터를 GET query string으로 변환
|
||||
|
||||
## CrowdSec 로그 연동
|
||||
|
||||
APISIX(osaka) CrowdSec 로그 연동 현황 (2026-03-01)
|
||||
|
||||
인증: Authorization: apisix-crowdsec-log-2024
|
||||
|
||||
커스텀 파서: custom/apisix-json-logs (403 응답만 필터)
|
||||
|
||||
osaka APISIX에서 40K줄 수신, 403만 파싱 (커스텀 파서), 시나리오 매칭
|
||||
41
infra/cert-manager.md
Normal file
41
infra/cert-manager.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: cert-manager SSL 인증서 관리
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 인증
|
||||
|
||||
Bearer token is from Vault secret/infra/cert-manager's api_token
|
||||
|
||||
## 배포 엔드포인트
|
||||
|
||||
POST http://100.84.111.28:8000/certificates/deploy
|
||||
|
||||
## 도메인-인스턴스 매핑
|
||||
|
||||
cert-manager 도메인-인스턴스 매핑: config.json의 domain_instance_map으로 설정
|
||||
|
||||
## 보안/신뢰성
|
||||
|
||||
cert-manager 보안/신뢰성: Bearer 토큰 인증 (/health 제외), 도메인 입력 검증 (path traversal 차단), tenacity 재시도 (APISIX, Google EAB), Discord DM 알림 (실패 시 봇 DarkRouter가 DM), Vault 토큰 만료 대응 (auto_renew 전 config 리로드 + 403 감지). 매일 03:00 UTC 자동 갱신 (만료 30일 이내)
|
||||
|
||||
## Gitea 레포
|
||||
|
||||
Gitea repository is https://gitea.anvil.it.com/kaffa/cert-manager (private)
|
||||
|
||||
## DNS
|
||||
|
||||
DNS 전용 API Token 사용, propagation 60초 필요
|
||||
|
||||
## 관리 대상 도메인
|
||||
|
||||
관리 대상 도메인: actions.it.com, anvil.it.com, inouter.com, ironclad.it.com, keepanker.cv, servidor.it.com
|
||||
|
||||
## it.com 참고
|
||||
|
||||
it.com은 TLD(도메인 레지스트리)이며 kaffa가 소유한 zone이 아님
|
||||
|
||||
## kr 도메인
|
||||
|
||||
*.kr.inouter.com → kr1만
|
||||
25
infra/cloudflare.md
Normal file
25
infra/cloudflare.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Cloudflare 서비스
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## Zone
|
||||
|
||||
Cloudflare zone: ironclad.it.com (zone ID: bc8761b398cc52cf731f804bd3cbf388)
|
||||
|
||||
## Workers
|
||||
|
||||
Cloudflare Workers로 텔레그램 웹훅 처리
|
||||
|
||||
## R2 스토리지
|
||||
|
||||
Cloudflare R2를 스토리지로 사용
|
||||
|
||||
## Redirect Rule
|
||||
|
||||
Cloudflare Redirect Rule로 자체 도메인 리다이렉트 설정
|
||||
|
||||
## DNS 프리셋
|
||||
|
||||
프리셋: cloudflare, aws, google, github, bunnycdn
|
||||
17
infra/crowdsec-safeline.md
Normal file
17
infra/crowdsec-safeline.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: CrowdSec 및 SafeLine WAF
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## DB 테이블
|
||||
|
||||
DB 테이블은 blocklist (ip PK, reason, origin, expires_at), verified_ips, metadata
|
||||
|
||||
## 시나리오
|
||||
|
||||
시나리오: safeline/xml-injection, safeline/command-injection, custom/safeline-waf-blocked (trigger), custom/safeline-waf-repeated (leaky bucket 3+/5min)
|
||||
|
||||
## Bouncer
|
||||
|
||||
Bouncer 목록: apisix-waf-bouncer, bunny-cdn-bouncer, cs-cf-worker-bouncer
|
||||
17
infra/infra-forge.md
Normal file
17
infra/infra-forge.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Forge 인프라 에이전트
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 지식 베이스
|
||||
|
||||
infra.yaml 지식 베이스 + enrichment(IP→네트워크/인스턴스 레이블) + LLM(gemini-2.5-flash)으로 종합 보고
|
||||
|
||||
## 메시지 타입
|
||||
|
||||
메시지: INFRA_REPORT(전체보고), INFRA_QUERY(특정질문)
|
||||
|
||||
## MCP 구조
|
||||
|
||||
구조는 server.py(초기화), config.py(설정), haproxy_client.py(Runtime API), ssh_ops.py(SSH), db.py(SQLite), tools/(domains, servers, health, monitoring, configuration, certificates)로 구성되어 있다.
|
||||
33
infra/infra-hosts.md
Normal file
33
infra/infra-hosts.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: 인프라 호스트 및 네트워크
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## SSH 접속 정보
|
||||
|
||||
인프라 호스트 SSH 접속 정보: incus-jp1 (공인 42.125.196.116, Tailscale 100.109.123.1), incus-kr1 (공인 220.120.65.245, Tailscale 100.84.111.28), osaka(gw) (ssh root@100.108.39.107, 공인 172.233.93.180), Synology NAS (SSH 불가, Tailscale 100.126.100.82)
|
||||
|
||||
## 네트워크 대역
|
||||
|
||||
네트워크 대역: 100.0.0.0/8 (Tailscale VPN), 10.253.0.0/16 (incus-jp1 내부), 10.19.0.0/16 (incus-kr1 내부), 10.42.0.0/16 (k8s 파드), 10.43.0.0/16 (k8s 서비스 ClusterIP), 172.17.0.0/16 (Docker 브릿지, 무시), 192.168.9.0/24 (kaffa 로컬 LAN)
|
||||
|
||||
## IPv6 prefix
|
||||
|
||||
jp1 prefix는 2400:8905:e002:1d02
|
||||
|
||||
## web 컨테이너
|
||||
|
||||
web 컨테이너 (incus agents 프로젝트, IP 10.253.100.159): Caddy :80으로 /var/www/sites 서빙, btrfs-pool/shared-sites 볼륨을 stamp과 공유. ironclad.it.com 랜딩페이지 서빙 용도.
|
||||
|
||||
## 대시보드
|
||||
|
||||
사용 중인 대시보드는 dashboard.inouter.com(내부용)
|
||||
|
||||
## Xray
|
||||
|
||||
Xray VLESS+XHTTP 스텔스 구성
|
||||
|
||||
## 네트워크 정책
|
||||
|
||||
실사용: 국내 트래픽은 직접, 해외는 프록시, 광고는 차단
|
||||
35
infra/infra-tofu.md
Normal file
35
infra/infra-tofu.md
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: 인프라 프로비저닝 (OpenTofu)
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## OpenTofu
|
||||
|
||||
OpenTofu v1.11.5 installed at /usr/local/bin/tofu
|
||||
|
||||
## Tofu API
|
||||
|
||||
Tofu API (infra-tool 컨테이너, incus-jp1): 포트 8080 (uvicorn --port 8080). 파일 /opt/infra-tool/tofu_router.py. 엔드포인트: GET /tofu/plan, GET /tofu/state, GET /tofu/output, POST /tofu/server(provider/region/plan/label), DELETE /tofu/server/{name}, GET /tofu/plans/{provider}. 접근: ssh kaffa@100.109.123.1 → incus exec infra-tool -- bash. TF 템플릿 경로: /opt/infra/templates/{linode,vultr,alicloud,zenlayer}.tf.tpl. 참고: Forge consumer.py는 아직 tofu API를 사용하지 않고 Linode/Vultr API를 직접 호출하는 구조임.
|
||||
|
||||
## Zenlayer BM 프로비저닝
|
||||
|
||||
Zenlayer BM 프로비저닝: 직접 API → OpenTofu 전환 완료 (2026-03-04)
|
||||
|
||||
## Zenlayer OS 이미지
|
||||
|
||||
Zenlayer BM OS 이미지 매핑: zl-debian12 → 'Debian 12.x 64bit' (catalog: debian), zl-ubuntu2204 → 'Ubuntu 22.04 64bit' (catalog: ubuntu), zl-centos7 → 'CentOS 7.4 64bit' (catalog: centos)
|
||||
|
||||
## 통일 워크플로
|
||||
|
||||
전 프로바이더(Linode/Vultr/Alicloud/Zenlayer) 통일된 TF 워크플로로 동작
|
||||
|
||||
## 트래픽 모니터링 TODO
|
||||
|
||||
TODO: 트래픽 전송량 모니터링 + 자동 차단 서비스 구현 필요
|
||||
- Linode: Cloud Firewall API로 outbound DROP 적용
|
||||
- Vultr: Firewall API로 deny all 적용
|
||||
- Alibaba: ModifyInstanceNetworkSpec API로 InternetMaxBandwidthOut=0 설정
|
||||
- 흐름: 주기적 전송량 모니터링 → 임계치 도달 → 방화벽/대역폭 차단 → 고객 Telegram 알림 → 고객 동의 시 해제
|
||||
- 3개 프로바이더 모두 서버 중지 없이 네트워크만 차단 가능
|
||||
- 별도 서비스 또는 기존 consumer-service에 모니터링 컨슈머 추가 방식 검토
|
||||
17
infra/vault.md
Normal file
17
infra/vault.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Vault 시크릿 관리
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## Root Token
|
||||
|
||||
Vault root token은 만료 없음 (TTL: 0s)
|
||||
|
||||
## 접근 정책
|
||||
|
||||
접근 정책: infra-read(읽기 전용), infra-admin(읽기/쓰기)
|
||||
|
||||
## NocoDB
|
||||
|
||||
NocoDB API 토큰: Vault secret/nocodb/api-token (필드: token, url, user)
|
||||
57
openclaw/openclaw-agents.md
Normal file
57
openclaw/openclaw-agents.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: OpenClaw 에이전트 시스템
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## DarkRouter
|
||||
|
||||
DarkRouter는 kaffa의 Discord 페르소나
|
||||
|
||||
기본 Discord 수신자는 kaffa(481043020960235521)
|
||||
|
||||
## BlackSmith
|
||||
|
||||
BlackSmith는 DarkRouter의 대리인으로 하위 에이전트들과 소통하고 결과를 전달하는 오케스트레이터
|
||||
|
||||
## RabbitMQ 구조
|
||||
|
||||
OpenClaw RabbitMQ 구조: 에이전트 간 통신은 RabbitMQ 큐 기반. 관리UI localhost:15672. Gateway는 큐를 직접 안 읽으므로 브릿지 없으면 메시지 누적됨. 브릿지가 3개 큐를 스레드로 동시 consume하여 Discord DM / Telegram API로 실시간 전달.
|
||||
|
||||
## 공용 스크립트
|
||||
|
||||
공용 mq.py는 ~/.openclaw/scripts/mq.py에 위치
|
||||
|
||||
## MCP API
|
||||
|
||||
MCP API는 localhost:8766에서 운영되며 기존 8765와 분리됨
|
||||
|
||||
## OpenMemory 최적화
|
||||
|
||||
OpenMemory 최적화 (2026-03-05): workers 4→1 변경 (동시 요청 충돌로 빈 results 반환 방지), infer=False 설정 (gpt-4o-mini 팩트추출/중복판단 제거, Claude가 직접 수행). 저장 속도 13~59초→약 1초로 개선.
|
||||
|
||||
## Stamp 에이전트
|
||||
|
||||
OpenClaw Stamp 에이전트 상세: workspace ~/.openclaw/workspace-stamp/, Jinja2 템플릿(templates/dashboard.html, templates/public.html), Stitch(Google AI)로 디자인 생성 → Jinja2로 데이터 주입 → Flux 배포
|
||||
|
||||
Stamp 에이전트 통신 정리 (2026-03-08):
|
||||
- incus-jp1 호스트: Tailscale 100.109.123.1 (agents 프로젝트)
|
||||
- stamp 컨테이너 명령 실행: ssh kaffa@100.109.123.1 "incus exec stamp --project agents -- ..."
|
||||
- stamp venv Python: /opt/stamp/venv/bin/python3 (pika 포함, 시스템 python3에는 pika 없음)
|
||||
- 템플릿 경로: /opt/stamp/data/templates/public.html
|
||||
- 번역 데이터: /opt/stamp/data/translations.json
|
||||
- 생성물 경로: /shared/sites/ (btrfs-pool/shared-sites 볼륨, web 컨테이너와 공유)
|
||||
- REBUILD 명령: RabbitMQ stamp 큐에 {"type":"REBUILD"} 메시지 발행
|
||||
- RabbitMQ 접속: 100.115.154.78:5672, credentials ironclad/ironclad2026
|
||||
- 파일 푸시 예시: cat /tmp/file.html | ssh kaffa@100.109.123.1 "incus exec stamp --project agents -- tee /opt/stamp/data/templates/public.html > /dev/null"
|
||||
- web 컨테이너: 10.253.100.159:80 (Caddy), ironclad.it.com 서빙
|
||||
|
||||
## Flux 에이전트
|
||||
|
||||
OpenClaw Flux 에이전트 상세: workspace ~/.openclaw/workspace-flux/, API 키 없음 — cloudflare-api(8819), apisix-api(8820) 래퍼 경유
|
||||
|
||||
apisix-api 래퍼가 flux 컨테이너(10.253.101.106:8081)로 이전됨 (2026-03-08). Mac Docker apisix-api(localhost:8820) 제거 완료. flux consumer의 APISIX_API_URL=http://127.0.0.1:8081 (.env). apisix-api.service systemd로 gunicorn 실행.
|
||||
|
||||
## Stamp-Flux 배포 파이프라인
|
||||
|
||||
Stamp-Flux 배포 파이프라인 업데이트 (2026-03-08): volume_shared 모드 추가. stamp DEPLOY_CONFIG에 volume_shared=True, web_upstream=10.253.100.159:80 설정. Flux handle_site_deploy에서 volume_shared=True이면 SCP/nginx 스킵하고 web_upstream으로 APISIX 라우트 생성. 도메인: ironclad.it.com (public), dashboard.ironclad.it.com (internal).
|
||||
61
openclaw/openclaw-manual.md
Normal file
61
openclaw/openclaw-manual.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: OpenClaw 매뉴얼
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 도구/스킬/플러그인 시스템 (4/8)
|
||||
|
||||
[OpenClaw 매뉴얼 4/8 - 도구/스킬/플러그인 시스템]
|
||||
도구 시스템:
|
||||
- 프로필: minimal|coding|messaging|full (agents.defaults.tools 또는 per-agent)
|
||||
- exec 보안: deny(기본)|allowlist|full
|
||||
- exec 설정: backgroundMs:10000, timeoutSec:1800
|
||||
- 루프 감지: historySize:30, warningThreshold:10, criticalThreshold:20
|
||||
- 웹 도구: tools.web.search(Brave API)/tools.web.fetch
|
||||
- 미디어 도구: tools.media.audio/video (whisper, gemini 등)
|
||||
- 에이전트 간 통신: tools.agentToAgent.enabled
|
||||
- 서브에이전트: tools.subagents.model/maxConcurrent/runTimeoutSeconds
|
||||
|
||||
스킬 시스템:
|
||||
- 위치: workspace/skills/ > ~/.openclaw/skills/ > bundled (우선순위)
|
||||
- 매니페스트: skills/{name}/SKILL.md (YAML frontmatter)
|
||||
- 필드: name, description, user-invocable, metadata(requires.bins/env/config/os)
|
||||
- ClawHub: npx clawhub install/update/sync
|
||||
- 현재 IronDesk: 3/51 ready (healthcheck, skill-creator, weather)
|
||||
|
||||
플러그인 시스템:
|
||||
- 명령: openclaw plugins list|info|install|enable|disable|doctor
|
||||
- 매니페스트: openclaw.plugin.json (id, configSchema 필수)
|
||||
- 슬롯: plugins.slots.memory/contextEngine
|
||||
- 현재 loaded: device-pair, memory-core, phone-control, talk-voice, telegram (5개)
|
||||
- memory-lancedb: disabled (벡터 검색용, 임베딩 API 키 필요)
|
||||
|
||||
## 세션/채널/게이트웨이 관리 (6/8)
|
||||
|
||||
[OpenClaw 매뉴얼 6/8 - 세션/채널/게이트웨이 관리]
|
||||
세션 관리:
|
||||
- dmScope: main(기본, 전체공유)|per-peer|per-channel-peer(IronDesk 현재 설정)|per-account-channel-peer
|
||||
- 세션 키: agent:{agentId}:{mainKey} 또는 agent:{agentId}:dm:{peerId}
|
||||
- 그룹: agent:{agentId}:{channel}:group:{id}, 텔레그램 토픽: ...group:{id}:topic:{threadId}
|
||||
- 리셋: session.reset.mode=daily(atHour:4)|idle(idleMinutes:60), resetTriggers:["/new","/reset"]
|
||||
- 저장소: ~/.openclaw/agents/{agentId}/sessions/sessions.json
|
||||
- 유지보수: pruneAfter:30d, maxEntries:500, maxDiskBytes:500mb
|
||||
- 채팅 명령: /new, /reset, /status, /context list|detail, /compact
|
||||
|
||||
채널:
|
||||
- Telegram: botToken, dmPolicy(pairing|allowlist|open|disabled), streaming(off|partial|block|progress), groups, topics
|
||||
- Discord: token, guilds, channels, voice, thread bindings, reactions
|
||||
- WhatsApp: dmPolicy, allowFrom, textChunkLimit, sendReadReceipts
|
||||
- Slack: socketMode 또는 HTTP, slash commands
|
||||
- Signal, iMessage, IRC, Matrix, Mattermost, MS Teams, LINE, Google Chat 등
|
||||
|
||||
게이트웨이:
|
||||
- mode: local|remote, port:18789(기본)
|
||||
- bind: loopback|lan|tailnet|custom|auto
|
||||
- auth: none|token|password|trusted-proxy
|
||||
- Tailscale: mode=off|serve|funnel
|
||||
- 서비스: openclaw gateway install|start|stop|restart|status|uninstall
|
||||
- RPC: openclaw gateway call {method} --params {json}
|
||||
- 헬스: openclaw gateway health|probe|discover
|
||||
- HTTP 엔드포인트: chatCompletions, responses (OpenAI 호환)
|
||||
31
products/ironclad-corp.md
Normal file
31
products/ironclad-corp.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: Ironclad Corp - 회사 정보
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 회사
|
||||
|
||||
Company name is Ironclad Corp.
|
||||
|
||||
## 요금 플랜
|
||||
|
||||
요금 플랜: Basic(월 $29, 1도메인), Pro(월 $99, 5도메인), Enterprise(맞춤)
|
||||
|
||||
## 상품 라인업
|
||||
|
||||
최종 상품 라인업은 2026-03에 확정됨
|
||||
|
||||
## 부가기능
|
||||
|
||||
부가기능: WAF, DDoS 방어, SSL 자동갱신, 정적 캐싱
|
||||
|
||||
기능: DDoS 방어, Bot 탐지, Rate Limiting, 커스텀 룰, SSL 자동화, 대시보드
|
||||
|
||||
## 약관
|
||||
|
||||
약관에 OS 라이선스 고객 책임 명시
|
||||
|
||||
## 업셀
|
||||
|
||||
풀 호스팅으로의 업셀 경로로도 활용
|
||||
39
products/ironclad-hosting-products.md
Normal file
39
products/ironclad-hosting-products.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: Ironclad 호스팅 상품 구성
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 티어 구성
|
||||
|
||||
3개 티어: 기본(Standard)=Intel g8i Emerald Rapids 2~8코어 메모리비1:4, DB=Intel r8i Emerald Rapids 4~8코어 메모리비1:8, 프로(Pro)=AMD g8a Genoa 16~32코어 메모리비1:4
|
||||
|
||||
## Standard 티어
|
||||
|
||||
Standard tier: Linode g6-dedicated(JP Linux), Vultr vhp-amd(KR Linux), Alicloud c8i(Win+HK) - 1:2 ratio, 40GB ESSD
|
||||
|
||||
## Windows 상품
|
||||
|
||||
Windows 상품은 Alicloud g8a(AMD Genoa 2023, dedicated CPU)로 결정
|
||||
|
||||
## 가격 (일본)
|
||||
|
||||
일본 4코어32G 306달러
|
||||
|
||||
## 가격 (한국)
|
||||
|
||||
한국 16코어64G 775달러
|
||||
|
||||
## 카카오클라우드 비교
|
||||
|
||||
카카오클라우드: m3az(현세대 EPYC 9004) 2c/8G+Win ₩257,760 (~$184), 4c/16G+Win ₩491,760 (~$351)
|
||||
|
||||
## Alicloud HK
|
||||
|
||||
Alicloud HK는 중국 본토와 통신 양호하고 ICP 비안 불필요
|
||||
|
||||
Conducted latency test results for Alicloud HK ECS on 2026-03-03
|
||||
|
||||
## Vultr 도쿄
|
||||
|
||||
Vultr VHP 도쿄는 Zen2(EPYC Rome) 확인됨
|
||||
69
products/irondesk-tax-legal.md
Normal file
69
products/irondesk-tax-legal.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: IronDesk 세무 및 법률
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 세무 관련 정리
|
||||
|
||||
IronDesk 세무 관련 정리 (2026-03-05)
|
||||
|
||||
1. 부가가치세(VAT) 신고 의무
|
||||
- 암호화폐로 대금을 받아도 용역 공급 대가이므로 VAT 과세 대상
|
||||
- 현금화 여부와 무관하게 용역 공급 시점에 매출 발생
|
||||
- "현금화 전까지 세금 안 냄"은 양도소득세(투자) 얘기이며, 사업 매출과는 다름
|
||||
|
||||
2. 매출 환산 기준
|
||||
- 모든 입금이 USDT로 귀결되는 구조 (TON → 자동 스왑 → USDT)
|
||||
- USDT 금액 × 수령 시점 달러 환율 = 원화 매출
|
||||
- TON 시세 변동 추적 불필요, USDT 기준으로 잡으면 됨
|
||||
|
||||
3. 영세율 (외국 고객)
|
||||
- 부가가치세법 제22조: 비거주자에게 공급하는 용역은 영세율(0%) 적용 가능
|
||||
- 단, 고객이 해외 거주자임을 증빙해야 함 (계약서, 신분증, 거주지 증명 등)
|
||||
- 현재 IronDesk는 텔레그램 ID만 사용, 고객 신원 미확인 → 영세율 증빙 사실상 불가
|
||||
|
||||
4. 현실적 방침
|
||||
- 현재: 외국/한국 고객 구분 없이 VAT 10% 포함 가격으로 처리
|
||||
- 가격에 VAT 녹여서 책정하는 것이 가장 단순하고 안전
|
||||
- 매출 규모가 커지면 KYC(고객 신원 확인) 도입 + 영세율 적용 검토
|
||||
- 부가세 신고는 분기별 (1/4/7/10월), 매출 발생 분기 전에 세무사 상담
|
||||
|
||||
5. 입금 기록
|
||||
- NocoDB에 입금 내역(금액, 시점, txid, 통화) 자동 기록됨
|
||||
- 이 기록이 나중에 세무 처리 증빙 자료로 활용 가능
|
||||
|
||||
6. KYC
|
||||
- Know Your Customer, 고객 신원 확인 절차
|
||||
- 현재는 불필요, 매출 커지면 도입 검토
|
||||
|
||||
## 전자세금계산서 API
|
||||
|
||||
전자세금계산서 API 중계 사업자 조사 (2026-03-06):
|
||||
|
||||
국세청 홈택스(세무로)는 직접 API를 제공하지 않음. 전자세금계산서 발행/수정/국세청 신고는 중계 사업자 API를 통해 연동해야 함.
|
||||
|
||||
주요 중계 사업자:
|
||||
1. 팝빌 (PopBill) — 가장 많이 사용, Python SDK 있음, 국세청 신고 보장, 건당 100원대
|
||||
- API: https://www.popbill.com/Content/Link/Taxinvoice/API
|
||||
- SDK: https://www.linkhub.co.kr/api/taxinvoice
|
||||
2. 바로빌 (BaroBill) — 대량발행 강점, 정발행/역발행/위수탁 지원, 건당 100원대
|
||||
- 개발자센터: https://dev.barobill.co.kr/services/taxinvoice
|
||||
3. 홈택스빌 (HomeTaxBill) — 6개월 무료, 일 1천만건 처리 가능
|
||||
- https://www.hometaxbill.co.kr
|
||||
4. 볼타 (Bolta) — 국세청 공식 인증, UI 깔끔, 월정액
|
||||
- https://bolta.io
|
||||
5. 스마트빌 (SmartBill) — 대기업 많이 사용, 건당 과금
|
||||
- https://www.smartbill.co.kr/Svc/svc_openAPI.aspx
|
||||
|
||||
지원 기능: 전자세금계산서(과세, 영세), 전자계산서(면세), 정발행/역발행/위수탁발행, 수정세금계산서 발행, 국세청 자동 전송
|
||||
|
||||
IronClad 적합 후보: 팝빌 — 소량 발행(건당 과금), Python SDK, 수정세금계산서 API 지원으로 환불 시 자동화 가능
|
||||
|
||||
## 부가통신사업자 신고
|
||||
|
||||
부가통신사업자 신고는 자본금 1억 이하면 면제
|
||||
|
||||
## 통신판매업 신고
|
||||
|
||||
통신판매업 신고 필요 (정부24에서 온라인 신청, 1~3일 처리, 등록면허세 4~6만원)
|
||||
25
products/irondesk.md
Normal file
25
products/irondesk.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: IronDesk - AI 고객지원 에이전트
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 시스템 구축
|
||||
|
||||
IronDesk 시스템 추가 작업: IronDesk SOUL.md 다국어 응대 규칙 추가 완료, IronDesk OpenMemory에 한국어 업무 지식 60개 등록 완료, IronDesk OpenMemory 별도 인스턴스 구축 완료 (localhost:6334/8766, user_id=irondesk)
|
||||
|
||||
## TON 결제 시스템
|
||||
|
||||
IronDesk TON 결제 시스템: 지갑 UQDg17R39kHZwOnmasWzAZp6wcmrX90tbIYZ_DGH7dtc0I08 (v4r2 mainnet). 스크립트 scripts/ton-payment.py — 커맨드: pay(QR+딥링크 생성/텔레그램 전송), check(입금조회), watch(실시간 감시 데몬). launchd 서비스 com.irondesk.ton-watch로 상시 실행, 로그 ~/.openclaw/logs/ton-watch.log. 딥링크는 https://app.tonkeeper.com/transfer/ 형식(ton://은 @wallet이 USDT jetton 미지원). 트랜잭션 전송 tonapi.io POST /v2/blockchain/message. TON/USDT 풀 TVL ~$5.6M. TON 결제 가능은 별도 안내하지 않음(요청 시에만 안내).
|
||||
|
||||
## TON Wallet
|
||||
|
||||
Mnemonic은 Vault secret/irondesk/ton-wallet에 저장
|
||||
|
||||
## 일본 시장 결제 리서치
|
||||
|
||||
IronDesk 일본 시장 결제 리서치 (2025-2026): 일본 캐시리스 비율 42.8%(2024), 신용카드가 캐시리스의 90%
|
||||
|
||||
## 중국 시장 결제
|
||||
|
||||
IronDesk 중국 시장 결제: 암호화폐 전면 금지, Telegram 차단, 알리페이/위챗페이 암호화폐 거래 실시간 차단. 그러나 중국 사용자들은 VPN + P2P OTC(OKX/Binance)로 USDT 구매에 익숙. 기존 USDT(TON) 인프라로 즉시 서비스 가능. 추가 옵션: USDT-TRC20 수납 추가 고려(중국 사용자 TRC20 선호, 수수료 저렴), UnionPay 국제결제(Stripe 가능), 알리페이 해외결제(가맹점 등록 필요, 수수료 3%, 거래당 6천위안/연 6만위안 한도).
|
||||
9
services/aws-ses.md
Normal file
9
services/aws-ses.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: AWS SES 이메일
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## IAM 권한
|
||||
|
||||
AWS SES IAM 권한 설정: 최소 권한 정책은 ses:SendEmail, ses:SendRawEmail, ses:GetSendQuota, ses:GetSendStatistics. Resource는 특정 identity ARN으로 제한.
|
||||
23
services/gitea.md
Normal file
23
services/gitea.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Gitea 서버 및 CI/CD
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 서버
|
||||
|
||||
Gitea 서버는 Synology NAS에서 패키지로 운영 중.
|
||||
|
||||
Gitea 경로는 /volume1/@appstore/gitea/bin/gitea, 포트는 8418.
|
||||
|
||||
## 이미지 레지스트리
|
||||
|
||||
모든 gitea 이미지는 gitea.anvil.it.com/kaffa/ 경로
|
||||
|
||||
## Act Runner
|
||||
|
||||
Gitea Act Runner는 incus-jp1의 gitea-runner 컨테이너에서 실행 (act_runner daemon, systemd 서비스).
|
||||
|
||||
## CI/CD 배포
|
||||
|
||||
On push to main branch, uses appleboy/ssh-action to SSH into incus-kr1 and execute 'git pull && docker compose up -d --build'
|
||||
9
services/telegram-bot.md
Normal file
9
services/telegram-bot.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Telegram 봇
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## 구성
|
||||
|
||||
구성: Telegram Bot API → 웹훅 → FastAPI 서버 → DeepSeek LLM
|
||||
17
services/twilio.md
Normal file
17
services/twilio.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Twilio 음성/메시지
|
||||
updated: 2026-03-12
|
||||
source: openmemory
|
||||
---
|
||||
|
||||
## Account
|
||||
|
||||
Account SID: AC4c48cedd8879aa315feb37be88590504
|
||||
|
||||
## 웹훅
|
||||
|
||||
웹훅 URL: https://twilio.jp.inouter.com/voice/start
|
||||
|
||||
## 배달 이슈
|
||||
|
||||
Twilio는 메시지를 'delivered'로 보고하지만 실제로 수신되지 않음
|
||||
Reference in New Issue
Block a user