원클릭으로
zeabur-port-mismatch
Use when proxy shows dial tcp timeout or i/o timeout. Use when service port doesn't match proxy expectation.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when proxy shows dial tcp timeout or i/o timeout. Use when service port doesn't match proxy expectation.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when scaling a dedicated Kubernetes cluster (Linode LKE or AWS EKS) on Zeabur — listing node pools, changing node counts, or adding/removing node pools. Use when user says "scale my cluster", "add nodes", "remove nodes", "resize node pool", "加節點", "擴容", "縮容". Do NOT use for renting new servers (use zeabur-server-rent) or for single-VM dedicated servers (they have no node pools).
Use when debugging services on a user's dedicated server via SSH. Use when needing to run a command on the server, inspect pods, check container logs, view k8s resources, or run kubectl commands. Use when "service exec" is insufficient and you need server-level access. Use when user says "check my server", "run X on my server", "debug pod", "kubectl", "SSH into server", "check k8s", or "inspect cluster".
Use when renting a new dedicated server. Use when user wants to buy or provision a server. Supports discounted VPS from Linode, DigitalOcean, Hetzner, AWS Lightsail, GCP, Tencent Cloud (騰訊雲), Alibaba Cloud (阿里雲), and Volcano Engine (火山引擎).
Use when managing AI Hub account, API keys, balance, usage, or API endpoints. Use when user says "AI Hub", "add AI credits", "create API key", "check AI usage", "auto-recharge", "AI Hub endpoint", "AI Hub base URL", "how to use AI Hub API", "LLM API", "AI API", "OpenAI compatible", "Anthropic API", "GPT", "Claude", "Gemini", "DeepSeek", or "Grok" in the context of Zeabur.
Use when logging in, logging out, or checking Zeabur auth status. Use when user says "login", "log in", "登入", "logout", "log out", "登出", "auth status", "am I logged in", or "who am I".
Use when deploying a database to Zeabur. Use when user needs MySQL, PostgreSQL, MongoDB, or Redis. Use when user says "I need a database", "add database", "deploy postgres", "set up MySQL", "add Redis", "add MongoDB", or "connect to database". Also use when user mentions data persistence issues like "data lost after restart", "data not saved", "data disappears", "need persistent storage for data", or "how to persist data". Also use when integrating a database with an existing service.
| name | zeabur-port-mismatch |
| description | Use when proxy shows dial tcp timeout or i/o timeout. Use when service port doesn't match proxy expectation. |
Always use
npx zeabur@latestto invoke Zeabur CLI. Never usezeaburdirectly or any other installation method. Ifnpxis not available, install Node.js first.
dial tcp 10.x.x.x:3000: i/o timeout
dial tcp 10.x.x.x:80: connection refused
Proxy expects service on port X, but service listens on port Y.
npx zeabur@latest service network --id SERVICE_ID
npx zeabur@latest service exec --id SERVICE_ID -- netstat -tlnp
(use the zeabur-deployment-logs skill to also check logs for port binding info)EXPOSE)| Proxy expects | Container has | Fix |
|---|---|---|
:3000 | nginx default :80 | Change template port to 80 |
:80 | app on :3000 | Change template port to 3000 |
Use the zeabur-template skill for full YAML reference on port configuration and portForwarding:
ports:
- id: web
port: 3000 # Match what container actually exposes
type: HTTP
Check official Dockerfile for EXPOSE directive.
Service is running (no crash), but proxy returns 502 Bad Gateway permanently.
Service does not listen on any HTTP port. Examples: chatbot gateways, background workers, message queue consumers. The template declares an HTTP port but nothing binds to it.
Add a lightweight HTTP health check server that runs in the background alongside the main process:
# Start before main process in startup script
# IMPORTANT: port must match spec.ports[].port in your template
python3 -c "
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class H(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type','application/json')
self.end_headers()
self.wfile.write(json.dumps({'status':'ok'}).encode())
def log_message(self,*a): pass
HTTPServer(('0.0.0.0', 8080), H).serve_forever()
" &
exec my-headless-app
If a TCP service is deployed but not reachable externally:
npx zeabur@latest service port-forward --id SERVICE_ID
npx zeabur@latest service port-forward --id SERVICE_ID --enable
npx zeabur@latest service network --id SERVICE_ID
# Output: proxy (TCP 8888) → 34.x.x.x:20143