Hello, I have started jupyterhub as a service in dockerswarm. Without nginx reverse proxy, it works without problems. When I configure nginx reverse proxy with the following configuration:
server {
listen 80;
server_name jupyter.ifora.hse.ru;
index index.html index.htm;
access_log /var/log/nginx/jupyter.ifora.hse.ru-access.log ;
error_log /var/log/nginx/jupyter.ifora.hse.ru-error.log error;
location / {
proxy_pass http://172.18.207.29:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
The following messages begin to appear in the jupyterhub logs:
upyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:35.840 JupyterHub log:181] 200 POST /hub/api/users/admin/activity (admin@10.1.13.6) 17.07ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:40.132 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.28ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:40.136 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.63ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:40.263 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 37.34ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:55.101 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 0.97ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:55.106 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.66ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:25:55.134 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 24.86ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:10.103 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.43ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:10.126 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 1.28ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:10.170 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 38.67ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:25.102 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.14ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:25.107 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.89ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:25.147 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 35.87ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:40.126 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.22ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:40.130 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.92ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:40.162 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 27.79ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:55.103 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.56ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:55.108 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.86ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:26:55.141 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 27.69ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:10.103 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.84ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:10.111 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.74ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:10.145 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 30.30ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:25.129 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.23ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:25.133 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.77ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:25.253 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 27.17ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:40.101 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.09ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:40.106 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.69ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:40.143 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 32.72ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:55.101 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.08ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:55.105 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.81ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:27:55.136 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 27.47ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:10.228 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.71ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:10.234 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 1.13ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:10.267 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 28.57ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:25.101 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.28ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:25.106 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.97ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:25.140 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 30.08ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:40.101 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.76ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:40.108 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 1.94ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:40.145 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 32.96ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:55.100 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 0.88ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:55.109 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 0.92ms
jupyter_hub.1.vkcroo6bu1zt@swarm_manager | [I 2020-08-18 12:28:55.150 JupyterHub log:181] 200 GET /hub/login (@172.18.207.29) 36.64ms
After a few hours jupyterhub stops working and has the following error in its logs:
[E 2020-08-19 11:03:55.159 JupyterHub log:181] 500 GET /hub/login (@172.18.207.29) 50.32ms
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [I 2020-08-19 11:04:10.102 JupyterHub log:181] 302 GET / -> /hub/ (@172.18.207.29) 1.46ms
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [I 2020-08-19 11:04:10.127 JupyterHub log:181] 302 GET /hub/ -> /hub/login (@172.18.207.29) 1.47ms
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [E 2020-08-19 11:04:10.136 JupyterHub web:1792] Uncaught exception GET /hub/login (172.18.207.29)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | HTTPServerRequest(protocol=‘http’, host=‘jupyter.ifora.hse.ru’, method=‘GET’, uri=’/hub/login’, version=‘HTTP/1.1’, remote_ip=‘172.18.207.29’)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | Traceback (most recent call last):
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/tornado/web.py”, line 1703, in _execute
jupyter_hub.1.ry6cazaavyrc@swarm_manager | result = await result
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/login.py”, line 135, in get
jupyter_hub.1.ry6cazaavyrc@swarm_manager | self.finish(self._render(username=username))
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/nativeauthenticator/handlers.py”, line 151, in _render
jupyter_hub.1.ry6cazaavyrc@swarm_manager | {‘next’: self.get_argument(‘next’, ‘’)},
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py”, line 1160, in render_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | template = self.get_template(name)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py”, line 1154, in get_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self.settings[‘jinja2_env’].get_template(name)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 883, in get_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self._load_template(name, self.make_globals(globals))
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 857, in _load_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | template = self.loader.load(self, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [Previous line repeated 958 more times]
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 127, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | code = environment.compile(source, name, filename)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 628, in compile
jupyter_hub.1.ry6cazaavyrc@swarm_manager | source = self._parse(source, name, filename)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 539, in parse
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return Parser(self, source, name, encode_filename(filename)).parse()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 937, in parse
jupyter_hub.1.ry6cazaavyrc@swarm_manager | result = nodes.Template(self.subparse(), lineno=1)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 919, in subparse
jupyter_hub.1.ry6cazaavyrc@swarm_manager | rv = self.parse_statement()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 141, in parse_statement
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return getattr(self, “parse” + self.stream.current.value)()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 279, in parse_extends
jupyter_hub.1.ry6cazaavyrc@swarm_manager | node.template = self.parse_expression()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 448, in parse_expression
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self.parse_condexpr()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 453, in parse_condexpr
jupyter_hub.1.ry6cazaavyrc@swarm_manager | expr1 = self.parse_or()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 466, in parse_or
jupyter_hub.1.ry6cazaavyrc@swarm_manager | left = self.parse_and()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 475, in parse_and
jupyter_hub.1.ry6cazaavyrc@swarm_manager | left = self.parse_not()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 486, in parse_not
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self.parse_compare()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 490, in parse_compare
jupyter_hub.1.ry6cazaavyrc@swarm_manager | expr = self.parse_math1()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 513, in parse_math1
jupyter_hub.1.ry6cazaavyrc@swarm_manager | left = self.parse_concat()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 524, in parse_concat
jupyter_hub.1.ry6cazaavyrc@swarm_manager | args = [self.parse_math2()]
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 534, in parse_math2
jupyter_hub.1.ry6cazaavyrc@swarm_manager | left = self.parse_pow()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 545, in parse_pow
jupyter_hub.1.ry6cazaavyrc@swarm_manager | left = self.parse_unary()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 563, in parse_unary
jupyter_hub.1.ry6cazaavyrc@swarm_manager | node = self.parse_primary()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 580, in parse_primary
jupyter_hub.1.ry6cazaavyrc@swarm_manager | next(self.stream)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 387, in next
jupyter_hub.1.ry6cazaavyrc@swarm_manager | self.current = next(self._iter)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 660, in wrap
jupyter_hub.1.ry6cazaavyrc@swarm_manager | yield Token(lineno, token, value)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | RecursionError: maximum recursion depth exceeded
jupyter_hub.1.ry6cazaavyrc@swarm_manager |
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [E 2020-08-19 11:04:10.175 JupyterHub web:1220] Uncaught exception in write_error
jupyter_hub.1.ry6cazaavyrc@swarm_manager | Traceback (most recent call last):
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/tornado/web.py”, line 1218, in send_error
jupyter_hub.1.ry6cazaavyrc@swarm_manager | self.write_error(status_code, **kwargs)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py”, line 1244, in write_error
jupyter_hub.1.ry6cazaavyrc@swarm_manager | html = self.render_template(‘error.html’, **ns)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py”, line 1160, in render_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | template = self.get_template(name)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py”, line 1154, in get_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self.settings[‘jinja2_env’].get_template(name)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 883, in get_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return self._load_template(name, self.make_globals(globals))
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 857, in _load_template
jupyter_hub.1.ry6cazaavyrc@swarm_manager | template = self.loader.load(self, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 426, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return loader.load(environment, name, globals)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [Previous line repeated 959 more times]
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/loaders.py”, line 127, in load
jupyter_hub.1.ry6cazaavyrc@swarm_manager | code = environment.compile(source, name, filename)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 628, in compile
jupyter_hub.1.ry6cazaavyrc@swarm_manager | source = self._parse(source, name, filename)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 539, in _parse
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return Parser(self, source, name, encode_filename(filename)).parse()
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/parser.py”, line 45, in init
jupyter_hub.1.ry6cazaavyrc@swarm_manager | self.stream = environment._tokenize(source, name, filename, state)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/environment.py”, line 573, in _tokenize
jupyter_hub.1.ry6cazaavyrc@swarm_manager | stream = self.lexer.tokenize(source, name, filename, state)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 616, in tokenize
jupyter_hub.1.ry6cazaavyrc@swarm_manager | return TokenStream(self.wrap(stream, name, filename), name, filename)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 334, in init
jupyter_hub.1.ry6cazaavyrc@swarm_manager | next(self)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 387, in next
jupyter_hub.1.ry6cazaavyrc@swarm_manager | self.current = next(self._iter)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | File “/usr/local/lib/python3.6/dist-packages/jinja2/lexer.py”, line 660, in wrap
jupyter_hub.1.ry6cazaavyrc@swarm_manager | yield Token(lineno, token, value)
jupyter_hub.1.ry6cazaavyrc@swarm_manager | RecursionError: maximum recursion depth exceeded
jupyter_hub.1.ry6cazaavyrc@swarm_manager |
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [E 2020-08-19 11:04:10.193 JupyterHub log:173] {
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “X-Forwarded-Host”: “jupyter.ifora.hse.ru”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “X-Forwarded-Proto”: “http”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “X-Forwarded-Port”: “80”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “Referer”: “http://172.18.207.37/hub/”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “User-Agent”: “Go-http-client/1.1”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “Connection”: “close”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “X-Forwarded-For”: “172.18.207.29,::ffff:10.255.0.2”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “Host”: “jupyter.ifora.hse.ru”,
jupyter_hub.1.ry6cazaavyrc@swarm_manager | “X-Real-Ip”: “172.18.207.29”
jupyter_hub.1.ry6cazaavyrc@swarm_manager | }
jupyter_hub.1.ry6cazaavyrc@swarm_manager | [E 2020-08-19 11:04:10.193 JupyterHub log:181] 500 GET /hub/login (@172.18.207.29) 61.07ms
Please help me solve the problem.
Dockerfile jupyterhub:
FROM jupyterhub/jupyterhub:1.2
USER root
RUN pip install notebook
RUN pip install --no-cache dockerspawner
RUN pip3 install psycopg2-binary
RUN pip install --no-cache jupyterhub-nativeauthenticator
jupyterhub_config.py:
import os
#Определение переменной JPY_DB_PASSWORD для подключения к базе данных jupyter на сервере pg_cluster_01
#f = open("/var/run/secrets/jupyterhub_postgres_pass", “r”)
#os.environ[‘JPY_DB_PASSWORD’] = (f.read())
#Изменение рабочей директории пользователей в контейнере
notebook_dir = ‘/home/jovyan’
c.SwarmSpawner.notebook_dir = notebook_dir
#Монтирование папки с хоста в папку home пользователей в контейнера
def create_dir_hook(spawner):
username = spawner.user.name # get the username
volume_path = os.path.join(’/home/data/jupyterhub_data/’, username)
if not os.path.exists(volume_path):
os.makedirs(volume_path)
os.chmod(volume_path, 0o777)
mounts_user = [
{‘type’: ‘bind’,
‘source’: ‘/home/data/jupyterhub_data/’ + username,
‘target’: ‘/home/jovyan’, }
]
spawner.extra_container_spec = {
‘mounts’: mounts_user
}
c.Spawner.pre_spawn_hook = create_dir_hook
#Определение пользователя admin
c.Authenticator.admin_users = {‘admin’}
#Автоматически создавать пользователя на сервере после добавления пользователя через панель управления jupyterhub
c.LocalAuthenticator.create_system_users = True
#Подключение к базе данных postgresql
c.JupyterHub.db_url = “postgresql://{}@{}:{}/{}”.format(
os.environ[‘JPY_DB_USER’],
os.environ[‘POSTGRES_PORT_5432_TCP_ADDR’],
os.environ[‘POSTGRES_PORT_5432_TCP_PORT’],
os.environ[‘JPY_DB_NAME’]
)
#Использовать собственную аутентификацию jupiterhub
c.JupyterHub.authenticator_class = ‘nativeauthenticator.NativeAuthenticator’
#Сделать интерфейс jupyterlab по умолчанию
c.SwarmSpawner.default_url = ‘/lab’
#Использовать свой docker образ для серверов пользователей
c.SwarmSpawner.image = ‘abashkin/jupyterhub_singleuser:1.2’
c.ConfigurableHTTPProxy.should_start = True
#c.Spawner.default_url = ‘/lab’
c.JupyterHub.spawner_class = ‘dockerspawner.SwarmSpawner’
c.SwarmSpawner.network_name = “jupyter_jupyterhub-net”
c.SwarmSpawner.extra_host_config = { ‘network_mode’: “jupyter_jupyterhub-net” }
#c.SwarmSpawner.extra_create_kwargs.update({ ‘volume_driver’: ‘local’ })
c.SwarmSpawner.remove_containers = True
c.SwarmSpawner.debug = True
c.JupyterHub.hub_ip = ‘0.0.0.0’
c.JupyterHub.hub_port = 8081
c.SwarmSpawner.host_ip = “0.0.0.0”
c.SwarmSpawner.extra_placement_spec = {
‘constraints’: [‘node.hostname == cruncher_01’],
}
c.JupyterHub.port = 8000
#c.JupyterHub.ssl_key = os.environ[‘SSL_KEY’]
#c.JupyterHub.ssl_cert = os.environ[‘SSL_CERT’]
c.SwarmSpawner.http_timeout = 300
c.SwarmSpawner.start_timeout = 300
config docker swarm service:
version: ‘3.7’
networks:
jupyterhub-net:
driver: overlay
configs:
jupyterhub_config:
file: ./config/jupyterhub_config.py
services:
hub:
image: registry.ifora.hse.ru/jupyterhub:1.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
JPY_DB_USER: jupyter
POSTGRES_PORT_5432_TCP_ADDR: 172.18.207.27
POSTGRES_PORT_5432_TCP_PORT: 5432
JPY_DB_NAME: jupyter
configs: - source: jupyterhub_config
target: /srv/jupyterhub/jupyterhub_config.py
deploy:
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.hostname == swarm_manager]
networks: - jupyterhub-net
ports: - 8000:8000
logging:
driver: gelf
options:
gelf-address: “udp://172.18.207.46:12201”
tag: “jupyter_hub”