Skip to content
Snippets Groups Projects
Olivier Benz's avatar
Olivier Benz authored
- Update sample jupyterhub_config.py
- Update references to current state
5e6162f9
History

Jupyter

minimal-readme compliant Project Status: Active – The project has reached a stable, usable state and is being actively developed. Donate using Liberapay

This project serves as a template to run jupyterhub with jupyterlab/r/verse in docker containers using docker compose.

Features:

  • JupyterHub: A multi-user Hub which spawns, manages, and proxies multiple instances of the single-user JupyterLab server.
    • PostgreSQL database to store information about users, services, and other data needed for operating the Hub.
  • JupyterLab: A web-based interactive development environment for Jupyter notebooks, code, and data. The custom Docker image includes
    • code-server: VS Code in the browser without MS branding/telemetry/licensing.
    • Git: A distributed version-control system for tracking changes in source code.
    • Git LFS: A Git extension for versioning large files.
    • Pandoc: A universal markup converter.
    • Python: An interpreted, object-oriented, high-level programming language with dynamic semantics.
    • Quarto: A scientific and technical publishing system built on Pandoc.
    • R: A language and environment for statistical computing and graphics.
    • radian: An alternative console for R with multiline editing and rich syntax highlight.
    • RStudio: An integrated development environment (IDE) for R.
    • TinyTeX: A lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live.
    • Zsh: A shell designed for interactive use, although it is also a powerful scripting language.
  • Pre-configured to run at a subdomain (default: jupyter) of your own domain.
  • Use of environment files for variable substitution in the Compose file.

The following extensions are pre-installed for code-server:

About:

Table of Contents

Prerequisites

The following is required:

  • A DNS record for subdomain (default: jupyter) pointing to this host.

Install

This project depends on the following Docker Deployments:

Usage

  1. Create an external docker network named "jupyter":

    docker network create jupyter
  2. Make a copy of all sample. files and folders:

    for file in sample.*; do cp -r "$file" "${file#sample.}"; done;
  3. Update environment variables JH_DOMAIN, GL_DOMAIN and JH_CERTRESOLVER_NAME in '.env':

    • Replace mydomain.com with your own domain that serves the subdomain.
    • Replace mydomain-com with a valid certificate resolvers name of Træfik.
  4. Set environment variable JH_COOKIE_SECRET in '.env':
    Generate random cookie secret:

    openssl rand -hex 32
  5. Add JupyterHub as an OAuth application in GitLab CE:

    Name: JupyterHub
    Redirect URL: https://jupyter.mydomain.com/hub/oauth_callback

    → Replace mydomain.com with your own domain that serves the subdomain.

    • Tick "Trusted"
    • Scopes:
      • Tick "api"
    • Click "Submit" and copy "Application ID" and "Secret"
  6. Update environment variables JH_GITLAB_APPLICATION_ID and JH_GITLAB_SECRET in '.env' accordingly.

  7. Update the following environment variable in 'db.env':

    • POSTGRES_PASSWORD: Superuser password for PostgreSQL (default: password)
  8. Start the container in detached mode:

    docker compose up -d

Test

Wait a moment and visit https://jupyter.mydomain.com to confirm everything went fine.

Reference deployment

Check out the reference deployment at https://demo.jupyter.b-data.ch.

Hardened and customised to meet the latest web application security standards.

Further reading

JupyterHub:

JupyterLab:

Similar projects

Contributing

PRs accepted. Please submit to the GitLab repository.

This project follows the Contributor Covenant Code of Conduct.

License

Copyright © 2020 b-data GmbH

Distributed under the terms of the MIT License.