--- title: MemRelay System Architecture – Components and Deployment Topology type: curated permalink: main/projects/ebb54e31-5afe-4f9b-a291-4e3b03ca3b21/curated/development/mem-relay-system-architecture-components-and-deployment-topology stable_id: 6b2d8349-7a95-4a18-8e4b-20dd2ab95e2f scope: project project_id: ebb54e31-5afe-4f9b-a291-4e3b03ca3b21 workspace_type: development usage_profile_id: null preference_context: development document_type: architecture revision: 1 source_memory_ids: [] source_checkpoint_ids: [] source_file_ids: [] source_git_commit: null source_git_commits: [] source_agent_sync_ids: [] model_connection: Sub2API model_name: git-restore source_count: 20 source_revisions: memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8: '1' memory:b9a463d1-5659-4baa-aaf4-6464661ef074: '1' memory:b3fc5d7e-f1d7-4a63-860b-37f9f35cb136: '1' memory:23bcc4c0-4992-41d6-b70e-210937a76a0f: '1' memory:9092af09-6a60-404e-88ad-3344f2fdf0ca: '1' memory:c16b8950-20d2-4d3d-87b3-0a8bfd20790d: '1' memory:109e5244-ad26-4650-8a49-e6cebbabe7d7: '1' source_dispositions: processed: 20 unchanged: 0 unsupported: 0 skipped: 0 cited_source_ids: - curated_baseline:6b2d8349-7a95-4a18-8e4b-20dd2ab95e2f - curated_baseline:eebf38d3-36dc-4b57-b8d7-1f2c8be2f234 - curated_baseline:b54bd6b0-bbdd-4ab2-92d3-a4f5d58e8f83 - curated_baseline:47740b04-4f30-47c0-a68c-8fe5e19133e7 - curated_baseline:d459e837-b05c-4f31-9b05-7f9d09c71f25 - global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316 - global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d - global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e - global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5 - global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823 - memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8 - memory:23bcc4c0-4992-41d6-b70e-210937a76a0f - memory:b9a463d1-5659-4baa-aaf4-6464661ef074 - memory:9092af09-6a60-404e-88ad-3344f2fdf0ca - memory:c16b8950-20d2-4d3d-87b3-0a8bfd20790d - memory:109e5244-ad26-4650-8a49-e6cebbabe7d7 - memory:b3fc5d7e-f1d7-4a63-860b-37f9f35cb136 job_cited_source_ids: - curated_baseline:6b2d8349-7a95-4a18-8e4b-20dd2ab95e2f conflicts: [] supersedes: [] preferences: [] source_cursor: 0 source_hash: cd96d5b27b5d1ef34ff30350e40c12b9d9b7e389c5813755521578d1f2597d9c prompt_version: 2026-08-12.3 schema_version: '3' curation_job_id: null created_at: '2026-08-08T09:52:36.631067+00:00' updated_at: '2026-09-23T15:13:21.395620+00:00' tags: - architecture restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 --- # MemRelay 架构概览 ## 高层技术栈 | 层级 | 技术 | |------|------| | **后端** | Python 3.12, FastAPI, FastMCP, SQLAlchemy, SQLite | | **前端** | Vue 3, TypeScript, Vite, Element Plus, Vue I18n | | **记忆引擎** | Basic Memory v0.22.1 (Markdown 存储), MiniLM 语义搜索 (降级为全文搜索) | | **密码库** | Vaultwarden (兼容 Bitwarden) 带进程内快照 | | **代理 / CDN** | OpenResty (HTTPS 终结, 静态资源缓存) | | **容器化** | Docker Desktop (Windows) & Docker‑Compose (Linux) – 支持 `amd64` 与 `arm64` | ## 部署拓扑 - **公网入口**: `https://mr.asio.asia` – OpenResty 终止 TLS 并转发至 FRPS。 - **应用主机**: Armbian ARM64 (`192.168.32.100`) 监听端口 `3003`。 - **Compose 目录**: `/opt/1panel/docker/compose/memrelay`。 - **持久化存储**: `/data/memrelay-stack`(MemRelay 与 Basic Memory 共享挂载)。 - **FRP 栈**: OpenWrt 上的 FRPC `0.70.1` 使用 WebSocket 连接 FRPS;`MemRelay_http` 将 `mr.asio.asia` 映射到 `192.168.32.100:3003`。 - **会话 Cookie**: 根据请求协议动态决定 `Secure` 标记,局域网 HTTP 与公网 HTTPS 均可使用。 - **缓存策略**: OpenResty 对登录、API、MCP、密码库、上传下载等端点不启用代理缓存;静态资源使用 ETag 与浏览器缓存。 - **备份**: `/data/memrelay-backups/memrelay-20260805T234836Z.tar.gz`。 - **健康检查**: 内网、公网均验证登录、95 个 MCP 工具、Basic Memory、Vaultwarden 与数据迁移均正常。