Skip to content

JupyterHub 配置文件

代码地址:03-jupyterhub-github-auth/config/jupyterhub_config.py at main · prevailna/project-1-jupyter

配置文件

python
import os

c = get_config()

# 配置 DockerSpawner
c.JupyterHub.spawner_class = (
    "dockerspawner.DockerSpawner"  # 使用 DockerSpawner 作为 JupyterHub 的 Spawner
)
c.DockerSpawner.image = os.environ.get(
    "DOCKER_NOTEBOOK_IMAGE", "quay.io/jupyter/base-notebook:latest"
)  # 使用 quay.io/jupyter/base-notebook:latest 作为 Docker 镜像

# 数据持久化
notebook_dir = os.environ.get("DOCKER_NOTEBOOK_DIR", "/home/jovyan/work")
c.DockerSpawner.notebook_dir = notebook_dir
c.DockerSpawner.volumes = {"jupyterhub-user-{username}": notebook_dir}
c.DockerSpawner.remove = True
c.DockerSpawner.debug = True

# 资源限制
c.DockerSpawner.mem_limit = "2G"
c.DockerSpawner.cpu_limit = 1

# 网络
network_name = os.environ.get("DOCKER_NETWORK_NAME", "jupyterhub-net")
c.DockerSpawner.use_internal_ip = True  # 使用内部 IP
c.DockerSpawner.network_name = network_name  # 使用 jupyterhub-net 作为 Docker 网络
c.JupyterHub.hub_ip = "jupyterhub"
c.JupyterHub.hub_port = 8080
c.JupyterHub.cookie_secret_file = "/data/jupyterhub_cookie_secret"
c.JupyterHub.db_url = "sqlite:////data/jupyterhub.sqlite"

# oauthenticator
c.Authenticator.allow_all = False  # 允许所有用户登录
c.JupyterHub.authenticator_class = "github"
c.GitHubOAuthenticator.client_id = os.environ.get("GITHUB_CLIENT_ID")
c.GitHubOAuthenticator.client_secret = os.environ.get("GITHUB_CLIENT_SECRET")
c.GitHubOAuthenticator.oauth_callback_url = os.environ.get("OAUTH_CALLBACK_URL")
# 可选:限制访问的 GitHub 组织或用户
# c.GitHubOAuthenticator.github_organization_whitelist = {'your-org'}
# c.GitHubOAuthenticator.github_team_whitelist = {'your-org': {'team-name'}}

# 管理员用户 (GitHub 用户名)
c.Authenticator.admin_users = set(os.environ.get('GITHUB_ADMIN_USERS', '').split(',')) if os.environ.get('GITHUB_ADMIN_USERS') else set()

# 允许的用户 (如果为空则允许所有 GitHub 用户)
github_whitelist = os.environ.get('GITHUB_WHITELIST_USERS', '')
if github_whitelist:
    c.Authenticator.whitelist = set(github_whitelist.split(','))