Keywords: Jupyter Notebook | Remote Access | Configuration Modification
Abstract: This article provides a comprehensive analysis of common issues preventing remote access to Jupyter Notebook servers and their solutions. By configuring key parameters in the jupyter_notebook_config.py file, including setting allow_origin to '*' to permit all origins and ip to '0.0.0.0' to listen on all IP addresses, remote connection problems can be effectively resolved. The article also discusses supplementary measures such as firewall configuration and password setup, offering complete configuration procedures and code examples.
Problem Background Analysis
After starting Jupyter Notebook on a CentOS 6.5 server, although the service runs normally and displays listening on all IP addresses, access via specific IP addresses (e.g., http://192.168.1.111:8045/) within the same local network fails. This situation is typically due to Jupyter Notebook's default security configuration restrictions.
Core Configuration Parameters
Jupyter Notebook by default only accepts connections from localhost, which is a security-conscious design. To enable remote access, two key configuration parameters need modification:
c.NotebookApp.allow_origin = '*' allows cross-origin requests from all sources
c.NotebookApp.ip = '0.0.0.0' listens on all network interface IP addresses
Configuration File Modification Steps
First, generate the configuration file (if not already present):
jupyter notebook --generate-config
Then edit the configuration file, typically located in the .jupyter folder under the user's home directory:
gedit ~/.jupyter/jupyter_notebook_config.py
In the configuration file, locate the relevant configuration items, remove comment symbols, and modify to:
c.NotebookApp.allow_origin = '*'
c.NotebookApp.ip = '0.0.0.0'
Ensure these configuration lines are not commented (i.e., no # symbol at the beginning), otherwise the modifications will not take effect.
Command Line Startup Method
In addition to modifying the configuration file, you can also specify the listening IP directly via command line parameters:
jupyter notebook --ip 0.0.0.0 --port 8045
This method is suitable for temporary testing, where the --ip parameter specifies listening on all IP addresses and --port specifies the port number.
Supplementary Security Measures
While enabling remote access, consider the following security measures:
Configure the firewall to allow the corresponding port:
sudo ufw allow 8045/tcp
Set an access password:
jupyter notebook password
This will prompt for a password, enhancing access security.
Configuration Verification and Testing
After completing the configuration, restart the Jupyter Notebook service and check the startup logs for correct listening addresses:
[I 17:40:59.649 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8045/
Then test access from other devices within the same local network using the server's IP address and port number.
Common Issue Troubleshooting
If access still fails, check: whether firewall settings block port access, network connectivity is normal, and IP address configuration is correct. Use the telnet command to test port connectivity:
telnet 192.168.1.111 8045
If the connection is successful, it indicates correct network and port configuration, and the issue may lie with Jupyter configuration.