Running IPython notebook in the background using tmux - python

I am trying to run a IPython notebook in the background using tmux. For it, I am following this link in stackoverflow. In the tmux terminal, When I run the code jupyter notebook notebook.ipynb, it does give the link to run the notebook in the browser.
But browser displays the following message: "This site can’t be reached
localhost refused to connect."
How can I solve the issue?

Looks like you're running this on a remote server. You just have to edit the link : replace the word localhost with ip address of the remote server.
hostname -i returns ip address on ubuntu machine for instance.

Related

Jupyter notebook gives no error but doesn't open port connection

I'm trying to connect and use jupyter notebooks on a Windows remote desktop. I can install jupyter fine and even run it perfectly, but whenever I try to access the notebook via browser, I get a "can't reach" message for localhost:8888.
After some extensive research online, where people just needed to change 127.0.0.1 to localhost or vice versa, or changed their browser, nothing seemed to work. Some threads also suggested I change up the config file and instead run jupyter notebook --ip 0.0.0.0 --port 8888. Furthermore, I tried using several different ports and even asked the IT administrator which port is definetly available, but this was all to no avail.
Delving deeper into the problem, I checked whether jupyter opened a port connection on the remote desktop by running netstat -aon | findstr :*port* in the terminal. This was not the case.
I'm dumbfounded how jupyter notebook doesn't return an error while not actually creating a port connection on the remote machine. Seeing as I can easily set up a port connection through python -m http.server 8888 I have no idea how to tackle this problem. Any idea on why jupyter doesn't seem to open a port connection and how this can be remedied?

Remote Jupyter notebook server disconnects and crashes semi-randomly

I have a home server, which I use to run Jupyter.
I open a terminal window on my macbook and login into the server using ssh username#home-server. I then start jupyter using jupyter notebook --no-browser. I then open another terminal window on my macbook and set up Jupyter server port forwarding ssh -L 8000:localhost:8888 username#home-server. Then I can open a browser on my mac, navigate to localhost:8000 with the right token, and everything works.
But!
Periodically, the Jupyter server disconnects and the terminal window I used to set up port forwarding starts printing "Connection refused" messages. When I re-open the terminals and re-ssh-login into the server, it shows no Jupyter notebooks running. This is puzzling, as I would expect Jupyter to keep running on the remote server, even if I lose the internet connection to it.
Similarly, if I close my macbook and it goes to sleep, the Jupyter notebook also somehow dies on the remote server.
Any thoughts on what I am doing wrong? The server is running OpenSUSE Leap.
Thanks!

Connecting Jupyter notebook to Remote server

I have a linux server. On that I have installed Miniconda3 and other python packages along with Jupyter.
Now I want to run the notebook on the server and open in my browser.
For that, after installation of all packages, I do:
user#remoteip:$ jupyter notebook --no-browser --port=8890
Now I am copying the server IP address along with port to open it in my local browser.
http://remoteip:8890
However it doesn't open up anything.
I then followed all suggestions given in this SO answer by adding the required statements in the configuration file on the remote server anaconda and even local anaconda jupyter config file.
But it doesn't help at all.
After that I had to port forwarding as below in my local terminal:
user#localhost: ssh -N -f -L localhost:8890:localhost:8890 user#remoteip
And after that when I open
localhost:8890
now it opens up the notebook requiring the token to be entered and then it works.
My question is that do we need to do port forwarding everytime for us to open a notebook on remote server? One of my colleague said he didn't do any port forwarding and after first step itself, he was able to open the notebook with by typing
http://remoteip:8890
So I am not sure we need to do port forwarding for us to open the server jupyter notebook to open in browser or we can directly open the notebook with remoteip address?
Edit:
As per Alex's suggestion below, ran the following command after logging into dev server.
(ds_env) user#devvm1049:~$ jupyter notebook --no-mathjax --no-browser --ip 0.0.0.0 --port 8890
[I 23:49:56.032 NotebookApp] Serving notebooks from local directory: /home/user
[I 23:49:56.032 NotebookApp] The Jupyter Notebook is running at:
[I 23:49:56.032 NotebookApp] http://devvm.cdw.com:8890/
[I 23:49:56.032 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Copied the above link to both chrome and Safari but it didn't open anything.
I have already done the above suggestions in this post. The only thing that has worked until now is doing Port tunneling but that is 3 steps everytime one has to open the jupyter on remote server.
Is this can be some port blocking issue? I tried pinging the remote server on laptop and it didn't give me any ping.
If you specify the --ip option when starting the server you can allow remote connection without port forwarding.
jupyter notebook --no-mathjax --no-browser --ip 0.0.0.0 --port 8890
# The --no-mathjax improves loading over slow connections
This is not recommended, though. See running a public jupyter notebook server. If you do this, I strongly recommend that you set a password, as described in that link.

Connect jupyter python by tunneled connection (via ssh)

I have a problem with connecting to jupyter that I run on remote computer. I have configured jupyter with ssl as in the following doc:
https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#hashed-pw
Then I run jupyter on remote machine with command: jupyter notebook as in tutorial.
When its running I make a tunnel in another terminal by running a command:
ssh -N -f -L 8889:127.0.0.1:8881 user_name#hostname.com
Of course the jupyter is running on port 8881. When I open the browser on my local computer and try to open page:
localhost:8889
I got an error that connection was reset, and in command line the ssh returns the following error:
channel 2: open failed: connect failed: Connection refused
Can anyone help me? I was looking for an answer for whole day and still can't fix it.
The problem is, that in my case jupyter is running on localhost. At my server remote server I have no access to remote localhost, so the solution was quite easy - I run jupyter on specified ip = 0.0.0.0
jupyter notebook --no-browser --port=8881 --ip=0.0.0.0

IPython notebook WebSocket connection could not be established. You will NOT be able to run code

I've been tryin to run some simple code in IPython notebook but i keep getting this error:
"A WebSocket connection could not be established. You will NOT be able to run code. Check your network connection or notebook server configuration."
There were no problems during the install and there are no error messeges when i load the notebook.
I'm thinking maybe it has something to do with the fact im running my local server on xamp?
Doed anyone have a clue how to solve this?
I would be very greatfull.
Edit: I'm loading my notebook using the command 'ipython notebook' in the command prompet the output is:
[NotebookApp]"Using existing profile dir: c:\users\Nimrod\.ipython\profile_default
[NotebookApp]using MathJax from CDN: http://cdn.mathjax.org/mathjax/latest/mathjax.js
[NotebookApp] Serving notebooks from local directory c:\users\Nimrod
[NotebookApp] 0 active kernels
[NotebookApp] use control c to stop server and shut doen all kernels
[NotebookApp] Kernel started: 0ac0db12-63a0-4a4a-be25-0051
Thanks a lot.
Okay, by default ipython notebook launches standalone using the tornado http server running on local port 8888.
Try typing localhost:8888 into your browser.
If you want to customize it to run on a different port use:
ipython notebook --port=<NEW PORT>
If you'd also like to allow connections from remote machines do:
ipython notebook --ip=0.0.0.0 --port=<NEW PORT>

Categories