--- title: NixMsg 系统技术栈选型(2026-09-30) type: decision permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-系统技术栈选型-2026-09-30 stable_id: bc650d0d-5329-4212-bec2-c091db37278f scope: project memory_type: decision project_id: 25464650-ed5d-440e-b362-190f2852d451 usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 status: active revision: 1 request_id: nixmsg-20260930-0505-techstack created_at: '2026-09-29T20:54:32.371365+00:00' updated_at: '2026-09-29T20:54:32.371365+00:00' tags: - nixmsg - tech-stack - decision --- 用户 2026-09-30 选定(已写入 DEVELOPMENT.md 第 2 节): - 后端 Go,HTTP 用标准库 net/http(Go 1.22 路由),不用 Gin/chi/Echo。 - 数据库 SQLite(modernc.org/sqlite 纯 Go),database/sql 手写 SQL,不用 ORM 或 sqlc。 - 不用 Redis 或其他中间件。 - 前端 Vue 3 + TypeScript + Naive UI(用户选 Naive UI,我原推荐 Element Plus);Vite 构建后 go:embed 嵌进程序,运行时不需要 Node.js。 - 部署:单文件二进制为主,同时提供 Docker 镜像(amd64、arm64)和 docker-compose 示例。 - 监控:提供 Prometheus /metrics,只在后台监听开放;共用端口时要 metrics.token。 - 证书:用户生产服务器装有 1Panel。评估结论:保留「程序读取证书文件并每小时自动重载」,1Panel 负责申请和自动续签,并勾选「推送证书到本地目录」(写入 fullchain.pem、privkey.pem)给程序读;不用 1Panel OpenResty 终止 TLS,因为它的 TCP/UDP 代理不做 TLS,裸 TCP 设备无法加密且端会被拆到两个端口。开发环境用明文或 mkcert。 按推荐定下、用户未单独表态的:mochi-mqtt v2、coder/websocket、argon2id、go.yaml.in/yaml/v3、log/slog、prometheus/client_golang、自写迁移、Vite+Vue Router+Pinia+fetch、pnpm、Node 24 LTS(仅构建)、golangci-lint/ESLint/Prettier/vue-tsc、Vitest/Playwright、Taskfile、distroless static nonroot。代码仓库和 CI 尚未讨论。