Add deployment guide.
This commit is contained in:
parent
4feed5e884
commit
381cf9e5a2
30
README.md
30
README.md
@ -6,6 +6,8 @@
|
||||
|
||||
## Overview
|
||||
|
||||
<img src="./docs/stakey.png" align="right" />
|
||||
|
||||
vspd is a from scratch implementation of a Voting Service Provider (VSP) for
|
||||
the Decred network.
|
||||
|
||||
@ -52,32 +54,14 @@ libraries:
|
||||
|
||||
## Deployment
|
||||
|
||||
- Single server running vspd and dcrd. dcrd on this server is used for fishing
|
||||
ticket details out of the chain, and for broadcasting and checking the status
|
||||
of fee transactions. `--txindex` is required so `getrawtransaction` can be
|
||||
used.
|
||||
|
||||
- A xpub key is provided to vspd via config. vspd will use this key to
|
||||
derive a new addresses for each fee payments. It is recommended to export an
|
||||
xpub from a cold wallet which is not a part of the vspd deployment.
|
||||
|
||||
- Multiple remote voting servers, each running dcrwallet and dcrd. dcrwallet on
|
||||
these servers should be constantly unlocked and have voting enabled. Three
|
||||
voting servers in different physical locations are recommended for production.
|
||||
|
||||
## Backup
|
||||
|
||||
The bbolt database file used by vspd is stored in the process home directory, at
|
||||
the path `{homedir}/data/{network}/vspd.db`. vspd keeps a file lock on this
|
||||
file, so it cannot be opened by any other processes while vspd is running.
|
||||
|
||||
To facilitate back-ups, vspd will write periodically write a copy of the bbolt
|
||||
database to the path `{homedir}/data/{network}/vspd.db-backup`. A copy of the
|
||||
database file will also be written to this path when vspd shuts down.
|
||||
A vspd deployment consists of a single front-end server which handles web
|
||||
requests, and a number of remote servers which host voting wallets. For more
|
||||
information about deploying vspd, check out
|
||||
[deployment.md](./docs/deployment.md).
|
||||
|
||||
## Issue Tracker
|
||||
|
||||
The [integrated github issue tracker](https://github.com/decred/vspd/issues)
|
||||
The [integrated GitHub issue tracker](https://github.com/decred/vspd/issues)
|
||||
is used for this project.
|
||||
|
||||
## License
|
||||
|
||||
78
docs/deployment.md
Normal file
78
docs/deployment.md
Normal file
@ -0,0 +1,78 @@
|
||||
# Deployment Guide
|
||||
|
||||
This guide is deliberately written at a high level and with minimal details
|
||||
because it is assumed that VSP operators will already have a level of
|
||||
familiarity with Decred software and a level of sysadmin experience.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### Build from source
|
||||
|
||||
Compiled binaries are not provided for vspd - VSP operators are expected to
|
||||
build vspd from source.
|
||||
|
||||
### Fee wallet
|
||||
|
||||
A wallet should be created to collect VSP fees. Ideally this would be a cold
|
||||
wallet which is not used for any other purpose, and it should be completely
|
||||
separate from the vspd infrastructure. The dcrwallet `getmasterpubkey` RPC
|
||||
should be used to export an extended public (xpub) key from one of the wallet
|
||||
accounts. This xpub key will be provided to vspd via config, and vspd will use
|
||||
it to derive a new addresses for receiving fee payments.
|
||||
|
||||
## Front-end Server
|
||||
|
||||
The front-end server is where vspd will be running. The port vspd is listening
|
||||
on (default `3000`) should be available for clients to reach over the internet.
|
||||
This port is used for both the API and serving the HTML front end.
|
||||
|
||||
dcrd needs to be running on this server with transaction index enabled
|
||||
(`--txindex`). dcrd is used for fishing ticket details out of the chain, for
|
||||
receiving `blockconnected` notifications, and for broadcasting and checking the
|
||||
status of fee transactions.
|
||||
|
||||
## Voting Servers
|
||||
|
||||
A vspd deployment should have a minimum of three remote voting wallets. The
|
||||
servers hosting these wallets should ideally be in geographically seperate
|
||||
locations.
|
||||
|
||||
Each voting server should be running an instance of dcrd and dcrwallet. The
|
||||
wallet on these servers should be completely empty and not used of any other
|
||||
purpose. dcrwallet should be permenantly unlocked and have voting enabled
|
||||
(`--enablevoting`). vspd on the front-end server must be able to reach each
|
||||
instance of dcrwallet over RPC.
|
||||
|
||||
## Deploying alongside dcrstakepool
|
||||
|
||||
It is possible to run vspd on the same infrastructure as an existing
|
||||
dcrstakepool deployment.
|
||||
|
||||
- On the voting servers...
|
||||
- The existing dcrd instance requires no changes.
|
||||
- Create a new instance of dcrwallet listening for RPC connections on a
|
||||
different port. Ensure wallet is unlocked and voting is enabled
|
||||
(dcrstakepool wallet should have voting disabled).
|
||||
|
||||
- On the front-end server...
|
||||
- Run an instance of dcrd with txindex enabled.
|
||||
- Run the vspd binary and ensure the listening port can be reached over the
|
||||
internet. Configure vspd to use the newly created dcrwallet instances.
|
||||
|
||||
## Monitoring
|
||||
|
||||
// TODO
|
||||
|
||||
## Backup
|
||||
|
||||
The bbolt database file used by vspd is stored in the process home directory, at
|
||||
the path `{homedir}/data/{network}/vspd.db`. vspd keeps a file lock on this
|
||||
file, so it cannot be opened by any other processes while vspd is running.
|
||||
|
||||
To facilitate back-ups, vspd will periodically write a copy of the bbolt
|
||||
database to the path `{homedir}/data/{network}/vspd.db-backup`. A copy of the
|
||||
database file will also be written to this path when vspd shuts down.
|
||||
|
||||
## Disaster Recovery
|
||||
|
||||
// TODO
|
||||
BIN
docs/stakey.png
Normal file
BIN
docs/stakey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Loading…
x
Reference in New Issue
Block a user