mirror of
https://github.com/basicswap/basicswap.git
synced 2024-12-31 15:59:28 +00:00
refactor: Prepare script uses swap_client to create all wallets.
This commit is contained in:
parent
585bef6076
commit
48e0cac5ab
11 changed files with 247 additions and 259 deletions
|
@ -24,10 +24,6 @@ import urllib.parse
|
||||||
from urllib.request import urlretrieve
|
from urllib.request import urlretrieve
|
||||||
|
|
||||||
import basicswap.config as cfg
|
import basicswap.config as cfg
|
||||||
from basicswap.rpc import (
|
|
||||||
callrpc_cli,
|
|
||||||
waitForRPC,
|
|
||||||
)
|
|
||||||
from basicswap.base import getaddrinfo_tor
|
from basicswap.base import getaddrinfo_tor
|
||||||
from basicswap.basicswap import BasicSwap
|
from basicswap.basicswap import BasicSwap
|
||||||
from basicswap.chainparams import Coins
|
from basicswap.chainparams import Coins
|
||||||
|
@ -586,12 +582,6 @@ def prepareDataDir(coin, settings, chain, particl_mnemonic, extra_opts={}):
|
||||||
|
|
||||||
with tarfile.open(sync_file_path) as ft:
|
with tarfile.open(sync_file_path) as ft:
|
||||||
ft.extractall(path=data_dir)
|
ft.extractall(path=data_dir)
|
||||||
# Create the wallet later, no option to set bestblock through wallet_util
|
|
||||||
else:
|
|
||||||
wallet_util = coin + '-wallet'
|
|
||||||
if os.path.exists(os.path.join(bin_dir, wallet_util)):
|
|
||||||
logger.info('Creating wallet.dat for {}.'.format(wallet_util.capitalize()))
|
|
||||||
callrpc_cli(bin_dir, data_dir, chain, '-wallet=wallet.dat create', wallet_util)
|
|
||||||
|
|
||||||
|
|
||||||
def write_torrc(data_dir, tor_control_password):
|
def write_torrc(data_dir, tor_control_password):
|
||||||
|
@ -702,20 +692,6 @@ def modify_tor_config(settings, coin, tor_control_password=None, enable=False):
|
||||||
writeTorSettings(fp, coin, coin_settings, tor_control_password)
|
writeTorSettings(fp, coin, coin_settings, tor_control_password)
|
||||||
|
|
||||||
|
|
||||||
def make_rpc_func(bin_dir, data_dir, chain, cli_binary=cfg.PARTICL_CLI):
|
|
||||||
bin_dir = bin_dir
|
|
||||||
data_dir = data_dir
|
|
||||||
chain = chain
|
|
||||||
|
|
||||||
def rpc_func(cmd):
|
|
||||||
nonlocal bin_dir
|
|
||||||
nonlocal data_dir
|
|
||||||
nonlocal chain
|
|
||||||
|
|
||||||
return callrpc_cli(bin_dir, data_dir, chain, cmd, cli_binary)
|
|
||||||
return rpc_func
|
|
||||||
|
|
||||||
|
|
||||||
def exitWithError(error_msg):
|
def exitWithError(error_msg):
|
||||||
sys.stderr.write('Error: {}, exiting.\n'.format(error_msg))
|
sys.stderr.write('Error: {}, exiting.\n'.format(error_msg))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -770,6 +746,67 @@ def finalise_daemon(d):
|
||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
|
|
||||||
|
def initialise_wallets(particl_wallet_mnemonic, with_coins, data_dir, settings, chain, use_tor_proxy):
|
||||||
|
daemons = []
|
||||||
|
daemon_args = ['-noconnect', '-nodnsseed']
|
||||||
|
if not use_tor_proxy:
|
||||||
|
# Cannot set -bind or -whitebind together with -listen=0
|
||||||
|
daemon_args.append('-nolisten')
|
||||||
|
try:
|
||||||
|
with open(os.path.join(data_dir, 'basicswap.log'), 'a') as fp:
|
||||||
|
swap_client = BasicSwap(fp, data_dir, settings, chain)
|
||||||
|
|
||||||
|
start_daemons = with_coins
|
||||||
|
if 'particl' not in with_coins:
|
||||||
|
# Particl must be running to initialise a wallet in addcoin mode
|
||||||
|
start_daemons.append('particl')
|
||||||
|
|
||||||
|
for coin_name in start_daemons:
|
||||||
|
coin_settings = settings['chainclients'][coin_name]
|
||||||
|
c = swap_client.getCoinIdFromName(coin_name)
|
||||||
|
swap_client.setCoinConnectParams(c)
|
||||||
|
|
||||||
|
if c == Coins.XMR:
|
||||||
|
if coin_settings['manage_wallet_daemon']:
|
||||||
|
daemons.append(startXmrWalletDaemon(coin_settings['datadir'], coin_settings['bindir'], 'monero-wallet-rpc'))
|
||||||
|
else:
|
||||||
|
if coin_settings['manage_daemon']:
|
||||||
|
filename = coin_name + 'd' + ('.exe' if os.name == 'nt' else '')
|
||||||
|
coin_args = ['-nofindpeers', '-nostaking'] if c == Coins.PART else []
|
||||||
|
daemons.append(startDaemon(coin_settings['datadir'], coin_settings['bindir'], filename, daemon_args + coin_args))
|
||||||
|
swap_client.setDaemonPID(c, daemons[-1].pid)
|
||||||
|
swap_client.setCoinRunParams(c)
|
||||||
|
swap_client.createCoinInterface(c)
|
||||||
|
|
||||||
|
if c in (Coins.PART, Coins.BTC, Coins.LTC):
|
||||||
|
swap_client.waitForDaemonRPC(c, with_wallet=False)
|
||||||
|
# Create wallet if it doesn't exist yet
|
||||||
|
wallets = swap_client.callcoinrpc(c, 'listwallets')
|
||||||
|
if 'wallet.dat' not in wallets:
|
||||||
|
logger.info('Creating wallet.dat for {}.'.format(coin_name.capitalize()))
|
||||||
|
swap_client.callcoinrpc(c, 'createwallet', ['wallet.dat'])
|
||||||
|
|
||||||
|
if 'particl' in with_coins:
|
||||||
|
logger.info('Loading Particl mnemonic')
|
||||||
|
if particl_wallet_mnemonic is None:
|
||||||
|
particl_wallet_mnemonic = swap_client.callcoinrpc(Coins.PART, 'mnemonic', ['new'])['mnemonic']
|
||||||
|
swap_client.callcoinrpc(Coins.PART, 'extkeyimportmaster', [particl_wallet_mnemonic])
|
||||||
|
|
||||||
|
for coin_name in with_coins:
|
||||||
|
c = swap_client.getCoinIdFromName(coin_name)
|
||||||
|
if c == Coins.PART:
|
||||||
|
continue
|
||||||
|
swap_client.waitForDaemonRPC(c)
|
||||||
|
swap_client.initialiseWallet(c)
|
||||||
|
|
||||||
|
swap_client.finalise()
|
||||||
|
del swap_client
|
||||||
|
finally:
|
||||||
|
for d in daemons:
|
||||||
|
finalise_daemon(d)
|
||||||
|
return particl_wallet_mnemonic
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global use_tor_proxy
|
global use_tor_proxy
|
||||||
data_dir = None
|
data_dir = None
|
||||||
|
@ -1095,21 +1132,7 @@ def main():
|
||||||
|
|
||||||
if not prepare_bin_only:
|
if not prepare_bin_only:
|
||||||
prepareDataDir(add_coin, settings, chain, particl_wallet_mnemonic, extra_opts)
|
prepareDataDir(add_coin, settings, chain, particl_wallet_mnemonic, extra_opts)
|
||||||
|
initialise_wallets(None, [add_coin, ], data_dir, settings, chain, use_tor_proxy)
|
||||||
if use_btc_fastsync and add_coin == 'bitcoin':
|
|
||||||
# Need to create wallet file through daemon
|
|
||||||
logger.info('Creating wallet.dat for {}.'.format(add_coin.capitalize()))
|
|
||||||
bitcoin_settings = settings['chainclients']['bitcoin']
|
|
||||||
try:
|
|
||||||
btcRpc = make_rpc_func(bitcoin_settings['bindir'], bitcoin_settings['datadir'], chain, cli_binary=cfg.BITCOIN_CLI)
|
|
||||||
filename = 'bitcoind' + ('.exe' if os.name == 'nt' else '')
|
|
||||||
daemon_args = ['-noconnect', '-nodnsseed', '-nolisten']
|
|
||||||
btcd = startDaemon(bitcoin_settings['datadir'], bitcoin_settings['bindir'], filename, daemon_args)
|
|
||||||
waitForRPC(btcRpc, expect_wallet=False, max_tries=12)
|
|
||||||
btcRpc('createwallet wallet.dat')
|
|
||||||
logger.info('createwallet succeeded.')
|
|
||||||
finally:
|
|
||||||
finalise_daemon(btcd)
|
|
||||||
|
|
||||||
with open(config_path, 'w') as fp:
|
with open(config_path, 'w') as fp:
|
||||||
json.dump(settings, fp, indent=4)
|
json.dump(settings, fp, indent=4)
|
||||||
|
@ -1166,71 +1189,10 @@ def main():
|
||||||
logger.info('Done.')
|
logger.info('Done.')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
logger.info('Loading Particl mnemonic')
|
particl_wallet_mnemonic = initialise_wallets(particl_wallet_mnemonic, with_coins, data_dir, settings, chain, use_tor_proxy)
|
||||||
|
if particl_wallet_mnemonic:
|
||||||
particl_settings = settings['chainclients']['particl']
|
# Print directly to stdout for tests
|
||||||
partRpc = make_rpc_func(particl_settings['bindir'], particl_settings['datadir'], chain)
|
print('IMPORTANT - Save your particl wallet recovery phrase:\n{}\n'.format(particl_wallet_mnemonic))
|
||||||
|
|
||||||
daemons = []
|
|
||||||
daemon_args = ['-noconnect', '-nodnsseed']
|
|
||||||
if not use_tor_proxy:
|
|
||||||
# Cannot set -bind or -whitebind together with -listen=0
|
|
||||||
daemon_args.append('-nolisten')
|
|
||||||
daemons.append(startDaemon(particl_settings['datadir'], particl_settings['bindir'], cfg.PARTICLD, daemon_args + ['-nofindpeers', '-nostaking']))
|
|
||||||
try:
|
|
||||||
waitForRPC(partRpc)
|
|
||||||
|
|
||||||
if particl_wallet_mnemonic is None:
|
|
||||||
particl_wallet_mnemonic = partRpc('mnemonic new')['mnemonic']
|
|
||||||
partRpc('extkeyimportmaster "{}"'.format(particl_wallet_mnemonic))
|
|
||||||
|
|
||||||
# Initialise wallets
|
|
||||||
with open(os.path.join(data_dir, 'basicswap.log'), 'a') as fp:
|
|
||||||
swap_client = BasicSwap(fp, data_dir, settings, chain)
|
|
||||||
|
|
||||||
swap_client.setCoinConnectParams(Coins.PART)
|
|
||||||
swap_client.setDaemonPID(Coins.PART, daemons[-1].pid)
|
|
||||||
swap_client.setCoinRunParams(Coins.PART)
|
|
||||||
swap_client.createCoinInterface(Coins.PART)
|
|
||||||
|
|
||||||
for coin_name in with_coins:
|
|
||||||
coin_settings = settings['chainclients'][coin_name]
|
|
||||||
c = swap_client.getCoinIdFromName(coin_name)
|
|
||||||
if c == Coins.PART:
|
|
||||||
continue
|
|
||||||
|
|
||||||
swap_client.setCoinConnectParams(c)
|
|
||||||
|
|
||||||
if c == Coins.XMR:
|
|
||||||
if not coin_settings['manage_wallet_daemon']:
|
|
||||||
continue
|
|
||||||
daemons.append(startXmrWalletDaemon(coin_settings['datadir'], coin_settings['bindir'], 'monero-wallet-rpc'))
|
|
||||||
else:
|
|
||||||
if not coin_settings['manage_daemon']:
|
|
||||||
continue
|
|
||||||
filename = coin_name + 'd' + ('.exe' if os.name == 'nt' else '')
|
|
||||||
daemons.append(startDaemon(coin_settings['datadir'], coin_settings['bindir'], filename, daemon_args))
|
|
||||||
swap_client.setDaemonPID(c, daemons[-1].pid)
|
|
||||||
swap_client.setCoinRunParams(c)
|
|
||||||
swap_client.createCoinInterface(c)
|
|
||||||
|
|
||||||
# Create wallet if it doesn't exist yet
|
|
||||||
if c == Coins.BTC:
|
|
||||||
swap_client.waitForDaemonRPC(c, with_wallet=False)
|
|
||||||
wallets = swap_client.callcoinrpc(c, 'listwallets')
|
|
||||||
if 'wallet.dat' not in wallets:
|
|
||||||
swap_client.callcoinrpc(c, 'createwallet', ['wallet.dat'])
|
|
||||||
|
|
||||||
swap_client.waitForDaemonRPC(c)
|
|
||||||
swap_client.initialiseWallet(c)
|
|
||||||
swap_client.finalise()
|
|
||||||
del swap_client
|
|
||||||
finally:
|
|
||||||
for d in daemons:
|
|
||||||
finalise_daemon(d)
|
|
||||||
|
|
||||||
# Print directly to stdout for tests
|
|
||||||
print('IMPORTANT - Save your particl wallet recovery phrase:\n{}\n'.format(particl_wallet_mnemonic))
|
|
||||||
print('Done.')
|
print('Done.')
|
||||||
|
|
||||||
|
|
||||||
|
|
2
docker/production/.gitignore
vendored
2
docker/production/.gitignore
vendored
|
@ -1 +1,3 @@
|
||||||
.env
|
.env
|
||||||
|
docker-compose-prepare.yml
|
||||||
|
docker-compose.yml
|
||||||
|
|
25
docker/production/compose-fragments/0_start.yml
Normal file
25
docker/production/compose-fragments/0_start.yml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
version: '3.3'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
external:
|
||||||
|
name: coinswap_network
|
||||||
|
services:
|
||||||
|
particl_core:
|
||||||
|
image: i_particl
|
||||||
|
build:
|
||||||
|
context: particl
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: particl_core
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/particl:/data
|
||||||
|
#ports:
|
||||||
|
# - "51738:51738"
|
||||||
|
expose:
|
||||||
|
- 51735
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: unless-stopped
|
18
docker/production/compose-fragments/1_bitcoin.yml
Normal file
18
docker/production/compose-fragments/1_bitcoin.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
bitcoin_core:
|
||||||
|
image: i_bitcoin
|
||||||
|
build:
|
||||||
|
context: bitcoin
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: bitcoin_core
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/bitcoin:/data
|
||||||
|
#ports:
|
||||||
|
# - "8333:8333"
|
||||||
|
expose:
|
||||||
|
- 8332
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: unless-stopped
|
14
docker/production/compose-fragments/1_litecoin.yml
Normal file
14
docker/production/compose-fragments/1_litecoin.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
litecoin_core:
|
||||||
|
image: i_litecoin
|
||||||
|
build:
|
||||||
|
context: litecoin
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: litecoin_core
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/litecoin:/data
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: unless-stopped
|
18
docker/production/compose-fragments/1_monero-daemon.yml
Normal file
18
docker/production/compose-fragments/1_monero-daemon.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
monero_daemon:
|
||||||
|
image: i_monero_daemon
|
||||||
|
build:
|
||||||
|
context: monero_daemon
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: monero_daemon
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/monero_daemon:/data
|
||||||
|
#ports:
|
||||||
|
# - "18080:18080"
|
||||||
|
expose:
|
||||||
|
- 8332
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: unless-stopped
|
16
docker/production/compose-fragments/1_monero-wallet.yml
Normal file
16
docker/production/compose-fragments/1_monero-wallet.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
monero_wallet:
|
||||||
|
image: i_monero_wallet
|
||||||
|
build:
|
||||||
|
context: monero_wallet
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: monero_wallet
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/monero_wallet:/data
|
||||||
|
expose:
|
||||||
|
- 8332
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: unless-stopped
|
20
docker/production/compose-fragments/8_swapclient.yml
Normal file
20
docker/production/compose-fragments/8_swapclient.yml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
swapclient:
|
||||||
|
image: i_swapclient
|
||||||
|
build:
|
||||||
|
context: swapclient
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: swapclient
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/swapclient:/data
|
||||||
|
ports:
|
||||||
|
- "${HTML_PORT}" # Expose only to localhost, see .env
|
||||||
|
environment:
|
||||||
|
- TZ
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "5"
|
||||||
|
depends_on:
|
||||||
|
- particl_core
|
||||||
|
restart: unless-stopped
|
44
docker/production/compose-fragments/9_swapprepare.yml
Normal file
44
docker/production/compose-fragments/9_swapprepare.yml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
swapprepare:
|
||||||
|
image: i_swapclient
|
||||||
|
build:
|
||||||
|
context: swapclient
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: swapprepare
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/swapclient:/data/swapclient
|
||||||
|
- ${DATA_PATH}/monero_daemon:/data/monero_daemon
|
||||||
|
- ${DATA_PATH}/monero_wallet:/data/monero_wallet
|
||||||
|
- ${DATA_PATH}/particl:/data/particl
|
||||||
|
- ${DATA_PATH}/bitcoin:/data/bitcoin
|
||||||
|
- ${DATA_PATH}/litecoin:/data/litecoin
|
||||||
|
environment:
|
||||||
|
- TZ
|
||||||
|
- PART_RPC_HOST
|
||||||
|
- LTC_RPC_HOST
|
||||||
|
- BTC_RPC_HOST
|
||||||
|
- PART_RPC_PORT
|
||||||
|
- LTC_RPC_PORT
|
||||||
|
- BTC_RPC_PORT
|
||||||
|
- XMR_RPC_HOST
|
||||||
|
- BASE_XMR_RPC_PORT
|
||||||
|
- BASE_XMR_ZMQ_PORT
|
||||||
|
- BASE_XMR_WALLET_PORT
|
||||||
|
- XMR_WALLET_RPC_HOST
|
||||||
|
- XMR_WALLET_RPC_USER
|
||||||
|
- XMR_WALLET_RPC_PWD
|
||||||
|
- DEFAULT_XMR_RESTORE_HEIGHT
|
||||||
|
- UI_HTML_PORT
|
||||||
|
- PART_ZMQ_PORT
|
||||||
|
- PART_RPC_USER
|
||||||
|
- PART_RPC_PWD
|
||||||
|
- BTC_RPC_USER
|
||||||
|
- BTC_RPC_PWD
|
||||||
|
- LTC_RPC_USER
|
||||||
|
- LTC_RPC_PWD
|
||||||
|
- PART_DATA_DIR
|
||||||
|
- LTC_DATA_DIR
|
||||||
|
- BTC_DATA_DIR
|
||||||
|
- XMR_DATA_DIR
|
||||||
|
- XMR_WALLETS_DIR
|
||||||
|
- COINS_RPCBIND_IP
|
||||||
|
restart: "no"
|
|
@ -1,155 +0,0 @@
|
||||||
version: '3.3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
particl_core:
|
|
||||||
image: i_particl
|
|
||||||
build:
|
|
||||||
context: particl
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: particl_core
|
|
||||||
volumes:
|
|
||||||
- ${DATA_PATH}/particl:/data
|
|
||||||
#ports:
|
|
||||||
# - "51738:51738"
|
|
||||||
expose:
|
|
||||||
- 51735
|
|
||||||
logging:
|
|
||||||
driver: "json-file"
|
|
||||||
options:
|
|
||||||
max-size: "10m"
|
|
||||||
max-file: "3"
|
|
||||||
#restart: unless-stopped
|
|
||||||
#bitcoin_core:
|
|
||||||
#image: i_bitcoin
|
|
||||||
#build:
|
|
||||||
#context: bitcoin
|
|
||||||
#dockerfile: Dockerfile
|
|
||||||
#container_name: bitcoin_core
|
|
||||||
#volumes:
|
|
||||||
#- ${DATA_PATH}/bitcoin:/data
|
|
||||||
##ports:
|
|
||||||
## - "8333:8333"
|
|
||||||
#expose:
|
|
||||||
#- 8332
|
|
||||||
#logging:
|
|
||||||
#driver: "json-file"
|
|
||||||
#options:
|
|
||||||
#max-size: "10m"
|
|
||||||
#max-file: "3"
|
|
||||||
#restart: unless-stopped
|
|
||||||
litecoin_core:
|
|
||||||
image: i_litecoin
|
|
||||||
build:
|
|
||||||
context: litecoin
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: litecoin_core
|
|
||||||
volumes:
|
|
||||||
- ${DATA_PATH}/litecoin:/data
|
|
||||||
logging:
|
|
||||||
driver: "json-file"
|
|
||||||
options:
|
|
||||||
max-size: "10m"
|
|
||||||
max-file: "3"
|
|
||||||
#restart: unless-stopped
|
|
||||||
#monero_daemon:
|
|
||||||
#image: i_monero_daemon
|
|
||||||
#build:
|
|
||||||
#context: monero_daemon
|
|
||||||
#dockerfile: Dockerfile
|
|
||||||
#container_name: monero_daemon
|
|
||||||
#volumes:
|
|
||||||
#- ${DATA_PATH}/monero_daemon:/data
|
|
||||||
#ports:
|
|
||||||
#- "18080:18080"
|
|
||||||
#expose:
|
|
||||||
#- 8332
|
|
||||||
#logging:
|
|
||||||
#driver: "json-file"
|
|
||||||
#options:
|
|
||||||
#max-size: "10m"
|
|
||||||
#max-file: "3"
|
|
||||||
#restart: unless-stopped
|
|
||||||
#monero_wallet:
|
|
||||||
#image: i_monero_wallet
|
|
||||||
#build:
|
|
||||||
#context: monero_wallet
|
|
||||||
#dockerfile: Dockerfile
|
|
||||||
#container_name: monero_wallet
|
|
||||||
#volumes:
|
|
||||||
#- ${DATA_PATH}/monero_wallet:/data
|
|
||||||
#expose:
|
|
||||||
#- 8332
|
|
||||||
#logging:
|
|
||||||
#driver: "json-file"
|
|
||||||
#options:
|
|
||||||
#max-size: "10m"
|
|
||||||
#max-file: "3"
|
|
||||||
#restart: unless-stopped
|
|
||||||
swapclient:
|
|
||||||
image: i_swapclient
|
|
||||||
build:
|
|
||||||
context: swapclient
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: swapclient
|
|
||||||
volumes:
|
|
||||||
- ${DATA_PATH}/swapclient:/data
|
|
||||||
ports:
|
|
||||||
- "${HTML_PORT}" # Expose only to localhost, see .env
|
|
||||||
environment:
|
|
||||||
- TZ
|
|
||||||
logging:
|
|
||||||
driver: "json-file"
|
|
||||||
options:
|
|
||||||
max-size: "10m"
|
|
||||||
max-file: "5"
|
|
||||||
depends_on:
|
|
||||||
- particl_core
|
|
||||||
restart: unless-stopped
|
|
||||||
swapprepare:
|
|
||||||
image: i_swapclient
|
|
||||||
build:
|
|
||||||
context: swapclient
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: swapprepare
|
|
||||||
volumes:
|
|
||||||
- ${DATA_PATH}/swapclient:/data/swapclient
|
|
||||||
- ${DATA_PATH}/monero_daemon:/data/monero_daemon
|
|
||||||
- ${DATA_PATH}/monero_wallet:/data/monero_wallet
|
|
||||||
- ${DATA_PATH}/particl:/data/particl
|
|
||||||
- ${DATA_PATH}/bitcoin:/data/bitcoin
|
|
||||||
- ${DATA_PATH}/litecoin:/data/litecoin
|
|
||||||
environment:
|
|
||||||
- TZ
|
|
||||||
- PART_RPC_HOST
|
|
||||||
- LTC_RPC_HOST
|
|
||||||
- BTC_RPC_HOST
|
|
||||||
- PART_RPC_PORT
|
|
||||||
- LTC_RPC_PORT
|
|
||||||
- BTC_RPC_PORT
|
|
||||||
- XMR_RPC_HOST
|
|
||||||
- BASE_XMR_RPC_PORT
|
|
||||||
- BASE_XMR_ZMQ_PORT
|
|
||||||
- BASE_XMR_WALLET_PORT
|
|
||||||
- XMR_WALLET_RPC_HOST
|
|
||||||
- XMR_WALLET_RPC_USER
|
|
||||||
- XMR_WALLET_RPC_PWD
|
|
||||||
- DEFAULT_XMR_RESTORE_HEIGHT
|
|
||||||
- UI_HTML_PORT
|
|
||||||
- PART_ZMQ_PORT
|
|
||||||
- PART_RPC_USER
|
|
||||||
- PART_RPC_PWD
|
|
||||||
- BTC_RPC_USER
|
|
||||||
- BTC_RPC_PWD
|
|
||||||
- LTC_RPC_USER
|
|
||||||
- LTC_RPC_PWD
|
|
||||||
- PART_DATA_DIR
|
|
||||||
- LTC_DATA_DIR
|
|
||||||
- BTC_DATA_DIR
|
|
||||||
- XMR_DATA_DIR
|
|
||||||
- XMR_WALLETS_DIR
|
|
||||||
- COINS_RPCBIND_IP
|
|
||||||
restart: "no"
|
|
||||||
networks:
|
|
||||||
default:
|
|
||||||
external:
|
|
||||||
name: coinswap_network
|
|
24
docker/production/notes.md
Normal file
24
docker/production/notes.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
|
||||||
|
Copy and edit .env config:
|
||||||
|
|
||||||
|
$ cp example.env .env
|
||||||
|
|
||||||
|
|
||||||
|
Create docker-compose config:
|
||||||
|
|
||||||
|
cat compose-fragments/0_start.yml > docker-compose.yml
|
||||||
|
|
||||||
|
# Add the relevant coin fragments
|
||||||
|
cat compose-fragments/1_bitcoin.yml >> docker-compose.yml
|
||||||
|
cat compose-fragments/1_litecoin.yml >> docker-compose.yml
|
||||||
|
cat compose-fragments/1_monero-daemon.yml >> docker-compose.yml
|
||||||
|
cat compose-fragments/1_monero-wallet.yml >> docker-compose.yml
|
||||||
|
|
||||||
|
cat compose-fragments/8_swapclient.yml >> docker-compose.yml
|
||||||
|
|
||||||
|
# Copy for prepare script config
|
||||||
|
cp docker-compose.yml docker-compose-prepare.yml
|
||||||
|
cat compose-fragments/9_swapprepare.yml >> docker-compose-prepare.yml
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue