How to package JupyterHUB locally on Intranet

I need to deploy JupyterHUB-K8s locally on minikube inside the intranet environment with no internet access. I can only download the files outside of this environment and get them inside the base image ubuntu 22.04.
I have docker installed but cant use docker hub to pull the images. However I can create docker file for a new build on the Ubuntu base image. What steps do I need to follow to package the whole jupyterHUB keeping all its dependencies locally downloaded? and what all dependent files do I need to download for this? I want to create a docker file to build a JupyterHUB image on Ubuntu base 22.04.

If you just want a way to transfer a container image offline you can use docker save and docker load:

If you want to build the hub image form scratch you’ll need to recursively download the dependencies. Start from the official Z2JH hub image:

The configurable-http-proxy image:

Thanks @manics Hub image is built with no issues.
Configurable-http-proxy is also getting built but failed during the vulnerability checks.


I tried putting this command “npm install tough-cookie@latest --save” to upgrade the tough-cookie to latest in the docker file. Somehow still getting the same error during vulnerability checks.
I am using ubuntu:22.04 as my base image

If you possibly can, going to jupyterhub-traefik-proxy will remove your runtime dependency on configurable-http-proxy, and very likely, nodejs, which is an overall win from a vulnerability-checking perspective.

1 Like

I am getting an error while building a docker image with this repo “GitHub - jupyterhub/configurable-http-proxy: node-http-proxy plus a REST API

Below is the error

=> ERROR [2/6] RUN apk upgrade --no-cache && apk add --no-cache curl jq 43.4s

[2/6] RUN apk upgrade --no-cache && apk add --no-cache curl jq:
0.880 fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz
22.14 486B9BCA857F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:ssl/record/rec_layer_s3.c:303:
22.15 fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86_64/APKINDEX.tar.gz
22.15 WARNING: fetching https://dl-cdn.alpinelinux.org/alpine/v3.18/main: Permission denied
43.34 486B9BCA857F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:ssl/record/rec_layer_s3.c:303:
43.34 WARNING: fetching https://dl-cdn.alpinelinux.org/alpine/v3.18/community: Permission denied
43.34 ERROR: Not continuing due to stale/unavailable repositories.Use --force-missing-repositories to continue.


Dockerfile:13

12 | # vulnerabilities if needed.
13 | >>> RUN apk upgrade --no-cache
14 | >>> && apk add --no-cache
15 | >>> curl
16 | >>> jq

17
ERROR: failed to solve: process “/bin/sh -c apk upgrade --no-cache && apk add --no-cache curl jq” did not complete successfully: exit code: 99

Can anyone please help fixing this error?

When I built this proxy image on redhat/ubi8. I got the vulnerability fixed. However its not getting containerized on the kubernetes cluster. The error that I get in the pod is “env: ‘node\r’: No such file or directory”.
So I thought of building the image as it is as mentioned in “GitHub - jupyterhub/configurable-http-proxy: node-http-proxy plus a REST API”. But that is also failed.