🎃 Add a Helm chart for self-hosted Kubernetes installs
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- docker, helm, kubernetes, postgresql, redis, typescript
- Lĩnh vực
- devops, infrastructure
Hướng nghiên cứu
Start with docker-compose.yml:36–110 and Dockerfile:158–175 to map the app’s environment, ports, and runtime, then read the secret validation and health endpoint references. Build and validate the chart under deploy/helm/anythingmcp with helm lint and helm template, then test installation and upgrade on kind or minikube. Done means the acceptance criteria pass, including stable generated secrets and the Helm documentation.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Part of the October Challenge #846.
Why
Companies that self-host AnythingMCP increasingly run everything on Kubernetes (AKS, EKS, OpenShift, k3s) and do not want to translate docker-compose.yml by hand. A maintained chart in the repo is the standard entry point (n8n, Langfuse, Flowise and Dify all ship one). This issue is the first step: a single-replica chart that mirrors the Compose stack and passes helm lint.
Self-hosted vs Cloud
- Self-hosted: this is the whole point. Works for Community and Business; the license key is entered in the UI as today, nothing edition-specific in the chart.
- Cloud (
DEPLOYMENT_MODE=cloud): not affected. AnythingMCP Cloud is deployed bydocker-compose.cloud.yml+deploy/cloud/; do not change those files, and the chart must not exposeDEPLOYMENT_MODEas a value (it is our operating mode, not a user option). - Who can use it: cluster operators. No app roles involved; the first user who registers becomes
ADMINas with Compose.
What to build
deploy/helm/anythingmcp/ with Chart.yaml (apiVersion v2, appVersion = root package.json version, currently 0.18.0), values.yaml, templates/, README.md.
- App — one
Deploymentfromhelpcodeai/anythingmcp:<appVersion>running the default./start.sh(backend + frontend in one container, migrations on start).replicas: 1andstrategy: Recreatein this first version (see Out of scope for why). Ports3000(http) and4000(api), oneService. - Env — everything the
appservice sets indocker-compose.yml:50–99, as values. Required secrets in a chart-managedSecretorexistingSecret:JWT_SECRET,ENCRYPTION_KEY(min. 32 chars; must never change after install),MCP_API_KEY/MCP_BEARER_TOKEN, DB password. Do not ship defaults: the backend refuses placeholder values at startup (secrets.util.ts:41); userequiredin templates, or generate withrandAlphaNumand keep them stable across upgrades withlookup. - PostgreSQL —
postgresql.enabled: truedeploys a simpleStatefulSetofpostgres:17-alpinewith a PVC (no third-party subchart).externalDatabase.url/existingSecretwhenenabled: false→ buildsDATABASE_URL. - Redis — optional (
redis.enabled: falseby default, like Compose); when on, a smallredis:7-alpineDeployment andREDIS_URLset.externalRedis.urlalternative. - MOTIS — optional (
motis.enabled: false); when on, also addmotistoSSRF_ALLOWED_HOSTSand setMOTIS_INTERNAL_URL(docker-compose.yml:77–85,:135). - Ingress — optional,
className,hosts,tls. Route the backend paths to port 4000 and everything else to 3000. Take the list from therewrites()inpackages/frontend/next.config.ts:19(the Cloud Caddyfile says it must match it):/api,/health,/mcp,/.well-known,/auth,/sso,/authorize,/callback,/token,/register,/userinfo, plus/revokefromsetup.sh:463. (setup.sh:455–467is older and misses/ssoand/userinfo.) Document nginx annotations for SSE/streaming (proxy-buffering: off, longproxy-read-timeout). SetSERVER_URL,FRONTEND_URL,CORS_ORIGIN,NEXT_PUBLIC_API_URLfrom the first host. - Probes —
startupProbeHTTPGET /healthon 4000 with a generousfailureThreshold(migrations run first);readinessProbeGET /health;livenessProbetcpSocket 4000, not/health(it checks the database, and a DB blip must not restart the app —health.controller.ts:74). securityContext: non-root (the image runs asappuser,Dockerfile:158),resources,nodeSelector/tolerations/affinity,podAnnotations,serviceAccount.- CI (optional but welcome): a job in
.github/workflows/ci.ymlrunninghelm lintandhelm template(orchart-testingct lint).
Where to look
docker-compose.yml:36–110(app),:113(postgres),:135(motis),:156(commented redis) — source of truth for services and env.start.sh:57,:64—frontend/allmodes;run_migrationsat the top.Dockerfile:158–175— user, ports, healthcheck, CMD.packages/backend/src/health/health.controller.ts:74—/health(DB, Redis, heap).packages/backend/src/common/secrets.util.ts:41— startup secret validation.setup.sh:455— path routing the Compose Caddy setup uses.deploy/cloud/Caddyfile:76–123— explains why a split frontend/backend needs explicit backend routes (Next rewrites are baked withlocalhost:4000).docs/deployment.md:159— production deployment docs to extend.
Acceptance criteria
-
helm lint deploy/helm/anythingmcppasses with default values and withpostgresql.enabled=false,externalDatabase.url=…. -
helm installon kind/minikube: pod becomes Ready, UI reachable via port-forward/Ingress, registration works,/mcp/<serverId>answers with an API key. Put the exact commands you ran in the PR. -
helm upgradekeeps generated secrets (no newENCRYPTION_KEY, which would make stored credentials unreadable). - No secret value appears in
helm templateoutput unless the user passed it. - Docs:
deploy/helm/anythingmcp/README.md(values table) + a "Kubernetes (Helm)" section indocs/deployment.md.
Out of scope
- Multiple replicas / HPA / split frontend+backend pods. Needs Redis for shared rate limits,
MCP_STATEFUL_SESSIONSoff or sticky sessions (mcp-session.manager.ts:67), and migrations moved to a Job — follow-up issue. - Publishing the chart to a Helm repo / OCI registry, Artifact Hub listing.
- Operator, Kustomize, Terraform.
- Prometheus
ServiceMonitor(comes after the metrics endpoint in #854).
Size
L (several days, may be split: chart + lint first, Ingress/MOTIS second).
How to claim
Comment "I'd like to work on this" and we'll assign you. Rules in #846.
- Ngôn ngữ chính
- TypeScript
- Star
- 856
- Fork
- 82
- Merge trung bình
- 6 giờ 44 phút
- Pull request đã merge (30 ngày)
- 181
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của HelpCode-ai/anythingmcp
-
Docs: document all SMTP_* and other undocumented env vars for self-hostingCó thể đã có người làm @notlakshitha đã nhận 5 ngày trước. Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
HelpCode-ai/anythingmcp#1049 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue hacktoberfest
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 70/100
HelpCode-ai/anythingmcp#996 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue hacktoberfest
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 72/100
HelpCode-ai/anythingmcp#995 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement good first issue hacktoberfest help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
HelpCode-ai/anythingmcp#982 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Workspace memory: personal and organization memory for AI clientsCó thể đã có người làm @helpcodeai đã nhận hôm nay. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
HelpCode-ai/anythingmcp#1151 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của HelpCode-ai/anythingmcp
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
simkimsia/netlify-axi#19 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
subhranshudash13-dotcom/Contribo#74 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement frontend good first issue Stellar Wave trivial
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Godgift-care/sci-healthcare-frontend#166 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
backend good first issue security Stellar Wave trivial
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Godgift-care/sci-healthcare-backend#171 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày