diff --git a/README.md b/README.md index 450916d..79d4a05 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to ## Overview JupyterLab is the next-generation user interface for Project Jupyter offering all the familiar building blocks of the classic Jupyter Notebook (notebook, terminal, text editor, file browser, rich outputs, etc.) in a flexible and powerful user interface. JupyterLab will eventually replace the classic Jupyter Notebook. -**Shipped version:** v1.1.4 +**Shipped version:** v1.2.6 ## Screenshots diff --git a/conf/jupyter_notebook_config.py b/conf/jupyter_notebook_config.py index 8e25e1e..9cb14eb 100644 --- a/conf/jupyter_notebook_config.py +++ b/conf/jupyter_notebook_config.py @@ -252,6 +252,11 @@ # use by the buffer manager. #c.NotebookApp.max_buffer_size = 536870912 +## Gets or sets a lower bound on the open file handles process resource limit. +# This may need to be increased if you run into an OSError: [Errno 24] Too many +# open files. This is not applicable when running on Windows. +#c.NotebookApp.min_open_files_limit = 0 + ## Dict of Python modules to load as notebook server extensions.Entry values can # be used to enable and disable the loading ofthe extensions. The extensions # will be loaded in alphabetical order. @@ -348,6 +353,22 @@ c.NotebookApp.terminals_enabled = bool(__ENABLE_TERMINAL__) # SSL #c.NotebookApp.trust_xheaders = False +## Disable launching browser by redirect file +# +# For versions of notebook > 5.7.2, a security feature measure was added that +# prevented the authentication token used to launch the browser from being +# visible. This feature makes it difficult for other users on a multi-user +# system from running code in your Jupyter session as you. +# +# However, some environments (like Windows Subsystem for Linux (WSL) and +# Chromebooks), launching a browser using a redirect file can lead the browser +# failing to load. This is because of the difference in file structures/paths +# between the runtime and the browser. +# +# Disabling this setting to False will disable this behavior, allowing the +# browser to launch by using a URL and visible token (as before). +#c.NotebookApp.use_redirect_file = True + ## DEPRECATED, use tornado_settings #c.NotebookApp.webapp_settings = {} diff --git a/conf/jupyterhub_config.py b/conf/jupyterhub_config.py index f2f0d77..3ae7b71 100644 --- a/conf/jupyterhub_config.py +++ b/conf/jupyterhub_config.py @@ -39,6 +39,14 @@ ## Duration (in seconds) to determine the number of active users. #c.JupyterHub.active_user_window = 1800 +## Resolution (in seconds) for updating activity +# +# If activity is registered that is less than activity_resolution seconds more +# recent than the current value, the new value will be ignored. +# +# This avoids too many writes to the Hub database. +#c.JupyterHub.activity_resolution = 30 + ## Grant admin users permission to access single-user servers. # # Users should be properly informed if this is enabled. @@ -53,15 +61,14 @@ ## Answer yes to any questions (e.g. confirm overwrite) #c.JupyterHub.answer_yes = False -## PENDING DEPRECATION: consider using service_tokens +## PENDING DEPRECATION: consider using services # # Dict of token:username to be loaded into the database. # # Allows ahead-of-time generation of API tokens for use by externally managed # services, which authenticate as JupyterHub users. # -# Consider using service_tokens for general services that talk to the JupyterHub -# API. +# Consider using services for general services that talk to the JupyterHub API. #c.JupyterHub.api_tokens = {} ## Authentication for prometheus metrics @@ -84,10 +91,9 @@ # e.g. `c.JupyterHub.authenticator_class = 'pam'` # # Currently installed: -# - default: jupyterhub.auth.PAMAuthenticator # - dummy: jupyterhub.auth.DummyAuthenticator # - pam: jupyterhub.auth.PAMAuthenticator -#c.JupyterHub.authenticator_class = 'jupyterhub.auth.PAMAuthenticator' +# - default: jupyterhub.auth.PAMAuthenticator c.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator' ## The base URL of the entire application. @@ -165,7 +171,7 @@ c.JupyterHub.bind_url = 'http://:__PORT____PATH__' #c.JupyterHub.cookie_secret_file = 'jupyterhub_cookie_secret' ## The location of jupyterhub data files (e.g. /usr/local/share/jupyterhub) -#c.JupyterHub.data_files_path = '/usr/local/share/jupyterhub' +#c.JupyterHub.data_files_path = '/opt/jupyterlab/.venv/share/jupyterhub' ## Include any kwargs to pass to the database connection. See # sqlalchemy.create_engine for details. @@ -180,6 +186,10 @@ c.JupyterHub.bind_url = 'http://:__PORT____PATH__' ## DEPRECATED since version 0.8: Use ConfigurableHTTPProxy.debug #c.JupyterHub.debug_proxy = False +## If named servers are enabled, default name of server to spawn or open, e.g. by +# user-redirect. +#c.JupyterHub.default_server_name = '' + ## The default URL for users when they arrive (e.g. when user directs to "/") # # By default, redirects users to their own server. @@ -297,6 +307,21 @@ c.ConfigurableHTTPProxy.api_url = 'http://127.0.0.1:__PORT_HTTP_PROXY__' # See also `hub_ip` for the ip and `hub_bind_url` for setting the full bind URL. #c.JupyterHub.hub_port = 8081 +## Timeout (in seconds) to wait for spawners to initialize +# +# Checking if spawners are healthy can take a long time if many spawners are +# active at hub start time. +# +# If it takes longer than this timeout to check, init_spawner will be left to +# complete in the background and the http server is allowed to start. +# +# A timeout of -1 means wait forever, which can mean a slow startup of the Hub +# but ensures that the Hub is fully consistent by the time it starts responding +# to requests. This matches the behavior of jupyterhub 1.0. +# +# .. versionadded: 1.1.0 +#c.JupyterHub.init_spawners_timeout = 10 + ## The location to store certificates automatically created by JupyterHub. # # Use with internal_ssl @@ -534,6 +559,17 @@ c.ConfigurableHTTPProxy.api_url = 'http://127.0.0.1:__PORT_HTTP_PROXY__' # backed up to a local file automatically. #c.JupyterHub.upgrade_db = False +## Callable to affect behavior of /user-redirect/ +# +# Receives 4 parameters: 1. path - URL path that was provided after /user- +# redirect/ 2. request - A Tornado HTTPServerRequest representing the current +# request. 3. user - The currently authenticated user. 4. base_url - The +# base_url of the current hub, for relative redirects +# +# It should return the new URL to redirect to, or None to preserve current +# behavior. +#c.JupyterHub.user_redirect_hook = None + #------------------------------------------------------------------------------ # Spawner(LoggingConfigurable) configuration #------------------------------------------------------------------------------ @@ -555,6 +591,19 @@ c.ConfigurableHTTPProxy.api_url = 'http://127.0.0.1:__PORT_HTTP_PROXY__' # documentation for your spawner to verify! c.Spawner.args = ['--config=__FINAL_PATH__/config/jupyter_notebook_config.py'] +## An optional hook function that you can implement to pass `auth_state` to the +# spawner after it has been initialized but before it starts. The `auth_state` +# dictionary may be set by the `.authenticate()` method of the authenticator. +# This hook enables you to pass some or all of that information to your spawner. +# +# Example:: +# +# def userdata_hook(spawner, auth_state): +# spawner.userdata = auth_state["userdata"] +# +# c.Spawner.auth_state_hook = userdata_hook +#c.Spawner.auth_state_hook = None + ## The command used for starting the single-user server. # # Provide either a string or a list containing the path to the startup script @@ -713,7 +762,7 @@ c.Spawner.default_url = '/lab' # # Note that this does *not* prevent users from accessing files outside of this # path! They can do so with many other means. -c.Spawner.notebook_dir = '~/' +#c.Spawner.notebook_dir = '' ## An HTML form for options a user can specify on launching their server. # @@ -947,7 +996,7 @@ c.Authenticator.admin_users = ["__ADMIN__"] #c.CryptKeeper.keys = [] ## The number of threads to allocate for encryption -#c.CryptKeeper.n_threads = 8 +#c.CryptKeeper.n_threads = 12 c.LDAPAuthenticator.bind_dn_template = [ "uid={username},ou=users,dc=yunohost,dc=org" ] c.LDAPAuthenticator.server_address = 'localhost' diff --git a/manifest.json b/manifest.json index 6aa18d1..ded94e8 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "name": "JupyterLab", "id": "jupyterlab", "packaging_format": 1, - "version": "1.1.4~ynh1", + "version": "1.2.6~ynh1", "description": { "en": "JupyterLab for Yunohost, an extensible environment for interactive and reproducible computing (notebook, terminal, text editor, file browser, rich outputs, etc.)", "fr": "JupyterLab pour YunoHost, un environnement informatique extensible, interactif et reproductible (bloc-notes, terminal, éditeur de texte, explorateur de fichiers, texte enrichi, etc.)" diff --git a/scripts/upgrade.d/upgrade.sh b/scripts/upgrade.d/upgrade.sh index a9fd2a3..7a28367 100644 --- a/scripts/upgrade.d/upgrade.sh +++ b/scripts/upgrade.d/upgrade.sh @@ -1 +1 @@ -jupyterlab_version="1.1.4" +jupyterlab_version="1.2.6"