Skip to content

Releases

v0.7.0

Choose a tag to compare

@wajoud wajoud released this 10 Nov 12:06
3445b43

Includes everything listed under 0.6.0 below, which was never published on its own.

Upgrade: Hub and every worker (workers only for the failed-runs list). Hub restart needed.

Hub:

  • Users in several teams choose one at start ("Which team?" on the start page). One-team users see no change. Deleting such a user removes their account on every team's worker.

  • The Hub renews its own Vault token daily; drop the vault-renew cron job. Add the auth/token/renew-self path to the policy (docs/SECURITY.md §4, step 2).

  • Stop Server returns as soon as the server has exited (was always 5 s).

  • A slow Vault no longer freezes the Hub while a server starts.

  • After a worker reboot a server no longer shows as running because another program got its process number.

  • If a user's Linux account cannot be created, the start page says so (was an SSH login error).

  • Shared homes: the user's own group gets the same ID as the user on every worker; team-folder links work for users not yet moved.

  • Shared home folders (EFS): home_base in hub_settings.json; every user gets the same Linux user ID on every worker (README → Shared home folders).

  • Monitoring page redesigned: what needs attention first, compact worker cards, light and dark, no external scripts.

  • 15 days of per-user usage (CPU, memory) stored in the state DB and graphed on the monitoring page.

  • Prometheus endpoint for Grafana: /hub/monitoring/metrics, off until JUPYTERPILOT_METRICS_TOKEN is set.

Workers:

  • Scheduled notebooks whose last run failed are listed on /hub/monitoring.
  • sudo jupyterhub-pilot mount-homes <efs-dns-name> mounts the shared home filesystem.
  • A scheduled notebook now runs only on the worker where it was scheduled (matters with shared homes).

Full details, including the 0.6.0 changes this release carries: CHANGELOG

Install: pip install "jupyterhub-pilot[hub]==0.7.0" on the Hub, "jupyterhub-pilot[worker,ai]==0.7.0" on workers.

v0.5.1

Choose a tag to compare

@wajoud wajoud released this 08 Nov 07:59
87e7284

Shorter PyPI project page: a one-screen overview with the install commands and links to the full guide (#12). No code changes from 0.5.0.

sudo pip3 install --break-system-packages --ignore-installed -U "jupyterhub-pilot[hub]"   # [worker,ai] on workers

v0.5.0

Choose a tag to compare

@wajoud wajoud released this 08 Nov 07:50
e861bac

Install from pip, per-user monitoring, and a load test.

# Hub
sudo pip3 install --break-system-packages --ignore-installed "jupyterhub-pilot[hub]"
sudo jupyterhub-pilot install-hub

# Each worker
sudo pip3 install --break-system-packages --ignore-installed "jupyterhub-pilot[worker,ai]"
sudo jupyterhub-pilot install-worker

# Then, on the Hub
sudo jupyterhub-pilot add-worker team_beta <worker-private-ip>

New

  • No git clone. Everything installs from PyPI. The jupyterhub-pilot command sets up a Hub (install-hub) or worker (install-worker), registers workers (add-worker) and runs load tests (load-test). One command set for Ubuntu and Amazon Linux 2023. Each machine's settings and keys stay in /opt/jupyterhub-pilot. (#10)
  • Per-user usage on the monitoring dashboard: each user's CPU and memory against their limits (the bar turns red near the memory limit), kernels, home-folder size and uptime, plus a summary bar. Admins see everyone; users see only their own row. (#7)
  • Load test: start many test users at once across teams and see start times and which kernels hit their limits. (#8)

Fixes

  • A stopped worker no longer leaves its users' servers listed as running forever: after 5 minutes unreachable they show as stopped, and users can start again when a worker is back. (#6)
  • add-worker refuses to run on a worker; the CPU chart no longer covers "Last update"; metrics agents reconnect within 10 s of a Hub restart. (#6)
  • Calmer README, also the new PyPI description. (#9)

Upgrading

  • Installs made with git clone keep working after git pull: the repo-root jupyterhub_config.py now loads the packaged config with settings from its own folder.
  • To move one to the pip layout, pip install the package and run install-hub / install-worker again; keys and team mapping are kept.
  • Workers no longer need get_port.py. oauthenticator is now part of the [hub] extra.

Known limits

The pip-install setup scripts were checked with the built wheel and JupyterHub 6.2 locally, but have not yet run end to end on a server. Please report anything that breaks.

Full changes: #6, #7, #8, #9, #10, #11

v0.4.0

Choose a tag to compare

@wajoud wajoud released this 08 Nov 06:05
a5a0634

Fixes found in a real 1 Hub + 2 worker test on AWS (Ubuntu 24.04 Arm, JupyterHub 6.2).

pip install --upgrade "jupyterhub-pilot[hub]==0.4.0"

⚠️ Breaking

Logins over plain http:// now loop: the login cookie is finally Secure (the old cookie_options setting was silently ignored). Serve the Hub through Caddy over HTTPS. See the README's HTTPS with Caddy section, which also has a no-domain test setup.

What's new

  • Test login without Google: set JUPYTERPILOT_TEST_PASSWORD and JUPYTERPILOT_TEST_ADMIN_PASSWORD (32+ chars) in /etc/jupyterhub-pilot/hub.env.
  • scripts/add_worker.sh <team> <ip>: registers a team's worker, loads it into SQLite and tests SSH.
  • install_hub.sh can be re-run safely (keeps your teams) and writes the systemd service and a root-only hub.env. Start with sudo systemctl enable --now jupyterhub.
  • Amazon Linux 2023 install scripts (scripts/install_*_amazon_linux.sh), not yet tested on real instances.

Fixes

  • Metrics agent connects straight to /hub/monitoring/ws.
  • A user with no team sees "ask an admin to add you to a team" instead of a 500 error.
  • Docs: Caddy compression (encode zstd gzip, measured 8× faster first load) and pick the region nearest your users.

Upgrading an existing install

  • Workers installed before 0.4.0: sudo sed -i 's#:8000/monitoring/ws#:8000/hub/monitoring/ws#' /etc/systemd/system/jupyterhub_pilot-metrics.service && sudo systemctl daemon-reload && sudo systemctl restart jupyterhub_pilot-metrics
  • Requires jupyterhub>=5.3,<7 (tested on 6.2).

Full changes: #4, #5

v0.3.1

Choose a tag to compare

@wajoud wajoud released this 07 Nov 11:41
a15d904

Packaging-only release: no code changes from v0.3.0.

  • The PyPI page now shows the full README (install, start/stop, adding worker servers, configuration, troubleshooting).
  • Author email set to the real address.
  • README links work on PyPI as well as GitHub.

Upgrade: pip install --upgrade "jupyterhub-pilot[hub]" (or [worker], [ai]).

Full changes: #3

v0.3.0

Choose a tag to compare

@wajoud wajoud released this 07 Nov 11:35
96c9573

Install: pip install --upgrade "jupyterhub-pilot[hub]" (or [worker], [ai]) · PyPI

⚠️ Breaking changes

  • Metrics agents need a token. Set the same JUPYTERPILOT_AGENT_TOKEN on the Hub and every agent. The Hub refuses agents without it. install_hub.sh generates one at /etc/jupyterhub-pilot/agent_token.
  • No automatic AI-package install. env_setup is removed; install_worker.sh installs Jupyter and the AI magics once per worker.
  • RBACManager.assert_can_act_on is removed. JupyterHub's own scopes decide who may start or stop which server.

Security

  • The monitoring dashboard and its live feed require a JupyterHub login; agent hostnames are escaped (fixes stored XSS).
  • Users see only their own team's workers on the dashboard; admins see all.
  • Secrets (Hub API token, Vault secrets) are passed to the worker over stdin, not the command line.
  • Usernames are validated before reaching a remote shell; PID and log files moved from /tmp to the user's home.

Fixes

  • SSH work runs off the Hub's event loop, so a slow worker no longer freezes the Hub.
  • poll() no longer drops a running server on a temporary SSH or database error; a leftover server is ended on the next start.
  • JIT user creation works: admin_ssh_user is now stored in SQLite (with migration), dotted names like first.last are supported, and the multi-minute per-user pip install is gone.
  • %fix uses the last real code cell; cell outputs are included in AI context.
  • The pip package now ships the dashboard page (/hub/monitoring failed on 0.2.4 pip installs).

Docs

  • New README covering install, start/stop, adding users, adding and removing worker servers, configuration and troubleshooting.
  • HTTPS setup with Caddy; fixed admin username (no @domain) and the Hub systemd unit.

Full changes: #1, #2