# jupyterhub настройки для stellars-jupyterhub-ds https://gitea.manturovo-it.ru/nchebrov/stellars-jupyterhub-ds https://github.com/stellarshenson/stellars-jupyterhub-ds https://github.com/ERIOS-project/vscode-jupyterhub/tree/main Создать Dockerfile ``` # Используем официальный образ за основу FROM jupyter/scipy-notebook:latest # Устанавливаем code-server (VS Code в браузере) и прокси-расширения USER root # 1. Устанавливаем code-server через официальный скрипт RUN curl -fsSL https://code-server.dev/install.sh | sh # 2. Устанавливаем Python-пакеты для прокси (используем pip, т.к. это стандартный менеджер в образе) # Они позволят Jupyter автоматически обнаружить и запустить code-server. RUN pip install --no-cache-dir \ jupyter-server-proxy \ jupyter-vscode-proxy RUN pip install --upgrade jupyterlab # Создаем директорию для конфигурации code-server с правильными правами RUN mkdir -p /home/jovyan/.local/share/code-server \ && chown -R jovyan:users /home/jovyan/.local # Переключаемся на пользователя jovyan для установки расширений USER jovyan WORKDIR /home/jovyan # Устанавливаем переменную окружения для указания директории данных code-server ENV XDG_DATA_HOME=/home/jovyan/.local/share # Устанавливаем расширения с явным указанием директории и дополнительными флагами RUN code-server --install-extension ms-python.python --force \ && code-server --install-extension ms-toolsai.jupyter --force \ && code-server --install-extension oderwat.indent-rainbow --force \ && code-server --install-extension vscode-icons-team.vscode-icons --force \ && code-server --install-extension donjayamanne.python-extension-pack --force \ && code-server --install-extension MS-CEINTL.vscode-language-pack-ru --force \ && code-server --install-extension sguerri.simple-hide-files --force \ && code-server --install-extension lyuwenhan.zipper --force # Проверяем установленные расширения RUN code-server --list-extensions # Возвращаем пользователя jovyan USER jovyan ``` docker build . -t vsc:latest --no-cache Внести исправления в файлы:/ config/jupyterhub_config.py ``` #JUPYTERHUB_NOTEBOOK_IMAGE = os.environ.get("JUPYTERHUB_NOTEBOOK_IMAGE", "stellars/stellars-jupyterlab-ds:latest") # JupyterLab image to spawn JUPYTERHUB_NOTEBOOK_IMAGE = os.environ.get("JUPYTERHUB_NOTEBOOK_IMAGE", "vsc:latest") # JupyterLab image to spawn #c.NativeAuthenticator.open_signup = False # require admin authorization for new users c.NativeAuthenticator.open_signup = True # require admin authorization for new users ``` compose.yml ``` #- JUPYTERHUB_BASE_URL=/jupyterhub # default URL prefix - JUPYTERHUB_BASE_URL=/ # default URL prefix #- JUPYTERHUB_NOTEBOOK_IMAGE=stellars/stellars-jupyterlab-ds:latest # user container image - JUPYTERHUB_NOTEBOOK_IMAGE=vsc:latest # user container image # - JUPYTERHUB_IDLE_CULLER_ENABLED=0 # 0=disabled, 1=enabled # - JUPYTERHUB_IDLE_CULLER_TIMEOUT=86400 # seconds of inactivity before culling (default 24h) - JUPYTERHUB_IDLE_CULLER_ENABLED=1 # 0=disabled, 1=enabled - JUPYTERHUB_IDLE_CULLER_TIMEOUT=3600 # seconds of inactivity before culling ( 1 hour) # - "traefik.http.routers.jupyterhub-rtr.rule=Path(`/jupyterhub`) || PathPrefix(`/jupyterhub/`)" - "traefik.http.routers.jupyterhub-rtr.rule=Path(`/`) || PathPrefix(`/`)" ``` Смена администратора * Создать нового пользователя, к примеру `super`. Обязательно сделать хотя бы один логин в систему. * Назначить его админом с помощью следующих команд ``` docker exec -it stellars-jupyterhub-ds-jupyterhub python3 -c " import sqlite3 conn = sqlite3.connect('/data/jupyterhub.sqlite') cursor = conn.cursor() cursor.execute('SELECT name, admin FROM users') for row in cursor.fetchall(): print(f'User: {row[0]}, Admin: {row[1]}') conn.close() " ``` ``` docker exec -it stellars-jupyterhub-ds-jupyterhub python3 -c " import sqlite3 conn = sqlite3.connect('/data/jupyterhub.sqlite') conn.execute(\"UPDATE users SET admin=1 WHERE name='super'\") conn.commit() print('Готово') for row in conn.execute('SELECT name, admin FROM users'): print(f'User: {row[0]}, Admin: {row[1]}') conn.close() " ```