Troubleshooting
This page covers common problems and their solutions.
Installation Issues
Section titled “Installation Issues”orchcli init fails with “Docker not found”
Section titled “orchcli init fails with “Docker not found””Cause: Docker is not installed or not in your PATH.
Solution:
# Verify Docker is installeddocker --version
# If not installed, orchcli can auto-install it# Or install manually: https://docs.docker.com/get-docker/
# Ensure Docker daemon is runningdocker infoorchcli init hangs during repository cloning
Section titled “orchcli init hangs during repository cloning”Cause: Network issues or GitHub authentication problems.
Solution:
# Test GitHub connectivitygit ls-remote https://github.com/KubeOrch/core.git
# If using SSH, verify your keyssh -T git@github.com
# If behind a proxy, configure gitgit config --global http.proxy http://proxy:portnpm install fails for @kubeorch/cli
Section titled “npm install fails for @kubeorch/cli”Cause: Node.js version too old or npm registry issues.
Solution:
# Requires Node.js 18+node --version
# Clear npm cache and retrynpm cache clean --forcenpm install -g @kubeorch/cliStartup Issues
Section titled “Startup Issues”Services fail to start with “port already in use”
Section titled “Services fail to start with “port already in use””Cause: Another process is using port 8080 (core) or 3000 (ui).
Solution:
# Find what's using the port# Linux/macOSlsof -i :8080lsof -i :3000
# Windowsnetstat -ano | findstr :8080
# Kill the process or change the port in .envPORT=8081 orchcli startMongoDB connection refused
Section titled “MongoDB connection refused”Cause: MongoDB container hasn’t finished starting or crashed.
Solution:
# Check MongoDB container statusdocker compose ps mongo
# View MongoDB logsdocker compose logs mongo
# If the container keeps restarting, check disk spacedf -h
# Remove corrupted data and restart (WARNING: data loss)# docker compose down -v && docker compose up -dCore backend crashes on startup with “JWT_SECRET required”
Section titled “Core backend crashes on startup with “JWT_SECRET required””Cause: Missing required environment variables.
Solution:
# Generate and set required secretsexport JWT_SECRET=$(openssl rand -hex 32)export ENCRYPTION_KEY=$(openssl rand -hex 16)
# Or add to your .env fileecho "JWT_SECRET=$(openssl rand -hex 32)" >> .envecho "ENCRYPTION_KEY=$(openssl rand -hex 16)" >> .envCluster Connection Issues
Section titled “Cluster Connection Issues””Unable to connect to cluster” error
Section titled “”Unable to connect to cluster” error”Cause: Invalid credentials, network issues, or expired tokens.
Solutions:
- Verify the cluster is reachable:
kubectl cluster-info- Check token validity:
# If using service account tokenkubectl get secret <sa-secret> -o jsonpath='{.data.token}' | base64 -d- Test from the KubeOrch container:
docker compose exec core wget -qO- --no-check-certificate \ https://<cluster-api-server>:6443/healthz- For minikube users: Ensure the API server is accessible from Docker:
# Get minikube IPminikube ip
# Use the IP instead of localhost when adding the cluster in KubeOrchCluster shows “Unhealthy” status
Section titled “Cluster shows “Unhealthy” status”Cause: Health check failing (runs every 60 seconds).
Solution:
# Check cluster health manuallykubectl get nodeskubectl get componentstatuses
# Check KubeOrch logs for health check errorsdocker compose logs core | grep -i "health"Workflow Issues
Section titled “Workflow Issues”Workflow deployment fails with “namespace not found”
Section titled “Workflow deployment fails with “namespace not found””Cause: The target namespace doesn’t exist on the cluster.
Solution:
kubectl create namespace <namespace-name>Or use the default namespace when deploying workflows.
Nodes show “Error” state after deployment
Section titled “Nodes show “Error” state after deployment”Cause: Kubernetes resource creation failed.
Solution:
- Click the node to view the error details in the diagnostics panel
- Use the auto-fix suggestions if available
- Check the Kubernetes events:
kubectl get events -n <namespace> --sort-by=.metadata.creationTimestampReal-time status not updating
Section titled “Real-time status not updating”Cause: SSE connection dropped or resource watcher not running.
Solution:
- Refresh the browser page to re-establish SSE connection
- Check core logs for watcher errors:
docker compose logs core | grep -i "watcher\|sse"Build Issues
Section titled “Build Issues”Container build fails with “Nixpacks error”
Section titled “Container build fails with “Nixpacks error””Cause: Nixpacks cannot detect the project type or build configuration.
Solution:
- Ensure the Git repository has a recognized project structure
- Check that the repository URL is accessible from the KubeOrch container
- View build logs for specific errors in the Build section
Build logs not streaming
Section titled “Build logs not streaming”Cause: WebSocket connection issue.
Solution:
- Check browser console for WebSocket errors
- Ensure no proxy is blocking WebSocket connections
- If using nginx, add WebSocket support:
location /ws { proxy_pass http://core:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";}Authentication Issues
Section titled “Authentication Issues””Invalid credentials” on login
Section titled “”Invalid credentials” on login”Cause: Wrong email/password or account doesn’t exist.
Solution:
- Verify the email is correct
- If first time, register a new account at
/register - The first registered user automatically gets admin privileges
OAuth login redirects to error page
Section titled “OAuth login redirects to error page”Cause: OAuth provider misconfiguration.
Solution:
- Verify the OAuth callback URL matches your deployment URL
- Check the provider configuration in environment variables:
# Example for GitHub OAuthOAUTH_GITHUB_CLIENT_ID=your-client-idOAUTH_GITHUB_CLIENT_SECRET=your-client-secretOAUTH_GITHUB_CALLBACK_URL=https://your-domain.com/v1/api/auth/oauth/github/callback- Check core logs for OAuth errors:
docker compose logs core | grep -i "oauth"JWT token expired errors
Section titled “JWT token expired errors”Cause: Token TTL exceeded (default: 24 hours).
Solution: The UI should automatically refresh tokens. If issues persist:
- Clear browser local storage
- Log out and log back in
- Check that the
TOKEN_TTLenvironment variable is set correctly
Performance Issues
Section titled “Performance Issues”UI is slow or unresponsive
Section titled “UI is slow or unresponsive”Possible causes and solutions:
- Too many nodes on canvas: Simplify workflows or split into smaller ones
- Browser memory: Close other tabs, check browser task manager
- API latency: Check core response times in browser network tab
API responses are slow
Section titled “API responses are slow”Possible causes and solutions:
- MongoDB queries: Check MongoDB logs for slow queries
docker compose logs mongo | grep -i "slow"- Resource watcher overload: Too many clusters being monitored
- Container resources: Increase Docker memory/CPU limits
Getting Help
Section titled “Getting Help”If your issue isn’t listed here:
- Search existing issues on GitHub
- Open a new issue with:
- KubeOrch version
- Steps to reproduce
- Error logs (
docker compose logs) - Environment details (OS, Docker version, Kubernetes version)
- Join the community on Slack:
#kubeorch