# Can't access TLJH via a browser

**URL:** <https://discourse.jupyter.org/t/cant-access-tljh-via-a-browser/17828>\
**Category:** JupyterHub\
**Tags:** help-wanted\
**Created:** [February 3, 2023, 2:27pm UTC](https://discourse.jupyter.org/t/cant-access-tljh-via-a-browser/17828 "2023-02-03T14:27:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![CRLFx0D0A](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@CRLFx0D0A](https://discourse.jupyter.org/u/CRLFx0D0A)\
**Post date:** [February 3, 2023, 2:27pm UTC](https://discourse.jupyter.org/t/cant-access-tljh-via-a-browser/17828/1 "2023-02-03T14:27:21Z")

</div>

Hello,

I installed TLJH on Ubuntu Server 22.04 (This should work: [removed bc I can only include 2 links] github[dot]com/jupyterhub/the-littlest-jupyterhub/issues/813) on a local machine - following these instructions:

> **[Installing on your own server](https://tljh.jupyter.org/en/latest/install/custom-server.html)**
>
> Follow this guide if your cloud provider doesn’t have a direct tutorial, or you are setting this up on a bare metal server. Goal: By the end of this tutorial, you should have a JupyterHub with some...

except I didn’t use Ubuntu 18.04.  
This version said to use 18.04 or 20.04: [removed bc I can only include 2 links] [The Littlest JupyterHub — The Littlest JupyterHub documentation](http://tljh.jupyter.org/en/latest/)

And afaik the installation finished.

(Firewall config should be fine, as it is turned off for now. Also on my first try I also installed nextcloud and got to the loginscreen of nextcloud.)

I found this older entry on github: github[dot]com/jupyterhub/the-littlest-jupyterhub/issues/438

> $ sudo journalctl -u traefik
> 
> Feb 03 14:11:17 jhub systemd[1]: traefik.service: Deactivated successfully.  
> Feb 03 14:11:17 jhub systemd[1]: Stopped traefik.service.  
> Feb 03 14:11:17 jhub systemd[1]: Started traefik.service.  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Using TOML configuration file /opt/tljh/state/traefik.toml”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Traefik version v1.7.33 built on 2021-10-07\_02:55:02PM”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature\>  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg="Preparing server auth\_api &{Address:127.0.0.1:8099 TLS: Redirect: Auth\>  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg="Preparing server http &{Address::100 TLS: Redirect: Auth: Whiteli\>  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Starting provider configuration.ProviderAggregator {}”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg="Starting provider \*file.Provider {"Watch":true,"Filename":"","Constraints\>  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Starting server on :100”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Starting server on 127.0.0.1:8099”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Server configuration reloaded on :100”  
> Feb 03 14:11:17 jhub traefik[1157]: time=“2023-02-03T14:11:17Z” level=info msg=“Server configuration reloaded on 127.0.0.1:8099”

> sudo journalctl -u jupyterhub  
> Feb 03 13:51:17 jhub systemd[1]: jupyterhub.service: Main process exited, code=exited, status=1/FAILURE  
> Feb 03 13:51:17 jhub systemd[1]: jupyterhub.service: Failed with result ‘exit-code’.  
> Feb 03 13:51:17 jhub systemd[1]: jupyterhub.service: Scheduled restart job, restart counter is at 4.  
> Feb 03 13:51:17 jhub systemd[1]: Stopped jupyterhub.service.  
> Feb 03 13:51:17 jhub systemd[1]: Started jupyterhub.service.  
> Feb 03 13:51:18 jhub python3[999]: /opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/app.py:2999: DeprecationWarning: There is no current event loop  
> Feb 03 13:51:18 jhub python3[999]: task = asyncio.ensure\_future(self.launch\_instance\_async(argv))  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.261 JupyterHub app:2480] Running JupyterHub version 1.5.1  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.261 JupyterHub app:2510] Using Authenticator: firstuseauthenticator.firstuseauthenticator.FirstUseAuth\>  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.261 JupyterHub app:2510] Using Spawner: traitlets.traitlets.UserCreatingSpawner-5.9.0  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.261 JupyterHub app:2510] Using Proxy: jupyterhub\_traefik\_proxy.toml.TraefikTomlProxy-0+unknown  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.264 JupyterHub app:1554] Loading cookie\_secret from /opt/tljh/state/jupyterhub\_cookie\_secret  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.294 alembic.runtime.migration migration:205] Context impl SQLiteImpl.  
> Feb 03 13:51:18 jhub python3[999]: [I 2023-02-03 13:51:18.294 alembic.runtime.migration migration:208] Will assume non-transactional DDL.  
> Feb 03 13:51:18 jhub python3[999]: [E 2023-02-03 13:51:18.297 JupyterHub app:2991]  
> Feb 03 13:51:18 jhub python3[999]: Traceback (most recent call last):  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/app.py”, line 2988, in launch\_instance\_async  
> Feb 03 13:51:18 jhub python3[999]: await self.initialize(argv)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/app.py”, line 2522, in initialize  
> Feb 03 13:51:18 jhub python3[999]: self.init\_db()  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/app.py”, line 1726, in init\_db  
> Feb 03 13:51:18 jhub python3[999]: self.session\_factory = orm.new\_session\_factory(  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/orm.py”, line 880, in new\_session\_factory  
> Feb 03 13:51:18 jhub python3[999]: check\_db\_revision(engine)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/orm.py”, line 771, in check\_db\_revision  
> Feb 03 13:51:18 jhub python3[999]: current\_table\_names = set(inspect(engine).get\_table\_names())  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/inspection.py”, line 111, in inspect  
> Feb 03 13:51:18 jhub python3[999]: ret = reg(subject)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py”, line 304, in \_engine\_insp  
> Feb 03 13:51:18 jhub python3[999]: return Inspector.\_construct(Inspector.\_init\_engine, bind)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py”, line 237, in \_construct  
> Feb 03 13:51:18 jhub python3[999]: init(self, bind)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py”, line 248, in \_init\_engine  
> Feb 03 13:51:18 jhub python3[999]: engine.connect().close()  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/engine/base.py”, line 3245, in connect  
> Feb 03 13:51:18 jhub python3[999]: return self.\_connection\_cls(self)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/engine/base.py”, line 174, in **init**  
> Feb 03 13:51:18 jhub python3[999]: self.dispatch.engine\_connect(self)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/event/attr.py”, line 487, in **call**  
> Feb 03 13:51:18 jhub python3[999]: fn(\*args, \*\*kw)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/event/legacy.py”, line 100, in wrap\_leg  
> Feb 03 13:51:18 jhub python3[999]: return fn(\*conv(\*args))  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/jupyterhub/orm.py”, line 737, in ping\_connection  
> Feb 03 13:51:18 jhub python3[999]: connection.scalar(select([1]))  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/\_selectable\_constructors.py”, line 493, in select  
> Feb 03 13:51:18 jhub python3[999]: return Select(\*entities)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/selectable.py”, line 5218, in **init**  
> Feb 03 13:51:18 jhub python3[999]: self.\_raw\_columns = [  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/selectable.py”, line 5219, in   
> Feb 03 13:51:18 jhub python3[999]: coercions.expect(  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py”, line 413, in expect  
> Feb 03 13:51:18 jhub python3[999]: resolved = impl.\_literal\_coercion(  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py”, line 652, in \_literal\_coercion  
> Feb 03 13:51:18 jhub python3[999]: self.\_raise\_for\_expected(element, argname)  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py”, line 1143, in \_raise\_for\_expected  
> Feb 03 13:51:18 jhub python3[999]: return super().\_raise\_for\_expected(  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py”, line 711, in \_raise\_for\_expected  
> Feb 03 13:51:18 jhub python3[999]: super().\_raise\_for\_expected(  
> Feb 03 13:51:18 jhub python3[999]: File “/opt/tljh/hub/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py”, line 536, in \_raise\_for\_expected  
> Feb 03 13:51:18 jhub python3[999]: raise exc.ArgumentError(msg, code=code) from err  
> Feb 03 13:51:18 jhub python3[999]: sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [1]. Did you \>  
> Feb 03 13:51:18 jhub python3[999]:  
> Feb 03 13:51:18 jhub systemd[1]: jupyterhub.service: Main process exited, code=exited, status=1/FAILURE  
> Feb 03 13:51:18 jhub systemd[1]: jupyterhub.service: Failed with result ‘exit-code’.  
> Feb 03 13:51:18 jhub systemd[1]: jupyterhub.service: Scheduled restart job, restart counter is at 5.  
> Feb 03 13:51:18 jhub systemd[1]: Stopped jupyterhub.service.  
> Feb 03 13:51:18 jhub systemd[1]: jupyterhub.service: Start request repeated too quickly.  
> Feb 03 13:51:18 jhub systemd[1]: jupyterhub.service: Failed with result ‘exit-code’.  
> Feb 03 13:51:18 jhub systemd[1]: Failed to start jupyterhub.service.

Any chance someone could give me some advice?  
Does it have to be ubuntu 20.4?

---

<div class="post-metadata">

**Author:** ![CRLFx0D0A](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@CRLFx0D0A](https://discourse.jupyter.org/u/CRLFx0D0A)\
**Post date:** [February 3, 2023, 2:41pm UTC](https://discourse.jupyter.org/t/cant-access-tljh-via-a-browser/17828/2 "2023-02-03T14:41:45Z")

</div>

This thread provided the answer:

> [@TLJH: Failure setting up Development Environment: "Failed to start jupyterhub.service."](https://discourse.jupyter.org/t/tljh-failure-setting-up-development-environment-failed-to-start-jupyterhub-service/17748):
>
> Hello, since last week, I am unable to set up a TLJH Development Environment as described here: [https://tljh.jupyter.org/en/latest/contributing/dev-setup.html](https://tljh.jupyter.org/en/latest/contributing/dev-setup.html). Up until January 23 2023 the process went smoothly, but after rebuilding the image last Friday (27 January), after running bootstrap.py in the container, the server doesn’t spawn. Browsing to my localhost:12000 I just see the message “404 page not found”. I am running TLJH in a container in an Ubuntu 22.04 host, running Docker version…

Do this:

> sudo /opt/tljh/hub/bin/pip3 install --upgrade ‘SQLAlchemy\<2.0.0’  
> sudo tljh-config reload hub

Could this be configured in the bootstrap.py so the next person doesn’t have to suffer?

---

<div class="post-metadata">

**Author:** ![pnasrat](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/pnasrat/32/8866_2.png) [@pnasrat](https://discourse.jupyter.org/u/pnasrat)\
**Post date:** [February 3, 2023, 2:44pm UTC](https://discourse.jupyter.org/t/cant-access-tljh-via-a-browser/17828/3 "2023-02-03T14:44:55Z")

</div>

> [@CRLFx0D0A](#):
>
> sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got

There is already a pull request for this that is awaiting review

> <https://github.com/jupyterhub/the-littlest-jupyterhub/pull/848>
>
> Fixes #846
> 
> \- \[\] Add / update documentation
> \- \[\] Add tests
> 
>  
>  
> Tested… by rerunning installer in dev setup
> 
> \`\`\`
> source /opt/tljh/hub/bin/activate
> cd /srv/src
> python3 -m tljh.installer
> \`\`\`
