Files
jupyterhub/README.md
2026-02-19 16:43:31 +00:00

118 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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()
"
```