This is SageMathCell - a Sage computation web service.
Our mailing list is https://groups.google.com/forum/#!forum/sage-cell
If you are going to run a world accessible SageMathCell server, you must understand security implications and should be able to implement reasonable precautions.
The worker account (which is your own one by default) will be able to execute arbitrary code, which may be malicious. Make sure that you are securing the account properly. Working with a professional IT person is a very good idea here. Since the untrusted accounts can be on any computer, one way to isolate these accounts is to host them in a virtual machine that can be reset if the machine is compromised.
We assume that you have access to the Internet and can install any needed dependencies. If you need to know more precisely what tools are needed, please consult the scripts for building virtual machine images in contib/vm. In particular, system packages installed in the base container are listed here.
-
Make sure you have a recent enough version of git: 1.8.5 is good enough, while 1.7.9 isn't.
-
Install required npm packages:
sudo apt-get install npm # On Debian based systems we need to make an alias sudo ln -s /usr/bin/nodejs /usr/bin/node sudo npm install -g inherits requirejs coffee-script
-
Optionally create a directory for all components:
mkdir sc_build cd sc_build
-
Get and build Sage (
export MAKE="make -j8"
or something similar can speed things up):git clone https://github.com/novoselt/sage.git pushd sage git checkout sagecell make ./sage -i threejs popd
Note that we are building a special branch of Sage, do NOT use your regular Sage installation!
-
Prepare Sage for SageMathCell:
sage/sage -pip install --upgrade lockfile sage/sage -pip install --upgrade paramiko sage/sage -pip install --upgrade sockjs-tornado
-
Build SageMathCell:
git clone https://github.com/sagemath/sagecell.git pushd sagecell git submodule update --init --recursive ../sage/sage -sh -c make
Major JavaScript dependencies, including Require.js and CodeMirror.js, are copied from the Jupyter notebook bundled with SageMath.
-
Go into the
sagecell
directory (you are there in the end of the above instructions). -
Copy
config_default.py
toconfig.py
. (Or fillconfig.py
only with entries that you wish to change from default values.) -
Edit
config.py
according to your needs. Of particular interest arehost
andusername
entries of the_default_config
dictionary: you should be able to SSH tousername@host
without typing in a password. For example, by default, it assumes you can dossh localhost
without typing in a password. Unless you are running a private and firewalled server for youself, you’ll want to change this to a more restrictive account; otherwise anyone will be able to execute any code under your username. You can set up a passwordless account using SSH: type “ssh passwordless login” into Google to find lots of guides for doing this, like http://www.debian-administration.org/articles/152. You may also wish to adjustdb_config["uri"]
(make the database files readable only by the trusted account). -
You may want to adjust
log.py
to suit your needs and/or adjust system configuration. By default logging is done via syslog which handles multiple processes better than plain files. -
Start the server via
../sage/sage web_server.py [-p <PORT_NUMBER>]
where the default
<PORT_NUMBER>
is8888
and go tohttp://localhost:<PORT_NUMBER>
to use the Sage Cell server.When you want to shut down the server, press
Ctrl-C
in the same terminal.
See the LICENSE.txt file for terms and conditions for usage and a DISCLAIMER OF ALL WARRANTIES.
SageMathCell is designed to be compatible with recent versions of:
- Chrome
- Firefox
- Internet Explorer
- Opera
- Safari
If you notice issues with any of these browsers, please let us know.