<!DOCTYPE html> <html lang='en'> <head> <title> Services - LEAP Platform Documentation </title> <meta content='width=device-width, initial-scale=1.0' name='viewport'> <meta charset='UTF-8'> <base href="" /> <style> body { background: #444; display: flex; flex-direction: row; padding: 10px; margin: 0px; } #sidebar { flex: 0 0 250px; background: white; margin-right: 10px; padding: 20px; } #sidebar ul { list-style-type: none; padding-left: 0px; margin: 0; } #sidebar li { padding: 4px } #sidebar li a { text-decoration: none } #sidebar li.active { background: #444 } #sidebar li.active a { color: white } #sidebar li.level1 { padding-left: 20px } #sidebar li.level2 { padding-left: 40px } #main { flex: 1 1 auto; background: white; padding: 20px; } #title-box { padding-bottom: 20px; border-bottom: 5px solid #eee; } #title-box h1 { margin-top: 0px; } pre { padding: 10px; background: #eef; } code { background: #eef; } table {border-collapse: collapse} table td { border: 1px solid #ccc; padding: 4px; vertical-align: top; } </style> </head> <body> <div id='sidebar'> <ul> <li class=''> <a href='../index.html'>Home</a> </li> <li class=' level0'> <a class='' href='guide.html'>Guide</a> </li> <li class=' level0'> <a class='' href='tutorials.html'>Tutorials</a> </li> <li class='active level0'> <a class='' href='services.html'>Services</a> </li> <li class=' level1'> <a class='' href='services/couchdb.html'>couchdb</a> </li> <li class=' level1'> <a class='' href='services/openvpn.html'>openvpn</a> </li> <li class=' level1'> <a class='' href='services/monitor.html'>monitor</a> </li> <li class=' level1'> <a class='' href='services/mx.html'>mx</a> </li> <li class=' level1'> <a class='' href='services/soledad.html'>soledad</a> </li> <li class=' level1'> <a class='' href='services/tor.html'>tor</a> </li> <li class=' level1'> <a class='' href='services/webapp.html'>webapp</a> </li> <li class=' level0'> <a class='' href='upgrading.html'>Upgrading</a> </li> <li class=' level0'> <a class='' href='troubleshooting.html'>Troubleshooting</a> </li> <li class=' level0'> <a class='' href='details.html'>Details</a> </li> </ul> </div> <div id='main'> <div id='title-box'> <h1>Guide to node services</h1> <div id='summary'></div> </div> <div id='content-box'> <div id="TOC"><ol> <li> <a href="services/index.html#introduction">Introduction</a> </li> <li> <a href="services/index.html#available-services">Available services</a> </li> </ol></div> <h1><a name="introduction"></a>Introduction</h1> <p>Every node (server) must have one or more <code>services</code> defined that determines what role the node performs. For example:</p> <pre><code>workstation$ cat nodes/stallman.json { "ip_address": "199.99.99.1", "services": ["webapp", "tor"] } </code></pre> <p>Here are common questions to ask when adding a new node to your provider:</p> <ul> <li><strong>many or few?</strong> Some services benefit from having many nodes, while some services are best run on only one or two nodes.</li> <li><strong>required or optional?</strong> Some services are required, while others can be left out.</li> <li><strong>who does the node communicate with?</strong> Some services communicate very heavily with other particular services. Nodes running these services should be close together.</li> <li><strong>public or private network?</strong> Some services communicate with the public internet, while others only need to communicate with other nodes in the infrastructure.</li> </ul> <h1><a name="available-services"></a>Available services</h1> <table class="table table-striped"> <tr> <th>Service</th> <th>VPN</th> <th>Email</th> <th>Notes</th> </tr> <tr> <td>webapp</td> <td><i class="fa fa-circle"></i></td> <td><i class="fa fa-circle"></i></td> <td>User control panel, provider API, and support system.</td> </tr> <tr> <td>couchdb</td> <td><i class="fa fa-circle"></i></td> <td><i class="fa fa-circle"></i></td> <td>Data storage for everything. Private node.</td> <td></td> </tr> <tr> <td>soledad</td> <td><i class="fa fa-circle-o"></i></td> <td><i class="fa fa-circle"></i></td> <td>User data synchronization daemon. Usually paired with <code>couchdb</code> nodes.</td> <td></td> </tr> <tr> <td>mx</td> <td><i class="fa fa-circle-o"></i></td> <td><i class="fa fa-circle"></i></td> <td>Incoming and outgoing MX servers.</td> </tr> <tr> <td>openvpn</td> <td><i class="fa fa-circle"></i></td> <td><i class="fa fa-circle-o"></i></td> <td>OpenVPN gateways.</td> </tr> <tr> <td>monitor</td> <td><i class="fa fa-dot-circle-o"></i></td> <td><i class="fa fa-dot-circle-o"></i></td> <td>Nagios monitoring. This service must be on the webapp node.</td> </tr> <tr> <td>tor</td> <td><i class="fa fa-dot-circle-o"></i></td> <td><i class="fa fa-dot-circle-o"></i></td> <td>Tor exit node.</td> </tr> </table> <p>Key: <i class="fa fa-circle"> Required</i>, <i class="fa fa-dot-circle-o"> Optional</i>, <i class="fa fa-circle-o"> Not Used</i></p> <p><div class=' page-summary'> <h2> <a href='services/couchdb.html'>couchdb</a> </h2> <div class='summary'>Data storage for all user data.</div> </div> <div class=' page-summary'> <h2> <a href='services/openvpn.html'>openvpn</a> </h2> <div class='summary'>OpenVPN egress gateways</div> </div> <div class=' page-summary'> <h2> <a href='services/monitor.html'>monitor</a> </h2> <div class='summary'>Nagios monitoring and continuous testing.</div> </div> <div class=' page-summary'> <h2> <a href='services/mx.html'>mx</a> </h2> <div class='summary'>Incoming and outgoing MX servers.</div> </div> <div class=' page-summary'> <h2> <a href='services/soledad.html'>soledad</a> </h2> <div class='summary'>User data synchronization daemon</div> </div> <div class=' page-summary'> <h2> <a href='services/tor.html'>tor</a> </h2> <div class='summary'>Tor exit node or hidden service</div> </div> <div class=' page-summary'> <h2> <a href='services/webapp.html'>webapp</a> </h2> <div class='summary'>leap_web user management application and provider API.</div> </div> </p> </div> </div> </body> </html>