{"id":21037606,"url":"https://github.com/faranalytics/collaborative_jupyterlab","last_synced_at":"2025-10-20T07:59:53.871Z","repository":{"id":170466111,"uuid":"646582663","full_name":"faranalytics/collaborative_jupyterlab","owner":"faranalytics","description":"Instructions for building a Docker image for a collaborative instance of JupyterLab.","archived":false,"fork":false,"pushed_at":"2023-06-03T16:50:21.000Z","size":265,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T20:42:51.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faranalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-28T21:09:27.000Z","updated_at":"2023-07-01T16:50:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"4b389c86-3995-4b99-8ea5-9067114c74eb","html_url":"https://github.com/faranalytics/collaborative_jupyterlab","commit_stats":null,"previous_names":["faranalytics/collaborative_jupyterlab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/faranalytics/collaborative_jupyterlab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faranalytics%2Fcollaborative_jupyterlab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faranalytics%2Fcollaborative_jupyterlab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faranalytics%2Fcollaborative_jupyterlab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faranalytics%2Fcollaborative_jupyterlab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faranalytics","download_url":"https://codeload.github.com/faranalytics/collaborative_jupyterlab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faranalytics%2Fcollaborative_jupyterlab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280050831,"owners_count":26263884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T13:27:09.975Z","updated_at":"2025-10-20T07:59:53.854Z","avatar_url":"https://github.com/faranalytics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Containerized Collaborative JupyterHub Implementation \n\n## Introduction\n\nThis repository contains instructions for building a Docker image that can be ran in a container that exposes an instance of JupyterHub on port 8443 that redirects users to a collaborative instance of JupyterLab.  \n\nA single JupyterLab instance is started as a JupyterHub managed service.  When a user authenticates the user is redirected to the JupyterHub managed JupyterLab service, as opposed to being redirected to their own instance.  \n\nThis implementation could be used for tutoring or collaborative \"office hours\".\n\nThe configuration assumes GitHub OAuth.  \n\n## Warning\n\nJupyterLab permits remote data access and remote code execution.  Security should be implemented in accordance with your requirements.  \n\n##  Usage\n\n### SSL Certificates\n\nCopy the SSL certificate file for your domain to `./secrets/ssl.crt`.\n\nCopy the SSL key file for your domain to `./secrets/ssl.key`.\n\n### Configuration\n\nCopy the `./jupyterhub_config_example.py` file to `./jupyterhub_config.py`.  Open the configuration file in an editor.\n\n#### Add a list of GitHub users to the USERS list.\n\nThe GitHub users in this list will be allowed to authenticate with the GitHub Authenticator i.e., `c.Authenticator.allowed_users = USERS`.\n\nFor example:\n\n```py\nUSERS = [\"a-github-user-name\", \"another-github-user-name\"]\n```\n\n#### Configure [OAuth](https://jupyterhub.readthedocs.io/en/stable/howto/configuration/config-ghoauth.html).\n\n```py\nc.GitHubOAuthenticator.oauth_callback_url = \"\"\nc.GitHubOAuthenticator.client_id = \"\"\nc.GitHubOAuthenticator.client_secret = \"\"\n```\n\n### Build the Image\n\n```bash\ndocker build --build-arg CACHE_INVALIDATE=$(date +%s) -t collaborative_jupyterlab .\n```\n\n### Run the Image in a Container\n\n```bash\ndocker run -p 8443:8443 collaborative_jupyterlab\n```\n\n### Authenticate and Collaborate\n\n```\nhttps://example.com:8443\n```\n\n![Untitled](Untitled.png)\n\n## References\n\nhttps://github.com/jupyterhub/jupyterhub/tree/4.0.0/examples/service-notebook\n\nhttps://jupyterhub.readthedocs.io/en/stable/reference/services.html\n\nhttps://jupyterhub.readthedocs.io/en/stable/rbac/index.html\n\nhttps://jupyterhub.readthedocs.io/en/stable/reference/config-reference.html\n\n## Aspirations\n\nConfigure iptables/nftables in order to prevent outgoing connections.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaranalytics%2Fcollaborative_jupyterlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaranalytics%2Fcollaborative_jupyterlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaranalytics%2Fcollaborative_jupyterlab/lists"}