Running the Plom server

The server handles all communication between the database (which stores all the information about your test) and the various programmes, including plom-client, plom-manager, plom-create, plom-scan, and plom-finish.

Launching the server

After we have initialized our server, we can run it with plom-server launch. You can either change into your server directory (midterm if following the walkthrough) or you can specify the directory on the command line in the directory where you issued the plom-server init command:

$ plom-server launch midterm

INFO:server	Plom Server (communicates with api 53)
INFO:server	Working from directory "midterm"
INFO:server	Database is not yet present: creating...
INFO:server	No manager password: autogenerating and writing to stdout...
Initial manager password: correcthorsebatterystaple
INFO:server	Loading ssl context
WARNING:server	SSL: Loaded default self-signed cert and key
INFO:server	Start the server!
======== Running on ========
(Press CTRL+C to quit)

The server has found everything it needs and is up and running on the indicated IP and port.

If you’re running on a remote server, you probably want to use nohup or screen.

Make note of the manager password

If you did not previously configure user accounts, then the server will create a manager account for you when it starts up.

The password for this account will be printed to the stdout (not the log file). Make note of it; you’ll never see it again.

Checking the server is running

To ensure the server is running and that we can connect to it, try the plom-create status command:

plom-create status -s <myserver:41984> -w <manager_password>

You should see something like this:

Server status

[✓] online: https://localhost:41989
[✓] Plom server version 0.10.0 with API 53
[✓] secure connection verified with SSL


[×] Server does not yet have a spec
    You will need to add specification for your test.

User information

[✓] manager account
[!] no scanner account: you will not be able to upload
[!] No user accounts yet


[×] No classlist: classlist not found


[×] No rows have been inserted in the papers table
    (you will not be able to add any until you add a spec)


Server does not yet have any rubrics

If you have connection trouble, check for firewalls between you and the server; consider trying to connect to localhost.

A bit about SSL certificates

You may get errors about SSL certificates or see something like this:

[!] insecure connection (self-signed or invalid SSL cert)

SSL is used to securely verify the identity of the server you are connecting too. If you’re just experimenting, this is not terribly important: you can bypass the checks by setting a special environment variable, e.g., in bash:


The graphical client offers a mechanism to ignore SSL errors (at you and your users’ own risks).

For production servers, you’ll need to investigate how to setup SSL certificates, which is outside the scope of this tutorial.

We are now ready to create a specification for our test.

Stopping the server

One can stop the server with Ctrl-C or by simply killing the underlying python process. You can also restart it again later as needed.