mirror of
https://github.com/jupyterhub/the-littlest-jupyterhub.git
synced 2025-12-18 21:54:05 +08:00
Merge pull request #932 from consideRatio/pr/add-upgrade-docs
docs: add docs about environments and upgrades
This commit is contained in:
@@ -20,6 +20,7 @@ author = "Project Jupyter Contributors"
|
|||||||
#
|
#
|
||||||
extensions = [
|
extensions = [
|
||||||
"sphinx_copybutton",
|
"sphinx_copybutton",
|
||||||
|
"sphinx.ext.intersphinx",
|
||||||
"sphinxext.opengraph",
|
"sphinxext.opengraph",
|
||||||
"sphinxext.rediraffe",
|
"sphinxext.rediraffe",
|
||||||
"myst_parser",
|
"myst_parser",
|
||||||
|
|||||||
64
docs/howto/admin/upgrade-tljh.md
Normal file
64
docs/howto/admin/upgrade-tljh.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
(howto-admin-upgrade-tljh)=
|
||||||
|
|
||||||
|
# Upgrade TLJH
|
||||||
|
|
||||||
|
A TLJH installation is supposed to be upgradable to get updates to JupyterHub
|
||||||
|
itself and its dependencies in the [hub environment](hub-environment). For
|
||||||
|
details on what is done during an upgrade, see
|
||||||
|
[](topic-installer-upgrade-actions).
|
||||||
|
|
||||||
|
## Step 1: Read the changelog
|
||||||
|
|
||||||
|
Before making an upgrade, please read the [](changelog) to become aware about
|
||||||
|
breaking changes. If there are breaking changes, you may need to update your
|
||||||
|
configuration files or take other actions as well as part of the upgrade.
|
||||||
|
|
||||||
|
Adjusting to the breaking changes isn't part of this documentation, please rely
|
||||||
|
on the TLJH changelog and the changelogs of related projects linked to from the
|
||||||
|
TLJH changelog.
|
||||||
|
|
||||||
|
## Step 2: Consider making a backup
|
||||||
|
|
||||||
|
Before making an upgrade, consider if you want to first make a backup in some
|
||||||
|
way. While upgrades between TLJH versions are tested with automation, there are
|
||||||
|
no guarantees.
|
||||||
|
|
||||||
|
This project does't yet provide documentation on how to make backups, but if
|
||||||
|
TLJH is installed on a virtual machine in a cloud, a good option is to try
|
||||||
|
create a snapshot of the associated disk. If this isn't an option, you could
|
||||||
|
consider making a backup of the files in `/opt/tljh` that contain most but not
|
||||||
|
all things during an upgrade, or perhaps only the JupyterHub database with
|
||||||
|
information about its users in `/opt/tljh/state` together with some other
|
||||||
|
details.
|
||||||
|
|
||||||
|
## Step 3: Make the upgrade
|
||||||
|
|
||||||
|
To initialize the upgrade, do the following from a terminal on the machine where
|
||||||
|
TLJH is installed.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# IMPORTANT: This should NOT be run from a JupyterHub started user server, but
|
||||||
|
# should only run from a standalone terminal session in the machine
|
||||||
|
# where TLJH has been installed.
|
||||||
|
#
|
||||||
|
curl -L https://tljh.jupyter.org/bootstrap.py \
|
||||||
|
| sudo python3 - \
|
||||||
|
--version=latest
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also upgrade to specific version by changing `--version=latest` to
|
||||||
|
`--version=1.0.0` or similar. There is no need to specify admin users etc again.
|
||||||
|
|
||||||
|
## Step 4: Verify function
|
||||||
|
|
||||||
|
After having made an upgrade its always good to verify that the JupyterHub
|
||||||
|
installation still works as expected. You may want to try logging out, logging
|
||||||
|
in, and starting a new server for example.
|
||||||
|
|
||||||
|
If you have issues consider the [](troubleshooting) documentation. If you need
|
||||||
|
help you can ask questions in [Jupyter forum], and if you think there is a bug
|
||||||
|
or documentation improvement that should be made you can open an issue or pull
|
||||||
|
request in the [TLJH GitHub project].
|
||||||
|
|
||||||
|
[jupyter forum]: https://discourse.jupyter.org/c/jupyterhub/tljh
|
||||||
|
[tljh github project]: https://github.com/jupyterhub/the-littlest-jupyterhub
|
||||||
@@ -56,6 +56,7 @@ admin/nbresuse
|
|||||||
admin/https
|
admin/https
|
||||||
admin/enable-extensions
|
admin/enable-extensions
|
||||||
admin/systemd
|
admin/systemd
|
||||||
|
admin/upgrade-tljh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Cloud provider configuration
|
## Cloud provider configuration
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
By default a user starting a server will see the JupyterLab interface. This can
|
By default a user starting a server will see the JupyterLab interface. This can
|
||||||
be changed with TLJH config `user_environment.default_app` or with the
|
be changed with TLJH config `user_environment.default_app` or with the
|
||||||
JupyterHub config
|
JupyterHub config
|
||||||
{external:py:attribute}`jupyterhub.spawner.Spawner.default_url` directly.
|
{external:py:attr}`jupyterhub.spawner.Spawner.default_url` directly.
|
||||||
|
|
||||||
The TLJH config supports the options `jupyterlab` and `classic`, which
|
The TLJH config supports the options `jupyterlab` and `classic`, which
|
||||||
translates to a `Spawner.default_url` config of `/lab` and `/tree`.
|
translates to a `Spawner.default_url` config of `/lab` and `/tree`.
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ The changes in the respective environments between TLJH version 0.2.0 and
|
|||||||
|
|
||||||
| Dependency changes in the _hub environment_ | Version in 0.2.0 | Version in 1.0.0b1 | Changelog link | Note |
|
| Dependency changes in the _hub environment_ | Version in 0.2.0 | Version in 1.0.0b1 | Changelog link | Note |
|
||||||
| ------------------------------------------------------------------------------ | ---------------- | ------------------ | ---------------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
| ------------------------------------------------------------------------------ | ---------------- | ------------------ | ---------------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
||||||
| [jupyterhub](https://github.com/jupyterhub/jupyterhub) | 1.\* | >=4.0.1,<5 | [Changelog](https://jupyterhub.readthedocs.io/en/stable/reference/changelog.html) | Running in the `jupyterhub` systemd service |
|
| [jupyterhub](https://github.com/jupyterhub/jupyterhub) | 1.\* | >=4.0.2,<5 | [Changelog](https://jupyterhub.readthedocs.io/en/stable/reference/changelog.html) | Running in the `jupyterhub` systemd service |
|
||||||
| [traefik](https://github.com/traefik/traefik) | 1.7.33 | 2.10.1 | [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md) | Running in the `traefik` systemd service |
|
| [traefik](https://github.com/traefik/traefik) | 1.7.33 | 2.10.1 | [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md) | Running in the `traefik` systemd service |
|
||||||
| [traefik-proxy](https://github.com/jupyterhub/traefik-proxy) | 0.3.\* | >=1.1.0,<2 | [Changelog](https://jupyterhub-traefik-proxy.readthedocs.io/en/latest/changelog.html) | Run by jupyterhub, controls `traefik` |
|
| [traefik-proxy](https://github.com/jupyterhub/traefik-proxy) | 0.3.\* | >=1.1.0,<2 | [Changelog](https://jupyterhub-traefik-proxy.readthedocs.io/en/latest/changelog.html) | Run by jupyterhub, controls `traefik` |
|
||||||
| [systemdspawner](https://github.com/jupyterhub/systemdspawner) | 0.16.\* | >=1.0.1,<2 | [Changelog](https://github.com/jupyterhub/systemdspawner/blob/master/CHANGELOG.md) | Run by jupyterhub, controls user servers via systemd |
|
| [systemdspawner](https://github.com/jupyterhub/systemdspawner) | 0.16.\* | >=1.0.1,<2 | [Changelog](https://github.com/jupyterhub/systemdspawner/blob/master/CHANGELOG.md) | Run by jupyterhub, controls user servers via systemd |
|
||||||
@@ -89,7 +89,7 @@ The changes in the respective environments between TLJH version 0.2.0 and
|
|||||||
|
|
||||||
| Dependency changes in the _user environment_ | Version in 0.2.0 | Version in 1.0.0 | Changelog link | Note |
|
| Dependency changes in the _user environment_ | Version in 0.2.0 | Version in 1.0.0 | Changelog link | Note |
|
||||||
| -------------------------------------------------------- | ---------------- | ---------------- | --------------------------------------------------------------------------------- | ------------------------ |
|
| -------------------------------------------------------- | ---------------- | ---------------- | --------------------------------------------------------------------------------- | ------------------------ |
|
||||||
| [jupyterhub](https://github.com/jupyterhub/jupyterhub) | 1.\* | >=4.0.1,<5 | [Changelog](https://jupyterhub.readthedocs.io/en/stable/reference/changelog.html) | Always upgraded. |
|
| [jupyterhub](https://github.com/jupyterhub/jupyterhub) | 1.\* | >=4.0.2,<5 | [Changelog](https://jupyterhub.readthedocs.io/en/stable/reference/changelog.html) | Always upgraded. |
|
||||||
| [pip](https://github.com/pypa/pip) | \* | >=23.1.2 | [Changelog](https://pip.pypa.io/en/stable/news/) | Only upgraded if needed. |
|
| [pip](https://github.com/pypa/pip) | \* | >=23.1.2 | [Changelog](https://pip.pypa.io/en/stable/news/) | Only upgraded if needed. |
|
||||||
| [conda](https://docs.conda.io/projects/conda/en/stable/) | 0.16.0 | >=0.16.0 | [Changelog](https://docs.conda.io/projects/conda/en/stable/release-notes.html) | Only upgraded if needed. |
|
| [conda](https://docs.conda.io/projects/conda/en/stable/) | 0.16.0 | >=0.16.0 | [Changelog](https://docs.conda.io/projects/conda/en/stable/release-notes.html) | Only upgraded if needed. |
|
||||||
| [mamba](https://mamba.readthedocs.io/en/latest/) | 4.10.3 | >=4.10.0 | [Changelog](https://github.com/mamba-org/mamba/blob/main/CHANGELOG.md) | Only upgraded if needed. |
|
| [mamba](https://mamba.readthedocs.io/en/latest/) | 4.10.3 | >=4.10.0 | [Changelog](https://github.com/mamba-org/mamba/blob/main/CHANGELOG.md) | Only upgraded if needed. |
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ Topic guides provide in-depth explanations of specific topics.
|
|||||||
|
|
||||||
whentouse
|
whentouse
|
||||||
requirements
|
requirements
|
||||||
|
three-environments
|
||||||
security
|
security
|
||||||
customizing-installer
|
customizing-installer
|
||||||
installer-actions
|
installer-actions
|
||||||
|
installer-upgrade-actions
|
||||||
tljh-config
|
tljh-config
|
||||||
authenticator-configuration
|
authenticator-configuration
|
||||||
escape-hatch
|
escape-hatch
|
||||||
|
|||||||
30
docs/topic/installer-upgrade-actions.md
Normal file
30
docs/topic/installer-upgrade-actions.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
(topic-installer-upgrade-actions)=
|
||||||
|
|
||||||
|
# What is done during an upgrade of TLJH?
|
||||||
|
|
||||||
|
Once TLJH has been installed, it should be possible to upgrade the installation.
|
||||||
|
This documentation is meant to capture the changes made during an upgrade.
|
||||||
|
|
||||||
|
```{versionchanged} 1.0.0
|
||||||
|
Ensuring upgrades work has only been done since 1.0.0 upgrading from version
|
||||||
|
0.2.0.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Changes to the system environment
|
||||||
|
|
||||||
|
The [system environment](system-environment) is not meant to be influenced
|
||||||
|
unless explicitly mentioned in the changelog, typically only during major
|
||||||
|
version upgrades.
|
||||||
|
|
||||||
|
## Changes to the hub environment
|
||||||
|
|
||||||
|
The [hub environment](hub-environment) gets several packages upgraded based on
|
||||||
|
version ranges specified in [tljh/requirements-hub-env.txt].
|
||||||
|
|
||||||
|
## Changes to the user environment
|
||||||
|
|
||||||
|
The [user environment](user-environment) gets is `jupyterhub` package upgraded,
|
||||||
|
but no other packages gets upgraded unless explicitly mentioned in the
|
||||||
|
changelog, typically only during major version upgrades.
|
||||||
|
|
||||||
|
[tljh/requirements-hub-env.txt]: https://github.com/jupyterhub/the-littlest-jupyterhub/blob/HEAD/tljh/requirements-hub-env.txt
|
||||||
76
docs/topic/three-environments.md
Normal file
76
docs/topic/three-environments.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
(topic-three-environments)=
|
||||||
|
|
||||||
|
# The system, hub, and user environments
|
||||||
|
|
||||||
|
TLJH's documentation mentions the _system environment_, the _hub environment_,
|
||||||
|
and the _user environment_. This section will introduce what is meant with that
|
||||||
|
and clarify the distinctions between the environments.
|
||||||
|
|
||||||
|
(system-environment)=
|
||||||
|
|
||||||
|
## The system environment
|
||||||
|
|
||||||
|
When this documentation mentions the _system environment_, it refers to the
|
||||||
|
Linux environment with its installed `apt` packages, users in `/etc/passwd`,
|
||||||
|
etc.
|
||||||
|
|
||||||
|
A part of the system environment is a Python environment setup via the `apt`
|
||||||
|
package `python` installed by default in Linux distributions supported by TLJH.
|
||||||
|
To be specific, we can refer to this as the _system's Python environment_.
|
||||||
|
|
||||||
|
If you would do `sudo python3 -m pip install <something>` you would end up
|
||||||
|
installing something in the system's Python environment, and that would not be
|
||||||
|
available in the hub environment or the user environment.
|
||||||
|
|
||||||
|
The system's Python environment is only used by TLJH to run the `bootstrap.py`
|
||||||
|
script downloaded as part of installing or upgrading TLJH. This script is also
|
||||||
|
responsible for setting up the hub environment.
|
||||||
|
|
||||||
|
(hub-environment)=
|
||||||
|
|
||||||
|
## The hub environment
|
||||||
|
|
||||||
|
The _hub environment_ is a [virtual Python environment] setup in `/opt/tljh/hub`
|
||||||
|
by the `bootstrap.py` script using the system's Python environment during TLJH
|
||||||
|
installation.
|
||||||
|
|
||||||
|
The hub environment has Python packages installed in it related to running
|
||||||
|
JupyterHub itself such as an JupyterHub authenticator package, but it doesn't
|
||||||
|
include packages to start user servers like JupyterLab.
|
||||||
|
|
||||||
|
When TLJH is installed/upgraded, the packages listed in
|
||||||
|
[tljh/requirements-hub-env.txt] are installed/upgraded in this environment.
|
||||||
|
|
||||||
|
If you would do `sudo /opt/tljh/hub/bin/python3 -m pip install <something>` you
|
||||||
|
would end up installing something in the hub environment, and that would not be
|
||||||
|
available in the system's Python environment or the user environment.
|
||||||
|
|
||||||
|
[virtual Python environment]: https://docs.python.org/3/library/venv.html
|
||||||
|
|
||||||
|
[tljh/requirements-hub-env.txt]: https://github.com/jupyterhub/the-littlest-jupyterhub/blob/HEAD/tljh/requirements-hub-env.txt
|
||||||
|
|
||||||
|
(user-environment)=
|
||||||
|
|
||||||
|
## The user environment
|
||||||
|
|
||||||
|
The _user environment_ is a Python environment setup in `/opt/tljh/user` by the
|
||||||
|
TLJH installer during TLJH installation. The user environment is not a virtual
|
||||||
|
environment because an entirely separate installation of Python has been made
|
||||||
|
for it.
|
||||||
|
|
||||||
|
The user environment has packages installed in it related to running individual
|
||||||
|
jupyter servers, such as `jupyterlab`.
|
||||||
|
|
||||||
|
When TLJH is _installed_, the packages listed in
|
||||||
|
[tljh/requirements-user-env.txt] are installed in this environment. When TLJH is
|
||||||
|
_upgraded_ though, as little as possible is done to this environment. Typically
|
||||||
|
only `jupyterhub` is upgraded to match the version in the hub environment. If
|
||||||
|
upgrading to a new major version of TLJH, then something small may be done
|
||||||
|
besides this, and then it should be described the changelog.
|
||||||
|
|
||||||
|
If you would do `sudo /opt/tljh/user/bin/python3 -m pip install <something>`, or
|
||||||
|
from a user server's terminal do `sudo -E pip install <something>` you would end
|
||||||
|
up installing something in the user environment, and that would not be available
|
||||||
|
in the system's Python environment or the hub environment.
|
||||||
|
|
||||||
|
[tljh/requirements-user-env-extras.txt]: https://github.com/jupyterhub/the-littlest-jupyterhub/blob/HEAD/tljh/requirements-user-env-extras.txt
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
(troubleshooting)=
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
In time, all systems have issues that need to be debugged. Troubleshooting
|
In time, all systems have issues that need to be debugged. Troubleshooting
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
# If a dependency is bumped to a new major version, we should make a major
|
# If a dependency is bumped to a new major version, we should make a major
|
||||||
# version release of tljh.
|
# version release of tljh.
|
||||||
#
|
#
|
||||||
jupyterhub>=4.0.1,<5
|
jupyterhub>=4.0.2,<5
|
||||||
jupyterhub-systemdspawner>=1.0.1,<2
|
jupyterhub-systemdspawner>=1.0.1,<2
|
||||||
jupyterhub-firstuseauthenticator>=1.0.0,<2
|
jupyterhub-firstuseauthenticator>=1.0.0,<2
|
||||||
jupyterhub-nativeauthenticator>=1.2.0,<2
|
jupyterhub-nativeauthenticator>=1.2.0,<2
|
||||||
|
|||||||
Reference in New Issue
Block a user