configure sage notebook to access apache server

i like this post (click again to cancel)
i dont like this post (click again to cancel)

Eight hours of trying to set up a sage apache server so that it can be accessed remotely via the internet has not lead to any fruitful results. So for my final attempt I hope that I can receive some advice.

asked Jan 29 '12

this post is marked as community wiki

This post is a wiki. Anyone with karma >150 is welcome to improve it.

updated Jan 29 '12

mineswe gravatar image mineswe
3 1 1 4

Did you use this instructions? I am not sure if you need apache - is the sage server itself not enough? For what purpose do you want remote access? - if it is just for your personal use you also can use ssh forwarding. Please give more information about the actual problem ;-)

Emil Widmann (Jan 30 '12)

I tried but I didn't have the the /etc/apache2/sites-available/sagenotebook directory so I had to stop at that step. Could it because I installed apache after installing sage?

But I don't specifically need to run sage notebook on an apache server, just I didn't know until now about the sage server and I don't know how to configure it. As for my purposes, I'd like to access sage notebook via http from any computer with an internet connection. I'm new to networking, so I will have to first look into ssh forwading before I can try your suggestion.

mineswe (Jan 30 '12)
i like this answer (click again to cancel)
i dont like this answer (click again to cancel) mineswe has selected this answer as correct

Well I reformulate as an answer. It might not be complete but I hope it contributes to a better understanding. I found the whole sage server story, while perfectly clear for the pros, is very confusing for real beginners (Took me some time to figure that out myself ).

Every time you start the notebook with

sage -notebook

you have the sage notebook server running, which is potentially enough to access it remotely. It listens to input and generates html output on port:8000 (so it doesn't need apache or another server for that - side note: the default port is going to change to 8080 in the upcomming sage 5.0 release).

if you want to access the server from another machine than you have to make sure that it is not blocked somewhere (firewall/router). In the beginning you can check if you can reach the server in your LAN. Get your machines local IP with the command ifconfig. It can look like (but will probably be different on your computer). Then try to access it from another machine on the LAN with this IP-adress: If it doesn't work check the firewall setting of the "sage server" machine.

If you want to access the machine from outside the LAN then you have to setup your network so that your Router/web access point forwards any incoming request on a specific port (e.g. 8000 of router to 8000 to your sage server). You can change the settings of most routers over a web login. Just google up the online doc for your model.

You can get the real IP-address from your network e.g. from the admin pannel of your router or just surf on a website like If it is a "static" address then you have no problems - it will not change. However if it is "dynamic" then this address gets reassigned once in a while. So how exactly do you go around this problem? You could use a DDNS server. (google "webhosting with dynamic IP" to learn more) or if you have access to your own webspace you could also send autoupdated IP info there (e.g make a cron job which checks if link has changed and if yes, rsync the link on your webserver)

If you setup the server in this way it is of course accesible by the public (although I think only 1 user can work at the same time, without further setup i.e. additional worker accounts on the sage server). The most basic measure to secure things up a bit are: set a sage admin password create accounts as needed (maybe you want to share the server with others) start the notebook with the following commandline options:

sage -notebook secure=true require_login=true accounts=false interface=''

secure=true will enable ssh encryption so you have to use the secure protokol https://IP.of.Sage.server:8000 to access the notebook. interface='' will listen on all interfaces (e.g. eth0), the default is just localhost.

So this is my amateurish understanding of how a very basic setup of a "home sage server" works. Of course there are a lot of measures to make this more secure or beef it up (e.g. add a webserver like in the instructions of Jason Grout, add worker accounts to allow several people work at the same time on the server, put the server in a Virtual machine to sandbox it).

I also give a link about that ssh tunneling method I mentioned earlier. You will need to run a ssh daemon on your sage host, but I never used this so the link may be a starter to get additional help on it.

Basically the connection is not made with http or https protocol, but with ssh protocol which should be more flexible/secure, but please correct me if I got it wrong.


posted Jan 31 '12

Emil Widmann gravatar image Emil Widmann
263 3 6 14

updated Jan 31 '12

Thank you for such a detailed answer. Have some network issues but I really want to patiently try your suggestions. At any rate, I have 100% confidence that you've provided a solution to my problem.

mineswe (Feb 08 '12)

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
Login/Signup to Post

Question tools



Asked: Jan 29 '12

Seen: 821 times

Last updated: Jan 31 '12

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.