Troubleshooting
Start with the symptom that matches what you see.
I am on the wrong site
Use these URLs:
- Public docs: docs.psilon.dev
- Dashboard: app.psilon.dev
- Share links:
https://<name>.share.psilon.dev
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.devand 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.devThe 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
80inside the workspace. - Confirm the app binds to
0.0.0.0, not only127.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 8888The 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 scanIf 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=TrueThe 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.