VMs
VM stuck in 'provisioning'
VM stuck in 'provisioning'
Provisioning typically finishes in 60–120 seconds. If it sits in
provisioning for more than 10 minutes, Suji marks it error and partially cleans up.Fix: delete the failed VM and create a new one. If it happens repeatedly, file a support ticket — usually a transient cloud-provider issue.VM shows 'error' status
VM shows 'error' status
Causes:
- Out-of-memory kill of a critical process
- Underlying disk issue
- Network blip during a state transition
VM won't start after being stopped
VM won't start after being stopped
Most common: credit balance is €0. The dashboard shows a banner explaining; top up to resume. See Grace period.Other causes: ongoing maintenance in the region (rare), or you’re trying to start while it’s still in a transitional state — wait 30 s and retry.
VM is slow or unresponsive
VM is slow or unresponsive
- Open the Metrics tab — sustained CPU at 100% or memory at the cap means you’ve outgrown the size.
- Resize up. Reboot takes ~60 s.
- Check Logs for crash-restart loops in any app (cycles of “starting → exited → starting”).
Can't SSH into the VM
Can't SSH into the VM
Check, in order:
- SSH key registered? Settings → SSH Keys before VM creation.
- Right user?
ssh root@<public-ip>. - Firewall? The default rules allow SSH from anywhere. If you replaced it with a restricted rule, your current IP must be in the source list.
- VM status? Must be
running. Stopped VMs aren’t reachable.
Apps
App stuck in 'installing'
App stuck in 'installing'
Usually means the Docker image is taking a long time to pull (large image, slow network). Wait 2–3 minutes. If it’s still
installing after that, check the install’s Logs tab — there’s usually a Pulling, Error: denied, or manifest unknown message indicating the cause.App is 'failed' — what now?
App is 'failed' — what now?
The install row has a
last_error field with the reason. Common ones:- “image denied / unauthorized” — the image isn’t public; we don’t support private registries yet.
- “port in use” — rare; redeploy resolves it.
- “docker compose up failed” with an EACCES — volume ownership issue; usually fixes itself on the next upgrade. If not, open a support ticket.
App's `*.suji.fr` URL returns 502 Bad Gateway
App's `*.suji.fr` URL returns 502 Bad Gateway
Cloudflare can’t reach the app inside your VM. Check, in order:
- Is the container running? Dashboard → Logs tab for that install. If it’s crashing on startup, the logs say why.
- Is the app actually listening on its declared port? Most app-specific bugs are here — see the app’s marketplace page for app-specific debugging (e.g. OpenClaw’s bind-mode setting).
- Cloudflare propagation — right after install or subdomain change, give it 30 s.
Webhook isn't reaching the app
Webhook isn't reaching the app
- Confirm the third-party service is configured with the right URL (
https://<install-subdomain>.suji.fr/...). - Open Logs for the install, send a test webhook. If nothing appears in the logs, the request didn’t reach the app — DNS / Cloudflare issue.
- If you see the request hit the app but get a 4xx/5xx, the app rejected it; the body of the response or the next few log lines explain why.
Billing & credits
My VMs are gone — credit went to zero
My VMs are gone — credit went to zero
Expected behavior at €0: each VM is terminated, with an automatic snapshot kept for 7 days. Top up from Billing → Top up, then restore from the termination snapshot to get your VM back. If your VM shows
suspended instead (auto-recharge card failure), fix the card and click Resume. See Grace period.Auto-recharge failed
Auto-recharge failed
The card was declined. You’ll see a “card declined” email and a banner in the dashboard. Fix the card in Billing → Payment methods — Stripe automatically retries. If retries also fail, you fall into the standard grace period.
Charge appears in Stripe but credit didn't land
Charge appears in Stripe but credit didn't land
Webhook delay (rare). Refresh the dashboard after 30 s. If the credit still doesn’t show, file a ticket with your Stripe payment reference — we can reconcile manually.
Invoice missing VAT number / company details
Invoice missing VAT number / company details
Set them once in Billing → Profile. Future invoices pick them up automatically. Old invoices can be re-issued with updated details on request.
Account
Forgot password
Forgot password
Go to app.suji.fr/forgot-password and enter your email. The reset link is valid for 1 hour.
Verification email not received
Verification email not received
- Check spam.
- Dashboard → Resend verification email.
- Confirm the email address you registered with.
- Rate-limited to 5 resends per hour.
2FA code rejected
2FA code rejected
- Your authenticator and our server may have time drift — re-sync your authenticator’s clock.
- If you’re locked out, email
[email protected]from the address on the account — we can verify identity and reset 2FA.
Lost access to a colleague's seat
Lost access to a colleague's seat
Org owner → Settings → Members → remove the old member and invite a new one. The org’s resources are unaffected; only access changes.
Network / firewall
A port I opened isn't reachable
A port I opened isn't reachable
- Is the firewall rule for the correct VM and direction?
- Is the app actually listening on that port inside the VM?
ss -tlnpfrom the host terminal confirms. - Is the app bound to
0.0.0.0(not127.0.0.1)? Apps that default to loopback won’t accept external connections even if the firewall is wide open. - Is the port in the provider-blocked list (25 / 465 outbound)?
Mail isn't sending
Mail isn't sending
Outbound TCP 25 and 465 are blocked at the network layer. Use port 587 with STARTTLS or an HTTP-based provider (SendGrid / Postmark / Mailgun / Resend). A firewall rule won’t unblock those ports.
Still stuck
Open a support ticket from the dashboard with:- Your account email and organization name.
- Instance ID (
inst_…) and install ID (install_…) if applicable. - A short description of what you expected vs what happened.
- The last 20–30 lines of relevant logs.
- A screenshot if it’s a UI issue.