aboutsummaryrefslogtreecommitdiffstats
path: root/compose.yml.sample
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-03-16 23:38:47 -0700
committerAdam Soltys <[email protected]>2026-03-16 23:38:47 -0700
commitee88e5f213334382cbea04402cab9bc29405412a (patch)
treeaf340b5582cf69c19a56c22754caafae10cc203e /compose.yml.sample
parent988b7c1b028f0528433acc36a54a4a3c514108e3 (diff)
downloadcoinos-server-ee88e5f213334382cbea04402cab9bc29405412a.tar.gz
coinos-server-ee88e5f213334382cbea04402cab9bc29405412a.zip
streamline dev setup and docker images
- Rewrite setup.sh: auto-installs Docker, downloads regtest snapshot, pulls images, starts all services. Idempotent, works on fresh Ubuntu/macOS. - Create coinos-base image (196MB) shared by all containers: bitcoin, elements, lightning, strfry, kvrocks, electrs, tigerbeetle, chopsticks. Total pull ~490MB, down from ~4.3GB. - Move all images to ghcr.io/coinos/* namespace. - Drop nutshell (mint/wallet), postgres, mon from default dev compose. - Comment out ark stack (optional), guard ark.ts against empty config. - Add missing sampledata: lightningc, strfry, kvrocks, valkey configs. - Strip strfry binary (145MB debug symbols removed). - Use single CLN version (v25.12.1) for all 3 lightning nodes. - Switch valkey to alpine variant (110MB → 41MB). - Update config.ts.sample with correct service URLs. - Regtest snapshot hosted on GitHub Releases (~2MB). Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Diffstat (limited to 'compose.yml.sample')
-rw-r--r--compose.yml.sample318
1 files changed, 106 insertions, 212 deletions
diff --git a/compose.yml.sample b/compose.yml.sample
index e871ad02..d9621d4a 100644
--- a/compose.yml.sample
+++ b/compose.yml.sample
@@ -1,44 +1,6 @@
services:
- arkd:
- image: asoltys/arkd
- container_name: arkd
- restart: unless-stopped
- depends_on:
- - arkd-wallet
- ports:
- - "7070:7070"
- environment:
- - ARKD_LOG_LEVEL=6
- - ARKD_NO_MACAROONS=true
- - ARKD_VTXO_TREE_EXPIRY=100
- - ARKD_SCHEDULER_TYPE=block
- - ARKD_UNILATERAL_EXIT_DELAY=512
- - ARKD_BOARDING_EXIT_DELAY=1024
- - ARKD_DATADIR=./data/regtest
- - ARKD_WALLET_ADDR=arkd-wallet:6060
- - ARKD_ESPLORA_URL=http://cs:3000
- - ARKD_VTXO_MIN_AMOUNT=1
- - ARKD_LIVE_STORE_TYPE=inmemory
- - ARKD_EVENT_DB_TYPE=badger
- - ARKD_DB_TYPE=sqlite
- - ARKD_ROUND_INTERVAL=10
- - ARKD_ALLOW_CSV_BLOCK_TYPE=true
- - ARKD_UNLOCKER_TYPE=env
- - ARKD_UNLOCKER_PASSWORD=testpassword
- volumes:
- - ./data/ark:/app/data
- tb:
- image: ghcr.io/tigerbeetle/tigerbeetle:latest
- container_name: tb
- privileged: true
- command: ["start", "--addresses=0.0.0.0:3000", "/data/0_0.tigerbeetle"]
- volumes:
- - ./data/tigerbeetle:/data
- ports:
- - "3001:3000"
- restart: always
app:
- image: asoltys/coinos-server
+ image: ghcr.io/coinos/base
container_name: app
depends_on:
- db
@@ -54,21 +16,19 @@ services:
ports:
- '3119:3119'
volumes:
- - .aws/:/root/.aws
- ./:/home/bun/app
- ./logs:/logs
- ./data/bitcoin/bitcoin.conf:/bitcoin.conf
- ./data/sockets:/sockets
- - ./mklittlefs:/usr/bin/mklittlefs
restart: always
bc:
- image: asoltys/bitcoin:28.0
+ image: ghcr.io/coinos/bitcoin:30.2
container_name: bc
volumes:
- ./data/bitcoin:/home/bitcoin/.bitcoin
restart: always
lq:
- image: asoltys/elements:23.2.4
+ image: ghcr.io/coinos/elements:23.2.4
container_name: lq
volumes:
- ./data/liquid:/home/elements/.elements
@@ -76,7 +36,7 @@ services:
ports:
- 7043:7040
cl:
- image: elementsproject/lightningd:v25.12.1
+ image: ghcr.io/coinos/lightningd:v25.12.1
container_name: cl
environment:
LIGHTNINGD_NETWORK: regtest
@@ -87,7 +47,7 @@ services:
- '1984:1984'
restart: always
clb:
- image: elementsproject/lightningd:v25.05
+ image: ghcr.io/coinos/lightningd:v25.12.1
container_name: clb
environment:
LIGHTNINGD_NETWORK: regtest
@@ -95,7 +55,7 @@ services:
- ./data/lightningb:/root/.lightning
restart: always
clc:
- image: elementsproject/lightningd:v25.05
+ image: ghcr.io/coinos/lightningd:v25.12.1
container_name: clc
environment:
LIGHTNINGD_NETWORK: regtest
@@ -103,7 +63,7 @@ services:
- ./data/lightningc:/root/.lightning
restart: always
db:
- image: valkey/valkey:8.0
+ image: valkey/valkey:8.0-alpine
container_name: db
ports:
- '6379:6379'
@@ -113,7 +73,7 @@ services:
- ./data/db/valkey.conf:/etc/valkey/valkey.conf
restart: always
arc:
- image: apache/kvrocks
+ image: ghcr.io/coinos/kvrocks
container_name: arc
ports:
- '6380:6379'
@@ -121,30 +81,28 @@ services:
volumes:
- ./data/archive-kv:/data
restart: always
+ tb:
+ image: ghcr.io/coinos/tigerbeetle
+ container_name: tb
+ privileged: true
+ command: ["start", "--addresses=0.0.0.0:3000", "/data/0_0.tigerbeetle"]
+ volumes:
+ - ./data/tigerbeetle:/data
+ ports:
+ - "3001:3000"
+ restart: always
sf:
container_name: sf
- image: asoltys/strsrv
- cap_add:
- - SYS_PTRACE
- security_opt:
- - seccomp:unconfined
+ image: ghcr.io/coinos/strsrv
volumes:
- - ./strsrv:/app/strsrv
- ./data/strfry/strfry.conf:/etc/strfry.conf
- ./data/strfry/db:/app/strfry-db
- ./data/sockets:/app/sockets
ports:
- "7777:7777"
- mon:
- container_name: mon
- image: asoltys/mon
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- environment:
- - RUNE=S9ybLdb07sJLlsAXMM7k4wa-VBw2nZ-_6XQtIwT8maw9MA==
cs:
- image: ghcr.io/vulpemventures/nigiri-chopsticks:latest
- container_name: cs
+ image: ghcr.io/coinos/chopsticks
+ container_name: cs
command:
- --wallet-name
- coinos
@@ -157,57 +115,13 @@ services:
- --addr
- 0.0.0.0:3000
depends_on:
- - bc
+ - bc
- eb
restart: unless-stopped
ports:
- "3000:3000"
- arkd-wallet:
- restart: unless-stopped
- build:
- context: .
- dockerfile: wallet.Dockerfile
- container_name: arkd-wallet
- depends_on:
- - nbxplorer
- ports:
- - "6060:6060"
- environment:
- - ARKD_WALLET_LOG_LEVEL=5
- - ARKD_WALLET_NBXPLORER_URL=http://nbxplorer:32838
- - ARKD_WALLET_DATADIR=./data/regtest
- - ARKD_WALLET_NETWORK=regtest
- - ARKD_WALLET_SIGNER_KEY=afcd3fa10f82a05fddc9574fdb13b3991b568e89cc39a72ba4401df8abef35f0
- volumes:
- - ./data/arkd-wallet:/app/data
- nbxplorer:
- restart: unless-stopped
- container_name: nbxplorer
- ports:
- - 32838:32838
- image: nicolasdorier/nbxplorer:2.5.30
- environment:
- - NBXPLORER_NETWORK=regtest
- - NBXPLORER_CHAINS=btc
- - NBXPLORER_BTCRPCURL=http://bc:18443/wallet/coinos
- - NBXPLORER_BTCNODEENDPOINT=bc:18444
- - NBXPLORER_BTCRPCUSER=admin1
- - NBXPLORER_BTCRPCPASSWORD=123
- - NBXPLORER_VERBOSE=1
- - NBXPLORER_BIND=0.0.0.0:32838
- - NBXPLORER_TRIMEVENTS=10000
- - NBXPLORER_SIGNALFILESDIR=/datadir
- - NBXPLORER_POSTGRES=User ID=postgres;Host=pgnbxplorer;Port=5432;Application Name=nbxplorer;MaxPoolSize=20;Database=nbxplorer
- - NBXPLORER_EXPOSERPC=1
- - NBXPLORER_NOAUTH=1
- volumes:
- - type: tmpfs
- target: /datadir
- depends_on:
- pgnbxplorer:
- condition: service_healthy
eb:
- image: ghcr.io/vulpemventures/electrs:latest
+ image: ghcr.io/coinos/electrs
container_name: eb
entrypoint:
- /build/electrs
@@ -233,114 +147,94 @@ services:
volumes:
- ./data/bitcoin:/config
restart: unless-stopped
- # el:
- # image: vulpemventures/electrs-liquid:latest
- # container_name: el
- # entrypoint:
- # - /build/electrs
- # command:
- # - --jsonrpc-import
- # - -vvvv
- # - --parent-network
- # - regtest
- # - --network
- # - liquidregtest
- # - --daemon-dir
- # - /config
- # - --daemon-rpc-addr
- # - lq:7040
- # - --cookie
- # - admin1:123
- # - --http-addr
- # - 0.0.0.0:3002
- # - --electrum-rpc-addr
- # - 0.0.0.0:60401
- # - --cors
- # - "*"
+ # ── Ark (optional) ──────────────────────────────────────────────
+ # Uncomment to enable Ark vault payments.
+ # Requires: arkd, arkd-wallet, nbxplorer, pgnbxplorer
+ #
+ # arkd:
+ # image: ghcr.io/coinos/arkd
+ # container_name: arkd
+ # restart: unless-stopped
# depends_on:
- # - lq
+ # - arkd-wallet
# ports:
- # - '3003:3002'
+ # - "7070:7070"
+ # environment:
+ # - ARKD_LOG_LEVEL=6
+ # - ARKD_NO_MACAROONS=true
+ # - ARKD_VTXO_TREE_EXPIRY=100
+ # - ARKD_SCHEDULER_TYPE=block
+ # - ARKD_UNILATERAL_EXIT_DELAY=512
+ # - ARKD_BOARDING_EXIT_DELAY=1024
+ # - ARKD_DATADIR=./data/regtest
+ # - ARKD_WALLET_ADDR=arkd-wallet:6060
+ # - ARKD_ESPLORA_URL=http://cs:3000
+ # - ARKD_VTXO_MIN_AMOUNT=1
+ # - ARKD_LIVE_STORE_TYPE=inmemory
+ # - ARKD_EVENT_DB_TYPE=badger
+ # - ARKD_DB_TYPE=sqlite
+ # - ARKD_ROUND_INTERVAL=10
+ # - ARKD_ALLOW_CSV_BLOCK_TYPE=true
+ # - ARKD_UNLOCKER_TYPE=env
+ # - ARKD_UNLOCKER_PASSWORD=testpassword
+ # volumes:
+ # - ./data/ark:/app/data
+ # arkd-wallet:
# restart: unless-stopped
- mint:
- image: asoltys/nutshell:main
- container_name: mint
- ports:
- - "3338:3338"
- environment:
- - MINT_RPC_SERVER_ENABLE=TRUE
- - MINT_RPC_SERVER_ADDR=localhost
- - MINT_RPC_SERVER_PORT=8086
- - MINT_RPC_SERVER_KEY=./server_private.pem
- - MINT_RPC_SERVER_CERT=./server_cert.pem
- - MINT_RPC_SERVER_CA=./ca_cert.pem
- - MINT_CLNREST_URL=http://cl:3010
- - MINT_CLNREST_RUNE=S9ybLdb07sJLlsAXMM7k4wa-VBw2nZ-_6XQtIwT8maw9MA==
- - MINT_BACKEND_BOLT11_SAT=CLNRestWallet
- - MINT_INFO_CONTACT=[["email","[email protected]"],["twitter","@coinoswallet"],["nostr","npub1h2qfjpnxau9k7ja9qkf50043xfpfy8j5v60xsqryef64y44puwnq28w8ch"]]
- - MINT_INFO_ICON_URL="https://coinos.io/images/icon.png"
- # - MINT_BACKEND_BOLT11_SAT=FakeWallet
- - MINT_LISTEN_HOST=0.0.0.0
- - MINT_LISTEN_PORT=3338
- - MINT_PRIVATE_KEY=TEST_PRIVATE_KEY
- - MINT_CLNREST_COINOS_URL=http://app:3119
- - MINT_CLNREST_COINOS_JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjI4MDE4NmMwLWQzODktNDViZS1iOGI2LWM4N2EwN2VlNjA5ZiIsImlhdCI6MTc0MTgwNDQyN30.oDDQeHN2CxjAOSOa6x75La8mQYnozkuSbVrBnTTto4A
- command: ["poetry", "run", "mint"]
- volumes:
- - "/home/adam/nutshell:/app"
- - "./data/mint:/app/data/mint"
- # mintb:
- # image: asoltys/nutshell
- # container_name: mintb
+ # image: asoltys/arkd-wallet
+ # build:
+ # context: .
+ # dockerfile: wallet.Dockerfile
+ # container_name: arkd-wallet
+ # depends_on:
+ # - nbxplorer
# ports:
- # - "3339:3338"
+ # - "6060:6060"
# environment:
- # - MINT_CLNREST_URL=http://clb:3010
- # - MINT_CLNREST_RUNE=kTyXJ6yJwESVezCl4yB4z0zGMjXi11qggnKRQ4nnc2Y9MA==
- # - MINT_BACKEND_BOLT11_SAT=CLNRestWallet
- # # - MINT_BACKEND_BOLT11_SAT=FakeWallet
- # - MINT_LISTEN_HOST=0.0.0.0
- # - MINT_LISTEN_PORT=3338
- # - MINT_PRIVATE_KEY=TEST_PRIVATE_KEYB
- # - MINT_CLNREST_COINOS_URL=http://app:3119
- # - MINT_CLNREST_COINOS_JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVjYTM0YWU4LTdiMTItNDU4OS04ODMyLTUyMTNjOWVhMjc5NyIsImlhdCI6MTcyNDA0NjI3OH0.bdX1YLnpgqpjmjrkCdIdDbdmZUdViNSVrAJ0OX3ByPo
- # command: ["poetry", "run", "mint"]
+ # - ARKD_WALLET_LOG_LEVEL=5
+ # - ARKD_WALLET_NBXPLORER_URL=http://nbxplorer:32838
+ # - ARKD_WALLET_DATADIR=./data/regtest
+ # - ARKD_WALLET_NETWORK=regtest
+ # - ARKD_WALLET_SIGNER_KEY=afcd3fa10f82a05fddc9574fdb13b3991b568e89cc39a72ba4401df8abef35f0
# volumes:
- # - "/home/adam/nutshell:/app"
- # - "./data/mint:/app/data/mint"
- #
- wallet:
- image: asoltys/nutshell
- container_name: wallet
- ports:
- - "4448:4448"
- depends_on:
- - mint
- environment:
- - MINT_URL=http://mint:3338
- - API_HOST=0.0.0.0
- command: ["poetry", "run", "cashu", "-d"]
- pgnbxplorer:
- restart: unless-stopped
- image: postgres:16
- container_name: pgnbxplorer
- ports:
- - 5432:5432
- environment:
- - POSTGRES_HOST_AUTH_METHOD=trust
- volumes:
- - type: tmpfs
- target: /var/lib/postgresql/data
- healthcheck:
- test:
- [
- "CMD-SHELL",
- "pg_isready -U postgres -d nbxplorer -h 127.0.0.1 -p 5432",
- ]
- interval: 2s
- timeout: 2s
- retries: 30
-networks:
- default:
+ # - ./data/arkd-wallet:/app/data
+ # nbxplorer:
+ # restart: unless-stopped
+ # container_name: nbxplorer
+ # image: nicolasdorier/nbxplorer:2.5.30
+ # ports:
+ # - 32838:32838
+ # environment:
+ # - NBXPLORER_NETWORK=regtest
+ # - NBXPLORER_CHAINS=btc
+ # - NBXPLORER_BTCRPCURL=http://bc:18443/wallet/coinos
+ # - NBXPLORER_BTCNODEENDPOINT=bc:18444
+ # - NBXPLORER_BTCRPCUSER=admin1
+ # - NBXPLORER_BTCRPCPASSWORD=123
+ # - NBXPLORER_BIND=0.0.0.0:32838
+ # - NBXPLORER_POSTGRES=User ID=postgres;Host=pgnbxplorer;Port=5432;Database=nbxplorer
+ # - NBXPLORER_NOAUTH=1
+ # volumes:
+ # - type: tmpfs
+ # target: /datadir
+ # depends_on:
+ # pgnbxplorer:
+ # condition: service_healthy
+ # pgnbxplorer:
+ # restart: unless-stopped
+ # image: postgres:16-alpine
+ # container_name: pgnbxplorer
+ # environment:
+ # - POSTGRES_HOST_AUTH_METHOD=trust
+ # volumes:
+ # - type: tmpfs
+ # target: /var/lib/postgresql/data
+ # healthcheck:
+ # test: ["CMD-SHELL", "pg_isready -U postgres -d nbxplorer -h 127.0.0.1 -p 5432"]
+ # interval: 2s
+ # timeout: 2s
+ # retries: 30
+networks:
+ default:
name: net
external: true