]> Cypherpunks.ru repositories - govpn.git/blob - doc/server.texi
Use YAML instead of JSON for server configuration file
[govpn.git] / doc / server.texi
1 @node Server
2 @section Server part
3
4 Except for common @code{-stats}, @code{-egd} options server has the
5 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 YAML 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 YAML file with following example structure:
25
26 @verbatim
27 stargrave: {                        <-- Peer human readable name
28     iface: tap10                    <-- OPTIONAL TAP interface name
29     mtu: 1514                       <-- OPTIONAL overriden MTU
30     up: ./stargrave-up.sh           <-- OPTIONAL up-script
31     down: ./stargrave-down.sh       <-- OPTIONAL down-script
32     timeout: 60                     <-- OPTIONAL overriden timeout
33     noise: No                       <-- OPTIONAL noise enabler
34     cpr: 64                         <-- OPTIONAL constant packet rate, KiB/sec
35     encless: No                     <-- OPTIONAL Encryptionless mode
36     verifier: $argon2d...           <-- verifier received from client
37 [...]
38 @end verbatim
39
40 At least one of either @code{iface} or @code{up} must be specified. If
41 you specify @code{iface}, then it will be forcefully used to determine
42 what TAP interface will be used. If it is not specified, then up-script
43 must output interface's name to stdout (first output line).
44
45 For example up-script can be just @code{echo tap10}, or more advanced
46 like the following one:
47
48 @example
49 #!/bin/sh
50 $tap=$(ifconfig tap create)
51 ifconfig $tap inet6 fc00::1/96 mtu 1412 up
52 echo $tap
53 @end example
54
55 Each minute server rereads and refreshes peers configuration and adds
56 newly appeared identities, deletes an obsolete ones.
57
58 You can use convenient @code{utils/newclient.sh} script for new client
59 creation:
60
61 @verbatim
62 % ./utils/newclient.sh Alice
63 [...]
64 Your client verifier is: $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg
65
66 Place the following YAML configuration entry on the server's side:
67
68     Alice:
69         up: /path/to/up.sh
70         iface: or TAP interface name
71         verifier: $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10
72 @end verbatim
73
74 Example configuration file:
75 @verbatim
76 stargrave:
77     iface: tap0
78     verifier: $argon2d$m=4096,t=128,p=1$VMirzcshcHuG2V4jhUsEjw$X5fC07L8k61h3S1Oro/rC76+m0oGDTA9Bq+aWJ1uOgY
79 slow:
80     iface: tap1
81     encless: Yes
82     mtu: 9000
83     cpr: 384
84     verifier: $argon2d$m=4096,t=128,p=1$YbIA5garDqCOhtI/2EZVNg$gOo5vcEGynmpeepNscwclicfZsWxzgYFRLbgG21EZ1U
85 @end verbatim