Skip to main content

SSH Issues

”REMOTE HOST IDENTIFICATION HAS CHANGED”

This happens when a new pod reuses an SSH port previously used by a deleted pod. Fix: Remove the stale host key:
ssh-keygen -R "[sg-dev-v2.instapods.app]:PORT"
Then reconnect. The CLI handles this automatically when you delete a pod via instapod pods delete.

”Permission denied (publickey)”

Your SSH key isn’t authorized on the pod. Fix: Add your key:
instapod ssh-keys add my-app
Or add it via the dashboard’s SSH tab.

SSH connection timeout

The pod may be stopped, or the SSH port might be blocked. Fix:
  1. Check pod status: instapod pods get my-app
  2. If stopped, start it: instapod pods start my-app
  3. Verify you’re using the correct port

Pod Issues

Pod stuck in “creating” state

Rarely, a pod creation can get stuck if the underlying container fails to start. Fix: Delete the pod and create a new one:
instapod pods delete my-app -f
instapod pods create my-app --preset nodejs

Application not responding on the public URL

Check that your application is listening on the correct port:
PresetRequired Port
Static80 (handled by nginx)
PHP80 (handled by nginx + PHP-FPM)
Node.js3000
Python8000
For Node.js and Python, your app must bind to 0.0.0.0 (not 127.0.0.1 or localhost):
// Node.js — correct
app.listen(3000, '0.0.0.0');

// Node.js — incorrect (won't be accessible)
app.listen(3000, 'localhost');
# Python — correct
app.run(host='0.0.0.0', port=8000)

# Python — incorrect
app.run(host='127.0.0.1', port=8000)

Pod shows “suspended” status

Your team’s subscription is suspended due to unpaid invoices. Fix: Go to Billing in the dashboard and pay the outstanding invoice. After payment, manually start your pods.

Service Issues

Service stuck in “installing”

Service installation runs in the background and typically takes 8–15 seconds. If it’s been more than a minute:
  1. Check the service status: instapod services list my-app
  2. If it shows “error”, the installation failed — check the error message
  3. Try removing and reinstalling:
    # Via API
    curl -X DELETE https://api.instapods.com/api/pods/my-app/services/mysql \
      -H "Authorization: Bearer YOUR_TOKEN"
    
    instapod services add my-app --service mysql --wait
    

“Plan does not allow services”

You’re on the Starter plan, which doesn’t support database services. Fix: Upgrade to the Developer or Professional plan from the billing page.

File Issues

Files not appearing after upload

If you uploaded files via SCP or the CLI but they don’t appear in the dashboard file browser:
  1. Verify the file path — the file browser starts from the pod’s app root (/home/instapod/app)
  2. Check file permissions: instapod exec my-app -- ls -la /home/instapod/app/
  3. Make sure you uploaded to the correct directory (PHP uses /home/instapod/app/public for web files)

“Permission denied” when writing files

Files in the app directory should be owned by the instapod user. If they’re owned by root:
instapod exec my-app -- sudo chown -R instapod:instapod /home/instapod/app

Domain Issues

Domain verification failing

  1. Check that the DNS record has propagated: dig CNAME app.example.com or dig TXT _instapods.app.example.com
  2. Ensure the record matches exactly what InstaPods expects (shown on the domains page)
  3. Wait a few minutes and try again — DNS propagation can take time

SSL certificate not provisioning

After domain verification, SSL provisioning runs via certbot. If it fails:
  1. Ensure the domain points to the correct server IP
  2. Check that ports 80 and 443 are accessible
  3. Try removing and re-adding the domain

Getting Help

If your issue isn’t covered here:
  • Check the pod’s Events tab for error details
  • Check pod Logs for application-level errors
  • Contact support through the dashboard