使用 tljh-config 配置 TLJH#

tljh-config 是用于对 TLJH 进行配置更改的命令行程序。

运行 tljh-config#

您可以通过两种方式运行 tljh-config

  1. 在 JupyterHub 中以管理员用户身份登录的终端内运行。建议使用此方法。

  2. 通过其他方式(例如 SSH)登录服务器时,以 root 身份直接调用 /opt/tljh/hub/bin/tljh-config。这是一种高级用例,在本指南中没有详细介绍。

设置/取消设置配置属性#

TLJH 的配置以嵌套树结构组织。您可以使用以下命令设置特定属性

sudo tljh-config set <property-path> <value>

其中

  1. <property-path> 是要设置的属性的点分隔路径。

  2. <value> 是要设置的属性值。

例如,要设置 DummyAuthenticator 的密码,您需要设置 auth.DummyAuthenticator.password 属性。您可以使用以下命令执行此操作

sudo tljh-config set auth.DummyAuthenticator.password mypassword

这只能设置字符串和数值属性,不能设置列表。

要取消设置配置属性,可以使用以下命令

sudo tljh-config unset <property-path>

取消设置配置属性会从配置文件中删除该属性。如果您只想更改属性的值,则应使用 set 并用所需的值覆盖它。

以下列出了按类别列出的部分现有 <property-path>

基本 URL#

使用 base_url 确定 JupyterHub 使用的基本 URL。此参数将直接传递给 c.JupyterHub.base_url

身份验证#

使用 auth.type 确定要使用的身份验证器。配置中 auth.{auth.type} 下的所有参数将直接传递给身份验证器本身。

端口#

使用 http.porthttps.port 设置 TLJH 将监听的端口,默认情况下分别为 80 和 443。但是,如果您更改了这些端口,请注意 TLJH 对系统执行了许多其他操作(主要是用户帐户和 sudo 规则),这可能会破坏其他应用程序的安全假设,因此请谨慎使用。

sudo tljh-config set http.port 8080
sudo tljh-config set https.port 8443
sudo tljh-config reload proxy

(tljh-set-listen-address)

监听地址#

使用 http.addresshttps.address 设置 TLJH 将监听的地址,默认情况下为空地址(表示它默认监听所有接口)。

sudo tljh-config set http.address 127.0.0.1
sudo tljh-config set https.address 127.0.0.1
sudo tljh-config reload proxy

用户列表#

  • users.allowed 接受允许的用户名

  • users.banned 接受禁止的用户名

  • users.admin 接受指定为管理员的用户名

    sudo tljh-config add-item users.allowed good-user_1
    sudo tljh-config add-item users.allowed good-user_2
    sudo tljh-config add-item users.banned bad-user_6
    sudo tljh-config add-item users.admin admin-user_0
    sudo tljh-config remove-item users.allowed good-user_2
    

用户服务器限制#

  • limits.memory 指定每个用户可以使用内存的最大值。默认情况下没有内存限制。限制可以指定为绝对字节值。您可以使用后缀 K、M、G 或 T 分别表示千字节、兆字节、吉字节或太字节。将其设置为 None 将禁用内存限制。

    sudo tljh-config set limits.memory 4G
    

    即使您希望单个用户使用尽可能多的内存,最好还是将内存限制设置为总物理内存的 80-90%。这可以防止单个用户意外地通过 OOMing 导致机器崩溃。

  • limits.cpu 表示每个用户可以使用 CPU 内核总数的浮点数。默认情况下没有 CPU 限制。1 代表一个完整的 CPU,4 代表 4 个完整的 CPU,0.5 代表一个 CPU 的一半,等等。此值最终将转换为百分比并向下舍入到最接近的整数百分比,即 1.5 转换为 150%,0.125 转换为 12%,等等。将其设置为 None 将禁用 CPU 限制。

    sudo tljh-config set limits.cpu 2
    

用户环境#

user_environment.default_app 设置用户启动的默认应用程序。目前,这只能设置为:classicjupyterlab

sudo tljh-config set user_environment.default_app jupyterlab

额外用户组#

users.extra_user_groups 是一个配置选项,可用于自动将用户添加到特定组。默认情况下,没有定义额外组。

用户可以使用所需的现有组进行“配对”

  • tljh-config set,如果只将一个用户添加到所需组

tljh-config set users.extra_user_groups.group1 user1
  • tljh-config add-item,如果将多个用户添加到组

tljh-config add-item users.extra_user_groups.group1 user1
tljh-config add-item users.extra_user_groups.group1 user2

查看当前配置#

要查看当前配置,您可以运行以下命令

sudo tljh-config show

这将打印您 TLJH 的当前配置。在寻求支持时,这非常有用!

重新加载 JupyterHub 以应用配置#

修改配置后,您需要重新加载 JupyterHub 才能使其生效。您可以使用以下命令进行操作

sudo tljh-config reload

这不会影响任何正在运行的用户。JupyterHub 将重新启动并加载新配置。

高级:config.yaml#

tljh-config 是一个简单的程序,它修改位于 /opt/tljh/config/config.yamlconfig.yaml 文件的内容。 tljh-config 是编辑/查看配置的推荐方法,因为在终端文本编辑器中手动编辑 YAML 是错误的主要来源。

要了解有关 tljh-config 用法的更多信息,可以使用 --help 标志。 --help 标志可以直接使用,以获取有关命令的一般用法的的信息,或者在位置参数之后使用。例如,在参数 remove-item 之后使用它,将提供有关此特定命令的信息。

sudo tljh-config --help

usage: tljh-config [-h] [--config-path CONFIG_PATH] {show,unset,set,add-item,remove-item,reload} ...

positional arguments:
  {show,unset,set,add-item,remove-item,reload}
    show                Show current configuration
    unset               Unset a configuration property
    set                 Set a configuration property
    add-item            Add a value to a list for a configuration property
    remove-item         Remove a value from a list for a configuration property
    reload              Reload a component to apply configuration change

optional arguments:
  -h, --help            show this help message and exit
  --config-path CONFIG_PATH
                        Path to TLJH config.yaml file
sudo tljh-config remove-item --help

usage: tljh-config remove-item [-h] key_path value

positional arguments:
  key_path    Dot separated path to configuration key to remove value from
  value       Value to remove from key_path

optional arguments:
  -h, --help  show this help message and exit