-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
247 lines (236 loc) · 6.85 KB
/
docker-compose.yml
File metadata and controls
247 lines (236 loc) · 6.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
services:
bitcoind:
container_name: bitcoin
image: btcpayserver/bitcoin:26.0
restart: unless-stopped
expose:
- '43782'
- '39388'
ports:
- '43782:43782'
- '39388:39388'
volumes:
- 'bitcoin_home:/home/bitcoin/.bitcoin'
environment:
BITCOIN_NETWORK: ${NBITCOIN_NETWORK:-regtest}
CREATE_WALLET: 'true'
BITCOIN_WALLETDIR: '/walletdata'
BITCOIN_EXTRA_ARGS: |
rpcport=43782
rpcbind=0.0.0.0:43782
rpcallowip=0.0.0.0/0
port=39388
whitelist=0.0.0.0/0
maxmempool=500
rpcauth=polaruser:5e5e98c21f5c814568f8b55d83b23c1c$$066b03f92df30b11de8e4b1b1cd5b1b4281aa25205bd57df9be82caf97a05526
txindex=1
fallbackfee=0.00002 # matches ldk-node fallback rate for ChannelCloseMinimum = 500 sat/kwu = 2 sat/vByte
zmqpubrawblock=tcp://0.0.0.0:28334
zmqpubrawtx=tcp://0.0.0.0:28335
zmqpubhashblock=tcp://0.0.0.0:28336
bitcoinsetup:
image: btcpayserver/bitcoin:26.0
depends_on:
- bitcoind
restart: 'no'
volumes:
- 'bitcoin_home:/home/bitcoin/.bitcoin'
user: bitcoin
# generate one block so electrs stop complaining
entrypoint:
[
'bash',
'-c',
'sleep 1; while ! bitcoin-cli -rpcconnect=bitcoind -generate 1; do sleep 1; done',
]
electrs:
container_name: electrum
image: getumbrel/electrs:v0.10.2
restart: unless-stopped
depends_on:
- bitcoind
expose:
- '60001'
- '28334'
- '28335'
- '28336'
ports:
- '60001:60001'
volumes:
- './electrs.toml:/data/electrs.toml'
environment:
- ELECTRS_NETWORK=regtest
- ELECTRS_ELECTRUM_RPC_ADDR=electrs:60001
- ELECTRS_DAEMON_RPC_ADDR=bitcoind:43782
- ELECTRS_DAEMON_P2P_ADDR=bitcoind:39388
- ELECTRS_LOG_FILTERS=INFO
darkhttpd:
image: p3terx/darkhttpd:1.16
restart: unless-stopped
depends_on:
- bitcoinsetup
expose:
- '80'
ports:
- '80:80'
volumes:
- './btc-fee-estimates.json:/www/btc-fee-estimates.json'
command:
- '/www'
lnd:
container_name: lnd
image: polarlightning/lnd:0.18.0-beta
restart: unless-stopped
depends_on:
- bitcoind
expose:
- '8080' # REST
- '9735' # P2P
- '10009' # RPC
ports:
- '8080:8080'
- '9735:9735'
- '10009:10009'
volumes:
- './lnd:/home/lnd/.lnd/'
command:
- '--noseedbackup'
- '--alias=lnd'
- '--externalip=127.0.0.1'
- '--bitcoin.active'
- '--bitcoin.regtest'
- '--bitcoin.node=bitcoind'
- '--bitcoind.rpchost=bitcoind:43782'
- '--bitcoind.rpcuser=polaruser'
- '--bitcoind.rpcpass=polarpass'
- '--bitcoind.zmqpubrawblock=tcp://bitcoind:28334'
- '--bitcoind.zmqpubrawtx=tcp://bitcoind:28335'
- '--debuglevel=info'
- '--listen=0.0.0.0:9735'
- '--rpclisten=0.0.0.0:10009'
- '--restlisten=0.0.0.0:8080'
- '--feeurl=http://darkhttpd:80/btc-fee-estimates.json'
- '--protocol.option-scid-alias'
- '--protocol.zero-conf'
ldk-backup-server:
container_name: ldk-backup-server
image: synonymsoft/ldk-backup-server:0.0.146
expose:
- '3003'
ports:
- '3003:3003'
environment:
HOST: '0.0.0.0'
PORT: '3003'
SECRET_KEY: 'e3e2d2e410569be1f2219e1ef21f188f7ccff1ce721ea2624263d3fe9878f69e'
PUBLIC_KEY: '0319c4ff23820afec0c79ce3a42031d7fef1dff78b7bdd69b5560684f3e1827675'
lnurl-server:
build: ./lnurl-server
container_name: lnurl-server
environment:
- NODE_ENV=production
- PORT=3000
- DOMAIN=http://localhost:3000
- DATABASE_URL=sqlite:///data/lnurl.db
# Bitcoin node connection
- BITCOIN_RPC_HOST=bitcoind
- BITCOIN_RPC_PORT=43782
- BITCOIN_RPC_USER=polaruser
- BITCOIN_RPC_PASS=polarpass
# LND connection
- LND_REST_HOST=lnd
- LND_REST_PORT=8080
- LND_MACAROON_PATH=/lnd-certs/data/chain/bitcoin/regtest/admin.macaroon
- LND_TLS_CERT_PATH=/lnd-certs/tls.cert
volumes:
- ./lnurl-server/data:/data
- ./lnd:/lnd-certs:ro
ports:
- "3000:3000"
postgres:
container_name: postgres
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
- ./sql/v0_create_vss_db.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
interval: 10s
timeout: 5s
retries: 5
lnurl-auth-server:
container_name: lnurl-auth-server
image: lnurl-auth-server:latest
build:
context: ../lnurl-auth-server
dockerfile: Dockerfile
restart: unless-stopped
environment:
- SERVER_HOST=0.0.0.0
- SERVER_PORT=5005
- SERVER_DOMAIN=${DOMAIN:-http://localhost:5005}
- JWT_PRIVATE_KEY_PATH=/app/keys/private.pem
- JWT_PUBLIC_KEY_PATH=/app/keys/public.pem
- JWT_EXPIRES_IN=24h
- CHALLENGE_EXPIRATION_MS=300000
- CHALLENGE_CLEANUP_INTERVAL_MS=60000
- CHALLENGE_LIMIT_MAX=10000
- LOG_LEVEL=info
- DB_PATH=/app/data/auth.db
- DB_MAX_MB=100
volumes:
- ./lnurl-server/keys:/app/keys:ro
- lnurl_auth_data:/app/data
ports:
- "5005:5005"
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "http://localhost:5005/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
vss-server:
container_name: vss-server
image: vss-server:latest
build:
context: ./vss-server
dockerfile: rust/Dockerfile
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
lnurl-auth-server:
condition: service_healthy
environment:
- VSS_SERVER_HOST=0.0.0.0
- VSS_SERVER_PORT=5050
- VSS_POSTGRESQL_HOST=postgres
- VSS_POSTGRESQL_PORT=5432
- VSS_POSTGRESQL_DATABASE=postgres
- VSS_POSTGRESQL_USERNAME=postgres
- VSS_POSTGRESQL_PASSWORD=postgres
- VSS_JWT_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0UY2NeRbDpDHYVWWJPcx
dcnRD6KG205/jg8ei4FF4YtUKBvgEB0wuRkLdHkPfx4fXFRJELIFveYtWUOWwFMG
UDfMZDKwb6eMQw9bm2UjHc4CE6jOi1E5q93dPfD8Pyq6xdOY6/FkDX2Pa+Piz07b
7/1jWLbEtX02thPqcsNryBQC69QGhRHhXWt+uXhN72V/uTfoWObS8v7gLZuga3y+
dEKrtnmIYdW86XxBnWbeiujmqVCf2AnNiXgL+GwGOcksprYXmWXCvOojLK0C/H9d
eda1vOI7kpA+rseM6Egc43UsEZrZPmuO7C7l6brTl/ZJTAbwvBa7jPQ2ncH7cb86
TwIDAQAB
-----END PUBLIC KEY-----
volumes:
- ./vss-server-config.toml:/app/vss-server-config.toml:ro
ports:
- "5050:5050"
volumes:
bitcoin_home:
postgres_data:
lnurl_auth_data:
networks: {}