Files
homelab/userbot/panel
forust d9f1c8325a
ci / lint-prettier (push) Failing after 8s
ci / lint-ruff (push) Successful in 4s
ci / lint-yaml (push) Failing after 7s
ci / lint-dockerfiles (push) Successful in 4s
ci / validate (push) Successful in 5s
deploy / redeploy (push) Failing after 0s
ci / build (push) Has been skipped
ci / deploy-userbot-panel (push) Has been skipped
feat(userbot): prereqs at startup, SPA path guard, provision lock
- ensure_prerequisites runs on startup, not per-request; kube config
  errors surface as 503 PanelError
- serialize provisioning with a lock; drop per-endpoint prereq checks
- guard SPA fallback against path traversal (relative_to)
- add backend tests for auth flow, k8s service, spa routing; ci comment
  for legacy userbot deployments
2026-09-06 20:39:12 +02:00
..

Userbot Control Panel

Локальная панель управляет userbot-инстансами напрямую через Kubernetes API. Новые аккаунты создаются в namespace userbot; существующие forust и anna остаются в default и принимаются под управление только через metadata labels.

Первый запуск

Скопировать общий Secret в новый namespace, не печатая его значения:

kubectl create namespace userbot --dry-run=client -o yaml | kubectl apply -f -
kubectl get secret userbot-common-secrets -n default -o json \
  | jq 'del(.metadata.annotations,.metadata.creationTimestamp,.metadata.resourceVersion,.metadata.uid,.metadata.managedFields) | .metadata.namespace = "userbot"' \
  | kubectl apply -f -

Затем применить манифесты:

kubectl apply -f userbot/k8s/base/panel.yaml
kubectl apply -f userbot/k8s/base/userbots.yaml
kubectl rollout status deployment/userbot-panel -n userbot

Панель доступна только через внутренний Traefik route: https://userbot.workstation.internal.

Локальная разработка

cd userbot/panel/frontend
npm install
npm run dev

Backend использует in-cluster config, а вне кластера — текущий kubeconfig:

cd userbot/panel/backend
uv run --with-requirements requirements-dev.txt \
  uvicorn app.main:app --reload --port 8080