{"id":22481931,"url":"https://github.com/elixirnote/elixirhub","last_synced_at":"2026-04-30T00:32:26.853Z","repository":{"id":45835713,"uuid":"514529239","full_name":"ElixirNote/elixirhub","owner":"ElixirNote","description":"Hub of elixirNote ","archived":false,"fork":false,"pushed_at":"2022-07-17T13:24:37.000Z","size":8825,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-01T21:47:19.236Z","etag":null,"topics":["deepnote","hex","jupyter","jupyter-notebook","jupyterhub","jupyterhub-service","notebook","notebook-publish"],"latest_commit_sha":null,"homepage":"https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ElixirNote.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2022-07-16T09:05:15.000Z","updated_at":"2023-03-21T00:10:55.000Z","dependencies_parsed_at":"2022-07-19T12:59:24.749Z","dependency_job_id":null,"html_url":"https://github.com/ElixirNote/elixirhub","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElixirNote%2Felixirhub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElixirNote%2Felixirhub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElixirNote%2Felixirhub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElixirNote%2Felixirhub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ElixirNote","download_url":"https://codeload.github.com/ElixirNote/elixirhub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245906017,"owners_count":20691883,"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","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":["deepnote","hex","jupyter","jupyter-notebook","jupyterhub","jupyterhub-service","notebook","notebook-publish"],"created_at":"2024-12-06T16:17:22.696Z","updated_at":"2026-04-30T00:32:21.819Z","avatar_url":"https://github.com/ElixirNote.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"/share/jupyterhub/static/images/elixirhub.svg\" width=120 alt=\"logo\" /\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003csmall\u003eHub of ElixirNote\u003c/small\u003e\n\u003c/div\u003e\n\n# ElixirHub\n\nWith [ElixirHub](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub) you can create a\n**multi-user Hub** that spawns, manages, and proxies multiple instances of the\nsingle-user [ElixirNote](https://ciusji.gitbook.io/elixirnote/)\nserver.\n\n[Project ElixirNote](https://github.com/ElixirNote) created ElixirHub to support many\nusers. The Hub can offer notebook servers to a class of students, a corporate\ndata science workgroup, a scientific research project, or a high-performance\ncomputing group.\n\n\n## Screenshot \u0026 Gits\n\n### Dashboard\n\n![dashboard](/share/jupyterhub/static/images/dashboard.png)\n\n### Extensions\n\n![extensions](/share/jupyterhub/static/images/extensions.png)\n\n### ElixirNote Launch\n\n![launch](/share/jupyterhub/static/images/launch.png)\n\n\n## Technical overview\n\nThree main actors make up ElixirHub:\n\n- multi-user **Hub** (tornado process)\n- configurable http **proxy** (node-http-proxy)\n- multiple **single-user ElixirNote servers** (Python/Jupyter/tornado)\n\nBasic principles for operation are:\n\n- Hub launches a proxy.\n- The Proxy forwards all requests to Hub by default.\n- Hub handles login and spawns single-user servers on demand.\n- Hub configures proxy to forward URL prefixes to the single-user notebook\n  servers.\n\n\n## Installation\n\n### Check prerequisites\n\n- A Linux/Unix based system\n- [Python](https://www.python.org/downloads/) 3.6 or greater\n- [nodejs/npm](https://www.npmjs.com/)\n\n  - If you are using **`conda`**, the nodejs and npm dependencies will be installed for\n    you by conda.\n\n  - If you are using **`pip`**, install a recent version (at least 12.0) of\n    [nodejs/npm](https://docs.npmjs.com/getting-started/installing-node).\n\n- If using the default PAM Authenticator, a [pluggable authentication module (PAM)](https://en.wikipedia.org/wiki/Pluggable_authentication_module).\n- TLS certificate and key for HTTPS communication\n- Domain name\n\n### Install packages\n\n#### Using `pip` locally\n\nElixirHub can be installed with `pip`, and the proxy with `npm`:\n\n```bash\ngit clone git@github.com:ElixirNote/elixirhub.git\nnpm install -g configurable-http-proxy\npip3 install jhub_cas_authenticator\ncd jupyterhub\npip3 install .\n```\nIf any problems, please contact bqjimaster@gmail.com.\n\n### Run the Hub server\n\nTo start the Hub server, run the command:\n\n    elixirhub\n\nVisit `http://localhost:8000` in your browser, and sign in with your system username and password.\n\n_Note_: To allow multiple users to sign in to the server, you will need to\nrun the `elixirhub` command as a _privileged user_, such as root.\n\n\n## Configuration\n\nThe [Getting Started](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub/get-started) section of the\ndocumentation explains the common steps in setting up ElixirHub.\n\nThe [**ElixirHub tutorial**](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub/get-started)\nprovides an in-depth video and sample configurations of ElixirHub.\n\n### Start the Hub\n\nTo start the Hub on a specific url and port `10.0.1.2:443` with **https**:\n\n    elixirhub --ip 10.0.1.2 --port 443 --ssl-key my_ssl.key --ssl-cert my_ssl.cert\n\n### Authenticators\n\n| Authenticator                                                                | Description                                       |\n| ---------------------------------------------------------------------------- | ------------------------------------------------- |\n| PAMAuthenticator                                                             | Built-in authenticator                   |\n| [OAuthenticator](https://github.com/jupyterhub/oauthenticator)               | OAuth + JupyterHub Authenticator = OAuthenticator |\n| [ldapauthenticator](https://github.com/jupyterhub/ldapauthenticator)         | Simple LDAP Authenticator Plugin for JupyterHub   |\n| [kerberosauthenticator](https://github.com/jupyterhub/kerberosauthenticator) | Kerberos Authenticator Plugin for JupyterHub      |\n\n### Spawners\n\n| Spawner                                                        | Description                                                                |\n| -------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| LocalProcessSpawner                                            | Default, built-in spawner starts single-user servers as local processes    |\n| [dockerspawner](https://github.com/jupyterhub/dockerspawner)   | Spawn single-user servers in Docker containers                             |\n| [kubespawner](https://github.com/jupyterhub/kubespawner)       | Kubernetes spawner for JupyterHub                                          |\n| [sudospawner](https://github.com/jupyterhub/sudospawner)       | Spawn single-user servers without being root                               |\n| [systemdspawner](https://github.com/jupyterhub/systemdspawner) | Spawn single-user notebook servers using systemd                           |\n| [batchspawner](https://github.com/jupyterhub/batchspawner)     | Designed for clusters using batch scheduling software                      |\n| [yarnspawner](https://github.com/jupyterhub/yarnspawner)       | Spawn single-user notebook servers distributed on a Hadoop cluster         |\n| [wrapspawner](https://github.com/jupyterhub/wrapspawner)       | WrapSpawner and ProfilesSpawner enabling runtime configuration of spawners |\n\n## Docker\n\nA starter [**docker image for ElixirHub**](https://hub.docker.com/r/jupyterhub/jupyterhub/)\ngives a baseline deployment of JupyterHub using Docker.\n\n**Important:** This `ElixirNote/elixirhub` image contains only the Hub itself,\nwith no configuration. In general, one needs to make a derivative image, with\nat least a `elixirhub_config.py` setting up an Authenticator and/or a Spawner.\nTo run the single-user servers, which may be on the same system as the Hub or\nnot, ElixirNote version 4 or greater must be installed.\n\nThe JupyterHub docker image can be started with the following command:\n\n    docker run -p 8000:8000 -d --name elixirhub ElixirNote/elixirhub elixirhub\n\nThis command will create a container named `elixirhub` that you can\n**stop and resume** with `docker stop/start`.\n\nThe Hub service will be listening on all interfaces at port 8000, which makes\nthis a good choice for **testing ElixirHub on your desktop or laptop**.\n\nIf you want to run docker on a computer that has a public IP then you should\n(as in MUST) **secure it with ssl** by adding ssl options to your docker\nconfiguration or by using a ssl enabled proxy.\n\n[Mounting volumes](https://docs.docker.com/engine/admin/volumes/volumes/) will\nallow you to **store data outside the docker image (host system) so it will be persistent**, even when you start\na new image.\n\nThe command `docker exec -it elixirhub bash` will spawn a root shell in your docker\ncontainer. You can **use the root shell to create system users in the container**.\nThese accounts will be used for authentication in ElixrHub's default configuration.\n\n## Contributing\n\nIf you would like to contribute to the project, please read our \n[`CONTRIBUTING.md`](CONTRIBUTING.md). The `CONTRIBUTING.md` file\nexplains how to set up a development installation, how to run the test suite,\nand how to contribute to documentation.\n\n\n### A note about platform support\n\nElixirHub is supported on Linux/Unix based systems.\n\nElixirHub officially **does not** support Windows. You may be able to use\nElixirHub on Windows if you use a Spawner and Authenticator that work on\nWindows, but the ElixirHub defaults will not. Bugs reported on Windows will not\nbe accepted, and the test suite will not run on Windows. Small patches that fix\nminor Windows compatibility issues (such as basic installation) **may** be accepted,\nhowever. For Windows-based systems, we would recommend running JupyterHub in a\ndocker container or Linux VM.\n\n[Additional Reference:](http://www.tornadoweb.org/en/stable/#installation) Tornado's documentation on Windows platform support\n\n\n## License\n\nWe use a shared copyright model that enables all contributors to maintain the\ncopyright on their contributions.\n\nAll code is licensed under the terms of the [revised BSD license](./COPYING.md).\n\n\n## Help and resources\n\nWe encourage you to ask questions and share ideas on the [Jupyter community forum](https://discourse.jupyter.org/).\nYou can also talk with us on our JupyterHub [Gitter](https://gitter.im/jupyterhub/jupyterhub) channel.\n\n- [Reporting Issues](https://github.com/jupyterhub/jupyterhub/issues)\n- [JupyterHub tutorial](https://github.com/jupyterhub/jupyterhub-tutorial)\n- [Documentation for JupyterHub](https://jupyterhub.readthedocs.io/en/latest/) | [PDF (latest)](https://media.readthedocs.org/pdf/jupyterhub/latest/jupyterhub.pdf) | [PDF (stable)](https://media.readthedocs.org/pdf/jupyterhub/stable/jupyterhub.pdf)\n- [Documentation for JupyterHub's REST API][rest api]\n- [Documentation for Project Jupyter](http://jupyter.readthedocs.io/en/latest/index.html) | [PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)\n- [Project Jupyter website](https://jupyter.org)\n- [Project Jupyter community](https://jupyter.org/community)\n\nJupyterHub follows the Jupyter [Community Guides](https://jupyter.readthedocs.io/en/latest/community/content-community.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixirnote%2Felixirhub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixirnote%2Felixirhub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixirnote%2Felixirhub/lists"}