diff --git a/alts/navfiber.yml b/alts/navfiber.yml index f087f17c..41c0a87f 100644 --- a/alts/navfiber.yml +++ b/alts/navfiber.yml @@ -421,9 +421,9 @@ services: - STAKWORK_ADD_NODE_URL=https://staging.stakwork.com/api/v1/projects - STAKWORK_ADD_NODE_TOKEN=${STAKWORK_TOKEN} - JARVIS_BACKEND_PORT=5000 - - AWS_ACCESS_KEY_ID=**** - - AWS_SECRET_ACCESS_KEY=**** - - AWS_S3_BUCKET_PATH=https://test.com + - AWS_ACCESS_KEY_ID=***** + - AWS_SECRET_ACCESS_KEY=****** + - AWS_S3_BUCKET_PATH=https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images - AWS_S3_REGION_NAME=us-east-1 - RADAR_RSS_SCHEDULER_TIME_IN_SEC=5090000 - RADAR_TWITTER_SCHEDULER_TIME_IN_SEC=tue,21,14 @@ -463,6 +463,7 @@ services: - TLDR_WORKFLOW_ID=8262 - TWITTER_BEARER=${TWITTER_BEARER} - TLDR_REQUEST_URL=https://staging.stakwork.com/api/v1/projects + - FEATURE_FLAG_SCHEMA=true ports: - 5000:5000 links: diff --git a/alts/smaller-navfiber.yml b/alts/smaller-navfiber.yml new file mode 100644 index 00000000..cf591af4 --- /dev/null +++ b/alts/smaller-navfiber.yml @@ -0,0 +1,314 @@ +version: "3" + +services: + bitcoind: + image: lncm/bitcoind:v25.0 + restart: on-failure + container_name: bitcoind.sphinx + volumes: + - ./bitcoind:/data/.bitcoin + ports: + - 18443:18443 + - 8333:8333 + - 28332:28332 + - 28333:28333 + + bob-lnd: + image: lightninglabs/lnd:v0.16.2-beta + container_name: bob-lnd.sphinx + volumes: + - ./lnd/bob/.lnd:/root/.lnd + - ./lnd/setup:/lndsetup + ports: + - 9736:9735 + - 10010:10010 + - 38882:38882 + command: --configfile=/lndsetup/bob.conf + + dave-lnd: + image: lightninglabs/lnd:v0.14.3-beta.rc1 + container_name: dave-lnd.sphinx + volumes: + - ./lnd/dave/.lnd:/root/.lnd + - ./lnd/setup:/lndsetup + ports: + - 9738:9735 + - 10012:10012 + - 38884:38884 + command: --configfile=/lndsetup/dave.conf + + lndsetup: + image: node:12-buster-slim + depends_on: + - bob-lnd + - dave-lnd + restart: "no" + entrypoint: ["node", "/lndsetup/index.js"] + volumes: + - ./lnd/bob/.lnd:/bob/.lnd + - ./lnd/setup:/lndsetup + - ./lnd/setup/nodes/navfiberNodes.js:/lndsetup/nodes.js + environment: + - NAV_FIBER=true + + # auth: + # image: sphinxlightning/sphinx-auth:0.2.3 + # container_name: auth.sphinx + # restart: on-failure + # depends_on: + # - db + # environment: + # - JWT_KEY=19e0bb49bhyuibme + # - HOST=localhost:9090 + # ports: + # - 9090:9090 + + # mqtt: + # image: sphinxlightning/sphinx-mqtt:test-2 + # container_name: mqtt.sphinx + # restart: on-failure + # depends_on: + # - auth + # ports: + # - 1883:1883 + # db: + # image: postgres + # container_name: db.sphinx + # restart: on-failure + # environment: + # - POSTGRES_PASSWORD=sphinx + # - POSTGRES_USER=postgres + # volumes: + # - ./init.sql:/docker-entrypoint-initdb.d/init.sql + # - ./pgdata:/var/lib/postgresql/data + # ports: + # - 5433:5432 + + bob: + image: sphinxlightning/sphinx-relay + container_name: bob.sphinx + user: root + restart: on-failure + depends_on: + - bob-lnd + entrypoint: + [ + "node", + "/relay/dist/app.js", + "--config=/relay/configs/bob.json", + "--db=/relay/configs/bob-db.json", + ] + volumes: + - ./relay:/relay/configs + - ./lnd/bob/.lnd:/relay/bob/.lnd + environment: + - NODE_ENV=${GITACTION_ENV:-development} + - PORT=3002 + - TRIBES_HOST=host.docker.internal:13000 + ports: + - 3002:3002 + extra_hosts: + - "host.docker.internal:host-gateway" + + dave: + image: sphinxlightning/sphinx-relay + container_name: dave.sphinx + user: root + restart: on-failure + depends_on: + - dave-lnd + - proxy + entrypoint: + [ + "node", + "/relay/dist/app.js", + "--config=/relay/configs/navfiber-dave.json", + "--db=/relay/configs/dave-db.json", + ] + volumes: + - ./relay:/relay/configs + - ./lnd/dave/.lnd:/relay/dave/.lnd + - ./proxy:/proxy + environment: + - NODE_ENV=${GITACTION_ENV:-development} + - PORT=3004 + - TRIBES_HOST=host.docker.internal:13000 + ports: + - 3004:3004 + + relaysetup: + image: node:12-buster-slim + depends_on: + - bob + - dave + - lndsetup + restart: on-failure + entrypoint: ["node", "/relay/setup/index.js"] + volumes: + - ./relay:/relay + - ./relay/nodes_partial/navfiber-proxy-nodes.partial.json:/relay/nodes_partial.json + environment: + - DAVE_IP=http://host.docker.internal:3004 + - NAV_FIBER=true + + proxy: + image: sphinxlightning/sphinx-proxy:latest + container_name: proxy.sphinx + restart: always + user: root + depends_on: + - dave-lnd + volumes: + - ./lnd/dave/.lnd:/lnd/.lnd + - ./proxy/cert:/cert + - ./proxy/macaroons:/macaroons + - ./proxy/badger:/badger + - type: bind + source: ./proxy/lnd_proxy.conf + target: /lnd_proxy.conf + entrypoint: + [ + "/app/sphinx-proxy", + "--rpclisten=0.0.0.0:11111", + "--tlscertpath=/cert/tls.cert", + "--tlskeypath=/cert/tls.key", + "--bitcoin.regtest", + "--bitcoin.active", + "--bitcoin.basefee=0", + "--store-key=4967BC847DDEFF47C4BC890038F5A495", + "--unlock-pwd=hi123456", + "--server-macaroons-dir=/macaroons", + "--channels-start=2", + "--admin-token=r46bnf8ibrhbb424heba", + "--admin-port=5050", + "--admin-pubkey=030841d1519f19c68e80efc5ef5af3460ca4bfa17486fda9baca878b9ef255358f", + "--initial-msat=500000", + "--macaroon-location=/lnd/.lnd/data/chain/bitcoin/regtest/admin.macaroon", + "--tls-location=/lnd/.lnd/tls.cert", + "--lnd-ip=dave-lnd.sphinx", + "--lnd-port=10012", + "--mqtt-broker=tcps://mqtt.sphinx:1883", + "--topic-uuid=YLkmJR_jaWBRICt21_IG01sopeqvE_8JUv3NXbBV9egjj2Y9AFf8iTmugbxtlxcnNc-RjYpbdN9E_vMWm4LHXTCbhL4O", + "--tlsextradomain=proxy.sphinx", + "--use-hd-keys", + ] + ports: + - 11111:11111 + - 5050:5050 + + boltwall: + image: sphinxlightning/sphinx-boltwall:latest + container_name: boltwall.sphinx + restart: on-failure + depends_on: + - boltwallsetup + volumes: + - ./boltwall/.env:/usr/src/app/.env + ports: + - 8444:8444 + + boltwallsetup: + image: node:12-buster-slim + restart: on-failure + entrypoint: ["node", "/boltwall/setup/index.js"] + volumes: + - ./boltwall:/boltwall + - ./boltwall/.env:/boltwall/.env + - ./lnd:/lnd + + neo4j: + image: neo4j:4.4.9 + container_name: neo4j.sphinx + volumes: + - ./neo4j/data:/data:rw + - ./neo4j/logs:/logs:rw + - ./neo4j/plugins:/plugins + - ./neo4j/tmp/import:/var/lib/neo4j/import + - ./neo4j/conf:/var/lib/neo4j/conf/ + ports: + - 7474:7474 + - 7687:7687 + environment: + - NEO4J_AUTH=neo4j/test + - NEO4J_USER=neo4j + - NEO4J_PASS=test + - NEO4J_apoc_export_file_enabled=true + - NEO4J_apoc_import_file_enabled=true + - NEO4J_dbms_security_procedures_unrestricted=apoc.*,algo.* + - NEO4J_dbms_memory_heap_initial__size=64m + - NEO4J_dbms_memory_heap_max__size=256m + - NEO4J_apoc_uuid_enabled=true + - NEO4J_dbms_default__listen__address=0.0.0.0 + - NEO4J_dbms_connector_bolt_listen__address=0.0.0.0:7687 + - NEO4J_dbms_allow__upgrade=true + - NEO4J_dbms_default__database=neo4j + - NEO4JLABS_PLUGINS=["apoc"] + healthcheck: + test: [ "CMD", "/var/lib/neo4j/bin/cypher-shell", "-u", "${NEO4J_USER}", "-p", "${NEO4J_PASS}", "MATCH (n) RETURN n LIMIT 1" ] + interval: 10s + timeout: 10s + retries: 20 + + jarvis-backend: + image: sphinxlightning/sphinx-jarvis-backend:latest + container_name: jarvis-backend.sphinx + restart: on-failure + volumes: + - ./stakwork:/stakwork + - ./temp_images:/temp_images + - ./.env:/app/.env + environment: + - NEO4J_URI=bolt://neo4j:7687 + - NEO4J_USER=neo4j + - NEO4J_PASS=test + - STAKWORK_REQUEST_LOG_PATH=./ + - STAKWORK_ADD_NODE_URL=https://staging.stakwork.com/api/v1/projects + - STAKWORK_ADD_NODE_TOKEN=${STAKWORK_TOKEN} + - JARVIS_BACKEND_PORT=5000 + - AWS_ACCESS_KEY_ID=***** + - AWS_SECRET_ACCESS_KEY=***** + - AWS_S3_BUCKET_PATH=https://stakwork-uploads.s3.amazonaws.com/knowledge-graph-joe/content-images + - AWS_S3_REGION_NAME=us-east-1 + - RADAR_RSS_SCHEDULER_TIME_IN_SEC=5090000 + - RADAR_TWITTER_SCHEDULER_TIME_IN_SEC=tue,21,14 + - RADAR_YOUTUBE_SCHEDULER_TIME_IN_SEC=20 + - RADAR_REQUEST_TOKEN=${STAKWORK_TOKEN} + - RADAR_SCHEDULER_JOB=False + - RADAR_YOUTUBE_SCHEDULER_JOB=False + - RADAR_TWITTER_SCHEDULER_JOB=False + - RADAR_RSS_SCHEDULER_JOB=False + - RADAR_SCHEDULER_JOB_HOUR=14 + - RADAR_SCHEDULER_JOB_MINUTE=38 + - SECOND_BRAIN_GRAPH_URL=https://knowledge-graph.sphinx.chat/get_named_entities + - ELASTIC_URI=http://0.0.0.0:9200 + - ELASTIC_PASSWORD=test + - PUBLIC_GRAPH_RESULT_LIMIT=10 + - STAKWORK_ADD_EPISODE_URL=https://staging.stakwork.com/api/v1/projects + - RADAR_SCHEDULER_TIME_IN_SEC=5 + - RADAR_TWEET_WEBHOOK=https://stakwork.free.beeceptor.com/stakwork/api/v1/projects/v1/tweet + - RADAR_TOPIC_WEBHOOK=https://stakwork.free.beeceptor.com/stakwork/api/v1/projects/v1/tweet + - RADAR_REQUEST_URL=https://staging.stakwork.com/api/v1/projects + - SELF_GENERATING_GRAPH=1 + - MAX_PAYMENT_HIERARCY_DEPTH=2 + - AUDIO_TAGGING_WORKFLOW_ID=2551 + - SINGLE_AUDIO_OR_VIDEO_EPISODE_WORKFLOW_ID=2552 + - SINGLE_TWEET_WORKFLOW_ID=2553 + - WEBPAGE_TEXT_WORKFLOW_ID=2554 + - DOCUMENT_WORKFLOW_ID=2555 + - TRIBE_MESSAGE_WORKFLOW_ID=2556 + - TWEET_BY_AUTOR_WORKFLOW_ID=2557 + - TWEET_BY_TOPIC_WORKFLOW_ID=2558 + - GITHUB_ISSUE_WORKFLOW_ID=2559 + - YOUTUBE_BY_CHANNEL_WORKFLOW_ID=2550 + - RSS_FEED_WORKFLOW_ID=2561 + - TUTORIAL_GENERATOR_WORKFLOW_ID=2562 + - INSTAGRAPH_GENERATOR_WORKFLOW_ID=2563 + - QUESTION_AND_ANSWER_WORKFLOW_ID=2564 + - TLDR_WORKFLOW_ID=8262 + - TWITTER_BEARER=${TWITTER_BEARER} + - TLDR_REQUEST_URL=https://staging.stakwork.com/api/v1/projects + - FEATURE_FLAG_SCHEMA=true + ports: + - 5000:5000 + links: + - neo4j \ No newline at end of file diff --git a/lnd/setup/index.js b/lnd/setup/index.js index e241a720..9dce3ca4 100644 --- a/lnd/setup/index.js +++ b/lnd/setup/index.js @@ -12,6 +12,11 @@ if (process.env.CLN_PROXY === "true") { console.log("test cln proxy nodes!"); nodes = require("./nodes/clnProxyNodes"); } + +if (process.env.NAV_FIBER === "true") { + console.log("test NavFiber proxy nodes!"); + nodes = require("./nodes/navfiberNodes"); +} // if (process.env.DAVE_IP) { // if (nodes.nodes["dave"]) { // nodes.nodes["dave"].hostname = process.env.DAVE_IP; @@ -54,13 +59,15 @@ async function coins(node) { try { const balres = await lightning.getBalance(node); const confirmed = parseInt(balres.confirmed_balance); - console.log("=> ALICE confirmed balance:", confirmed); + console.log( + `=> ${node.alias.toLocaleUpperCase()} confirmed balance: ${confirmed}` + ); if (!confirmed) { const ares = await lightning.newAddress(node); const addy = ares.address; - console.log("=> ALICE address", addy); + console.log(`=> ${node.alias.toLocaleUpperCase()} address ${addy}`); await bitcoind.mine(101, addy); - console.log("=> 101 blocks mined to alice!", addy); + console.log(`=> 101 blocks mined to ${node.alias}! ${addy}`); await sleep(5000); } return true; @@ -90,7 +97,7 @@ async function channels(node) { console.log("=> 6 blocked mined to Alice!"); await sleep(20000); if (!channels.length) { - console.log("=> alice opening channels..."); + console.log(`=> ${node.alias} opening channels...`); // open channels here await asyncForEach(peersToMake, async (p) => { console.log("open channel with:", p); @@ -131,7 +138,11 @@ async function unlockAll() { await createOrUnlockWallet(node); }); await sleep(5000); - await coinsAndChannels(nodes.nodes.alice); + if (process.env.NAV_FIBER === "true") { + await coinsAndChannels(nodes.nodes.bob); + } else { + await coinsAndChannels(nodes.nodes.alice); + } } unlockAll(); diff --git a/lnd/setup/nodes/navfiberNodes.js b/lnd/setup/nodes/navfiberNodes.js new file mode 100644 index 00000000..2b768a0d --- /dev/null +++ b/lnd/setup/nodes/navfiberNodes.js @@ -0,0 +1,81 @@ +const macpath = ".lnd/data/chain/bitcoin/regtest/admin.macaroon"; + +const nodes = { + bob: { + alias: "bob", + hostname: "bob-lnd.sphinx:38882", + password: "bob12345", + type: "lnd", + macaroon: "/bob/" + macpath, + channels: [ + { + host: "dave-lnd.sphinx:9735", + pubkey: + "030841d1519f19c68e80efc5ef5af3460ca4bfa17486fda9baca878b9ef255358f", + }, + ], + mnemonic: [ + "above", + "street", + "spoon", + "mercy", + "shoot", + "mammal", + "color", + "comic", + "distance", + "myself", + "buyer", + "response", + "senior", + "timber", + "attract", + "neither", + "half", + "laundry", + "ethics", + "swarm", + "will", + "boss", + "spoil", + "genius", + ], + }, + dave: { + alias: "dave", + type: "lnd", + hostname: "dave-lnd.sphinx:38884", + password: "dave12345", + macaroon: "/dave/" + macpath, + mnemonic: [ + "able", + "stuff", + "magic", + "beach", + "ankle", + "exotic", + "blood", + "capital", + "motor", + "crouch", + "once", + "pigeon", + "awake", + "same", + "ill", + "crane", + "write", + "resource", + "interest", + "rail", + "cigar", + "duty", + "body", + "outdoor", + ], + }, +}; + +module.exports = { + nodes, +}; diff --git a/relay/navfiber-dave.json b/relay/navfiber-dave.json new file mode 100644 index 00000000..2e153e94 --- /dev/null +++ b/relay/navfiber-dave.json @@ -0,0 +1,58 @@ +{ + "development": { + "hub_api_url": "None", + "proxy_initial_sats": 20000, + "proxy_new_nodes": 4, + "proxy_lnd_ip": "proxy.sphinx", + "proxy_admin_token": "r46bnf8ibrhbb424heba", + "proxy_admin_url": "http://proxy.sphinx:5050", + "dont_ping_hub": true, + "proxy_lnd_port": "11111", + "proxy_tls_location": "/proxy/cert/tls.cert", + "proxy_macaroons_dir": "/proxy/macaroons", + "node_ip": "127.0.0.1", + "lnd_ip": "dave-lnd.sphinx", + "lnd_port": "10012", + "tls_location": "/relay/dave/.lnd/tls.cert", + "macaroon_location": "/relay/dave/.lnd/data/chain/bitcoin/regtest/admin.macaroon", + "node_http_protocol": "http", + "node_http_port": "3004", + "tribes_mqtt_port": "1883", + "tribes_insecure": true, + "public_url": "127.0.0.1:3004", + "connect_ui": true, + "logging_level": "debug", + "proxy_hd_keys": true, + "allow_swarm_invite": true, + "host_name": "http://dave.sphinx:3004", + "media_host": "meme.sphinx:5555" + }, + "gitactionenv": { + "hub_api_url": "None", + "proxy_initial_sats": 20000, + "proxy_new_nodes": 4, + "proxy_lnd_ip": "proxy.sphinx", + "proxy_admin_token": "r46bnf8ibrhbb424heba", + "proxy_admin_url": "http://proxy.sphinx:5050", + "dont_ping_hub": true, + "proxy_lnd_port": "11111", + "proxy_tls_location": "/proxy/cert/tls.cert", + "proxy_macaroons_dir": "/proxy/macaroons", + "node_ip": "127.0.0.1", + "lnd_ip": "dave-lnd.sphinx", + "lnd_port": "10012", + "tls_location": "/relay/dave/.lnd/tls.cert", + "macaroon_location": "/relay/dave/.lnd/data/chain/bitcoin/regtest/admin.macaroon", + "node_http_protocol": "http", + "node_http_port": "3004", + "tribes_mqtt_port": "1883", + "tribes_insecure": true, + "public_url": "127.0.0.1:3004", + "connect_ui": true, + "logging_level": "debug", + "proxy_hd_keys": true, + "allow_swarm_invite": true, + "host_name": "http://dave.sphinx:3004", + "media_host": "meme.sphinx:5555" + } +} diff --git a/relay/nodes_partial/navfiber-proxy-nodes.partial.json b/relay/nodes_partial/navfiber-proxy-nodes.partial.json new file mode 100644 index 00000000..9067dbcb --- /dev/null +++ b/relay/nodes_partial/navfiber-proxy-nodes.partial.json @@ -0,0 +1,16 @@ +[ + { + "alias": "bob", + "pubkey": "02a38857848aca6b32ebcc3c85d07ee41354988f4f1e0b4e6ccd255eee6ed75b8d", + "ip": "http://bob.sphinx:3002", + "external_ip": "http://localhost:3002" + }, + { + "alias": "dave", + "pubkey": "030841d1519f19c68e80efc5ef5af3460ca4bfa17486fda9baca878b9ef255358f", + "ip": "http://dave.sphinx:3004", + "external_ip": "http://localhost:3004", + "proxy_ip": "http://proxy.sphinx:5050", + "admin_token": "r46bnf8ibrhbb424heba" + } +] diff --git a/relay/setup/index.js b/relay/setup/index.js index 195525e5..3c26d6b4 100644 --- a/relay/setup/index.js +++ b/relay/setup/index.js @@ -24,6 +24,20 @@ async function setup() { } } } + + if (process.env.NAV_FIBER) { + let change = true; + index = 1; + while (change) { + if (nodes[index]) { + nodes[index].ip = process.env.DAVE_IP; + index += 1; + } else { + change = false; + } + } + } + await asyncForEach(nodes, async function (n, i) { await pollReady(n, i); await sleep(1000); @@ -36,30 +50,35 @@ async function setup() { if we do not have any generated yet this comes in handy when a person fresh installs the sphinx-stack*/ - botEnvVars = require(paths.botEnvVars); - botConfig = require(paths.botConfig); + if (!process.env.NAV_FIBER) { + botEnvVars = require(paths.botEnvVars); + botConfig = require(paths.botConfig); - if (botEnvVars.length != botConfig.length) { - var finalNodes = require(paths.pathToWrite); + if (botEnvVars.length != botConfig.length) { + var finalNodes = require(paths.pathToWrite); - let newBotEnvVars = []; + let newBotEnvVars = []; - await asyncForEach(botConfig, async function (botConfigValues, botIndex) { - function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); - } + await asyncForEach(botConfig, async function (botConfigValues, botIndex) { + function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } - await sleep(20000); - const nextKeyPortPair = await createBotKey( - botConfigValues, - botIndex, - finalNodes[0] - ); + await sleep(20000); + const nextKeyPortPair = await createBotKey( + botConfigValues, + botIndex, + finalNodes[0] + ); - newBotEnvVars[botIndex] = nextKeyPortPair; - }); + newBotEnvVars[botIndex] = nextKeyPortPair; + }); - fs.writeFileSync(paths.botEnvVars, JSON.stringify(newBotEnvVars, null, 2)); + fs.writeFileSync( + paths.botEnvVars, + JSON.stringify(newBotEnvVars, null, 2) + ); + } } console.log("======================================");