Skip to content
Troubleshooting

Troubleshooting

Start with the symptom that matches what you see.

I am on the wrong site

Use these URLs:

The dashboard asks me to sign in again

  • Use https://app.psilon.dev.
  • Allow cookies for psilon.dev.
  • Sign out, then sign in again.
  • Contact your operator if the account is not enabled.

SSH is denied

  • For first-time setup, run ssh psilon.dev and open the registration link shown in the terminal.
  • Confirm that your public key is saved in Profile.
  • Confirm that your SSH client is using the matching private key.
  • Check the hostname copied from the dashboard.
  • Retry with verbose SSH output:
ssh -v psilon.dev

The browser shell does not open

  • Refresh the dashboard.
  • Confirm that your browser session is still signed in.
  • Try the Open Terminal button from the VMs view.
  • If it still fails, include the workspace name and approximate time when reporting it.

My share link does not load

  • Confirm your app is listening on port 80 inside the workspace.
  • Confirm the app binds to 0.0.0.0, not only 127.0.0.1.
  • Confirm you are signed in to PSILON with the same browser.
  • Confirm the owner added you as a collaborator in Tunnels.
  • Recreate the share link from the dashboard.
  • Stop sharing if you no longer want the URL to be reachable.

Jupyter returns 403 through a tunnel

If the Jupyter console logs Blocking request with non-local 'Host' <name>.share.psilon.dev, the notebook token is valid but Jupyter rejected the public share host.

Update auto-tunnel.sh and restart the tunnel:

bash <(curl -sL https://docs.psilon.dev/install-auto-tunnel.sh)
auto-tunnel.sh stop 8888
auto-tunnel.sh open 8888

The installer reuses zrok2 when the required version is already installed. The helper also updates itself automatically from the docs site when it is installed in a writable directory. It detects running Jupyter servers, shares them through zrok2’s Caddy backend with a local Host header rewrite, and internally rewrites the bare share root to the tokenized Jupyter path. It also prints a direct URL with the Jupyter token included.

To check what the helper would expose before starting anything, run:

auto-tunnel.sh scan

If you are using manual plain-proxy zrok2 commands instead of the helper, restart Jupyter with remote host access allowed:

jupyter notebook \
  --no-browser \
  --ServerApp.ip=127.0.0.1 \
  --ServerApp.port=8888 \
  --ServerApp.allow_remote_access=True

The TemplateNotFound: '403.html' or page_config is undefined stack trace can appear while Jupyter tries to render the blocked response. Fix the Host check first.