diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7d476f5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "oauthenticator"] + path = oauthenticator + url = https://github.com/jupyter/oauthenticator.git +[submodule "dockerspawner"] + path = dockerspawner + url = https://github.com/jupyter/dockerspawner.git diff --git a/Dockerfile b/Dockerfile index e2fb80d..7810ee4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,10 @@ FROM jupyter/jupyterhub MAINTAINER Project Jupyter # Install oauthenticator from git -RUN pip install git+git://github.com/jupyter/oauthenticator.git -RUN pip install git+git://github.com/jupyter/dockerspawner.git +ADD oauthenticator /src/oauthenticator +ADD dockerspawner /src/dockerspawner +RUN pip install /src/oauthenticator +RUN pip install /src/dockerspawner # Create oauthenticator directory and put necessary files in it RUN mkdir /srv/oauthenticator diff --git a/README.md b/README.md index 8adcfd4..01d4afd 100644 --- a/README.md +++ b/README.md @@ -3,29 +3,45 @@ Example of running [JupyterHub](https://github.com/jupyter/jupyterhub) with [GitHub OAuth](https://developer.github.com/v3/oauth/) for authentication. -## setup +## Variables -Edit the file called `userlist` to include one GitHub user name per line. -If that user should be an admin (you!), add `admin` after a space. -For example: +### General variables ``` -mal admin -zoe admin -wash -inara admin -kaylee -jayne -simon -river +ADMINS=balkian,oaraque +OAUTH_CALLBACK_URL=http://hub.cluster.gsi.dit.upm.es/hub/oauth_callback +HOST_HOMEDIR=/mnt/home/{username} # {username} will be replaced by the actual OAuth user +``` + +## Gitlab variables: + +``` +GITLAB_HOST=https://lab.cluster.gsi.dit.upm.es/ +GITLAB_CLIENT_ID=TheMaxiID +GITLAB_CLIENT_SECRET=TheMaxiSecret +OAUTH_CLASS=oauthenticator.gitlab.GitLabOAuthenticator +DATASETS_DIR=/home/datasets # READ ONLY +COMMON_DIR=/home/common # To share files between users +``` + +## GitHub variables: + +``` +GITHUB_CLIENT_ID=GHId +GITHUB_CLIENT_SECRET=GHSecret +OAUTH_CLASS=oauthenticator.github.GitHubOAuthenticator ``` ## build Build the container with: - docker build -t jupyter/oauthenticator . + make build + +Alternatively: + + docker build -t gsiupm/jupyter-oauth:testing . ### ssl @@ -34,9 +50,13 @@ ssl/ssl.cert. ## run -Add your oauth client id, client secret, and callback URL to the `env file`. +Add your oauth client id, client secret, and callback URL to your `env file` (i.e. `.env`). Once you have built the container, you can run it with: - docker run -it -p 8000:8000 --env-file=env jupyter/oauthenticator + make run + +Alternatively: + + docker run -it -p 8000:8000 --env-file=env gsiupm/jupyter-oauth:testing Which will run the Jupyter server. diff --git a/VERSION b/VERSION index 810ee4e..d3bdbdf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.6 +1.7 diff --git a/dockerspawner b/dockerspawner new file mode 160000 index 0000000..f0ea6d0 --- /dev/null +++ b/dockerspawner @@ -0,0 +1 @@ +Subproject commit f0ea6d065c8a6a2be3e1295e2e30ab17f312a273 diff --git a/jupyterhub_config.py b/jupyterhub_config.py index 974ae35..342f179 100644 --- a/jupyterhub_config.py +++ b/jupyterhub_config.py @@ -29,6 +29,16 @@ c.DockerSpawner.notebook_dir = notebook_dir # notebook directory in the container c.DockerSpawner.volumes = { HOME_FORMAT_STRING: notebook_dir } +common = os.environ.get('COMMON_DIR') + +if common: + c.DockerSpawner.volumes[common] = join(notebook_dir, 'common') + +dsdir = os.environ.get('DATASETS_DIR') + +if dsdir: + c.DockerSpawner.read_only_volumes = { dsdir: join(notebook_dir, 'DATASETS')} + import socket ips = ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1]) c.JupyterHub.hub_ip = ips[0] diff --git a/oauthenticator b/oauthenticator new file mode 160000 index 0000000..fb38f60 --- /dev/null +++ b/oauthenticator @@ -0,0 +1 @@ +Subproject commit fb38f60a5611056653bedf7416dbc922394b7cf8