5.0 KiB
5.0 KiB
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(`/`)"
docker compose up -d
Смена администратора
-
Создать нового пользователя, к примеру
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()
"
После этого зайти по логином super и сменить пароль пользователя admin. После этого можно работать под логином admin.