Skip to content
This repository has been archived by the owner on Feb 14, 2020. It is now read-only.

neubot/neubot-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fc43cc2 · Mar 25, 2019
Nov 7, 2016
Mar 25, 2019
Mar 25, 2019
Jul 27, 2015
Nov 4, 2016
Mar 25, 2019
Nov 4, 2016
Mar 25, 2019
May 9, 2015
Jan 7, 2017
Mar 25, 2019

Repository files navigation

Neubot server

This is the server of Neubot that typically runs on M-Lab servers. It is partly written in Python and partly written in Go. The Go code runs a custom NDT server and is based on the neubot/botticelli library.

For more info on Neubot in general, see https://neubot.nexacenter.org/.

How to start neubot-server

Currently neubot-server only works on Linux systems. It should also work on BSD systems, but this was not tested. It does not work on Windows.

In order to start neubot-server you need root privileges. They are needed to bind privileged ports and to assign to user nobody read and write permissions of neubot-server work directory (/var/lib/neubot). After ports are bound and permissions are assigned, neubot-server drops privilegeds and runs as the non privileged nobody user.

Assuming you are in the root directory of neubot-server, you can simply start the server by running:

$ sudo bin/neubot-server-dev

In its default configuration, neubot-server output is quite terse; it will only print the loaded modules implementing one test each. Shortly afterwards, the server will become a daemon. You can change both verbosity and daemon behavior by specifying command line options, as follows.

Options

sudo bin/neubot-server-dev [-dv]

Accepts the following options:

  • -d Do not demonize neubot-server.

  • -v Makes the command more verbose.

Updating botticelli

First, make sure you have set the GOPATH environment variable. I usually set it to my home directory, but your mileage may vary:

export GOPATH=$HOME

Then fetch and compile the govendor tool:

go get -u -v github.com/kardianos/govendor

Finally, update botticelli and bernini (dependency of botticelli):

$GOPATH/bin/govendor update github.com/neubot/bernini/... \
    github.com/neubot/botticelli/...

You should see changed files in vendor/. Commit them and you are done.

Cross compiling botticelli for mlab

Move to the mlab branch:

git checkout mlab

Merge the master branch into mlab:

git merge --no-ff master

Rebuild:

GOOS=linux GOARCH=386 ./scripts/get-botticelli

Commit the modified botticelli binary.

How to deploy on mlab

See neubot/mlab-neubot-support.