Guide to node services

Introduction

Every node (server) must have one or more services defined that determines what role the node performs. For example:

workstation$ cat nodes/stallman.json
{
  "ip_address": "199.99.99.1",
  "services": ["webapp", "tor"]
}

Here are common questions to ask when adding a new node to your provider:

  • many or few? Some services benefit from having many nodes, while some services are best run on only one or two nodes.
  • required or optional? Some services are required, while others can be left out.
  • who does the node communicate with? Some services communicate very heavily with other particular services. Nodes running these services should be close together.
  • public or private network? Some services communicate with the public internet, while others only need to communicate with other nodes in the infrastructure.

Available services

Service VPN Email Notes
webapp User control panel, provider API, and support system.
couchdb Data storage for everything. Private node.
soledad User data synchronization daemon. Usually paired with couchdb nodes.
mx Incoming and outgoing MX servers.
openvpn OpenVPN gateways.
monitor Nagios monitoring. This service must be on the webapp node.
tor Tor exit node.

Key: Required, Optional, Not Used

couchdb

Data storage for all user data.

openvpn

OpenVPN egress gateways

monitor

Nagios monitoring and continuous testing.

mx

Incoming and outgoing MX servers.

soledad

User data synchronization daemon

tor

Tor services: relay, exit node and hidden service

webapp

leap_web user management application and provider API.