Apache Zeppelin is a notebook for Apache Spark. Zeppelin doesn't support authentication, a requirement for multi-user environments. This is an attempt to use nginx and Docker containers to provide simple password-basd authentication.
A basic password file is needed for authentication. I don't distribute one with the containers, so you'll need to create one.
$ cd nginx_docker
$ htpasswd -cb htpasswd [user] [password]
If you need to change the Zeppelin environment file (say to point it at a cluster), modify zeppelin_docker/zeppelin-env.sh
before building the containers.
Each instance of Zeppelin will need its own ports. The default ports are 8080 and 8081. If you want to use different ports, you will need to:
- Update
zeppelin_docker/zeppelin-site.xml
- Update the exposed ports in
zeppelin_docker/Dockerfile
- Update the exposed ports in
nginx_docker/Dockerfile
- Update the ports in
nginx_docker/nginx.conf
- Update
ZEPPELIN_PORT_8080_TCP_ADDR
innginx_docker/run.sh
Note that the ports must all agree.
$ cd zeppelin_docker
$ docker build -t rnowling/zeppelin .
$ cd ../nginx_docker
$ docker build -t rnowling/nginx .
$ docker run -d --name rnowling-zeppelin rnowling/zeppelin
$ docker run -d --name nginx --link rnowling-zeppelin:zeppelin -p 8080:8080 -p 8081:8081 -v /local/notebook/path:/zeppelin/notebook rnowling/nginx
Now, point your browser to [http://localhost:8080/]
Note that you will have to authenticate twice. :( This may not be fixable according to this post.