]> Cypherpunks.ru repositories - govpn.git/blob - doc/server.texi
7139ab3db45f30a0f0e3e306f88d637575e004c8
[govpn.git] / doc / server.texi
1 @node Server
2 @section Server part
3
4 Except for common @code{-mtu}, @code{-stats}, @code{-egd} options server
5 has the following ones:
6
7 @table @code
8
9 @item -proto
10 @ref{Network, network protocol} to use. Can be @emph{udp} (default),
11 @emph{tcp} or @emph{all}.
12
13 @item -bind
14 Address (@code{host:port} format) we must bind to.
15
16 @item -conf
17 Path to JSON file with the configuration.
18
19 @item -proxy
20 Start trivial HTTP @ref{Proxy} server on specified @emph{host:port}.
21
22 @end table
23
24 Configuration file is JSON file with following example structure:
25
26 @verbatim
27 {
28   "stargrave": {                        <-- Peer human readable name
29     "iface": "tap10",                   <-- OPTIONAL TAP interface name
30     "up": "./stargrave-up.sh",          <-- OPTIONAL up-script
31     "down": "./stargrave-down.sh",      <-- OPTIONAL down-script
32     "timeout": 60,                      <-- OPTIONAL overriden timeout
33     "noise": true,                      <-- OPTIONAL noise enabler
34                                             (default: false)
35     "cpr": 64,                          <-- OPTIONAL constant packet
36                                             rate in KiB/sec
37     "verifier": "$argon2d..."           <-- verifier received from client
38   },
39   [...]
40 }
41 @end verbatim
42
43 At least one of either @code{iface} or @code{up} must be specified. If
44 you specify @code{iface}, then it will be forcefully used to determine
45 what TAP interface will be used. If it is not specified, then up-script
46 must output interface's name to stdout (first output line).
47
48 For example up-script can be just @code{echo tap10}, or more advanced
49 like the following one:
50
51 @example
52 #!/bin/sh
53 $tap=$(ifconfig tap create)
54 ifconfig $tap inet6 fc00::1/96 mtu 1412 up
55 echo $tap
56 @end example
57
58 Each minute server rereads and refreshes peers configuration and adds
59 newly appeared identities, deletes an obsolete ones.
60
61 You can use convenient @code{utils/newclient.sh} script for new client
62 creation:
63
64 @verbatim
65 % ./utils/newclient.sh Alice
66 [...]
67 Your client verifier is: $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg
68
69 Place the following JSON configuration entry on the server's side:
70
71     "Alice": {
72         "up": "/path/to/up.sh",
73         "iface": "or TAP interface name",
74         "verifier": "$argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10"
75     }
76 [...]
77 @end verbatim