From 78eaaea6a7c9e8b062da0944c6ecb493f390c367 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 21 Sep 2022 23:33:34 +0000 Subject: prod config --- Caddyfile | 19 +++++++++++++++++++ prod.yml | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 Caddyfile diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 00000000..b50f6f63 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,19 @@ +coinos.bobcat-liberty.ts.net { + handle_path /api* { + reverse_proxy localhost:3119 + } + + handle /lnurl* { + reverse_proxy localhost:3118 + } + + handle /ws* { + reverse_proxy localhost:3119 + } + + handle { + root * /home/adam/coinos-ui/dist + try_files {path}.html {path} /index.html + file_server + } +} diff --git a/prod.yml b/prod.yml index ea600a18..0b1020e6 100644 --- a/prod.yml +++ b/prod.yml @@ -1,24 +1,67 @@ version: '3.6' services: + caddy: + container_name: caddy + image: caddy:2 + ports: + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy:/data + environment: + DOMAIN: "${DOMAIN}" + networks: + default: + ipv4_address: 172.42.0.21 app: container_name: app image: gcr.io/coinos-326717/github.com/coinos/coinos-server:prod restart: always - ports: - - '3118:3118' - - '3119:3119' environment: NODE_ENV: production NODE_OPTIONS: "--es-module-specifier-resolution=node --experimental-modules --loader ./loader.js --openssl-legacy-provider" volumes: - ./:/app - ./logs:/logs - - /root/.lnda/tls.cert:/tls.cert extra_hosts: - host.docker.internal:host-gateway + networks: + default: + ipv4_address: 172.42.0.22 maria: container_name: maria image: mariadb restart: always environment: - MARIADB_ROOT_PASSWORD: pw + MARIADB_ROOT_PASSWORD: password + bitcoin: + image: ghcr.io/vulpemventures/bitcoin + container_name: bitcoin + volumes: + - ./config/bitcoin:/home/bitcoin/.bitcoin + restart: unless-stopped + networks: + default: + ipv4_address: 172.42.0.23 + liquid: + image: ghcr.io/vulpemventures/elements + container_name: liquid + volumes: + - ./config/liquid:/home/elements/.elements + restart: unless-stopped + networks: + default: + ipv4_address: 172.42.0.24 + cl: + image: elementsproject/lightningd:v0.12.0 + container_name: cl + volumes: + - ./config/lightning:/root/.lightning + restart: unless-stopped + networks: + default: + ipv4_address: 172.42.0.25 +networks: + default: + name: net + external: true -- cgit v1.2.3 From 918813a6e49f9d05828f6fb205614f9d288269e1 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 21 Sep 2022 19:56:48 -0700 Subject: rm knexfile --- db/index.js | 1 - sampleconfig/knexfile.js | 17 ----------------- 2 files changed, 18 deletions(-) delete mode 100644 sampleconfig/knexfile.js diff --git a/db/index.js b/db/index.js index 3d5aab36..8c94a4d3 100644 --- a/db/index.js +++ b/db/index.js @@ -1,7 +1,6 @@ import Sequelize from "@sequelize/core"; import db from "$db/db"; -import dbOptions from "$config/knexfile"; db.authenticate().catch(err => { console.debug("Error connecting to database: " + err.message); diff --git a/sampleconfig/knexfile.js b/sampleconfig/knexfile.js deleted file mode 100644 index dafb0d1c..00000000 --- a/sampleconfig/knexfile.js +++ /dev/null @@ -1,17 +0,0 @@ -// Update with your config settings. - -export default { - development: { - client: "mysql2", - connection: { - host: "maria", - database: "coinos", - user: "root", - password: "password" - }, - migrations: { - tableName: "migrations", - directory: "migrations" - } - } -}; -- cgit v1.2.3 From 45ae80bcde258622108c6d66e404660b0c037eb8 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 22 Sep 2022 02:57:15 +0000 Subject: prod config --- Caddyfile | 11 +++++------ prod.yml | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Caddyfile b/Caddyfile index b50f6f63..d179c899 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,19 +1,18 @@ -coinos.bobcat-liberty.ts.net { +localhost:80 { handle_path /api* { - reverse_proxy localhost:3119 + reverse_proxy app:3119 } handle /lnurl* { - reverse_proxy localhost:3118 + reverse_proxy app:3118 } handle /ws* { - reverse_proxy localhost:3119 + reverse_proxy app:3119 } handle { - root * /home/adam/coinos-ui/dist - try_files {path}.html {path} /index.html + root * /coinos file_server } } diff --git a/prod.yml b/prod.yml index 0b1020e6..89d7bf8c 100644 --- a/prod.yml +++ b/prod.yml @@ -4,8 +4,9 @@ services: container_name: caddy image: caddy:2 ports: - - "443:443" + - "80:80" volumes: + - /var/coinos:/coinos - ./Caddyfile:/etc/caddy/Caddyfile - ./caddy:/data environment: -- cgit v1.2.3 From 242de8fc9b774c67ea944b9bc0ce73ef4396c21b Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 22 Sep 2022 03:01:12 +0000 Subject: rm knexfile --- db/knexfile.js | 1 - 1 file changed, 1 deletion(-) delete mode 120000 db/knexfile.js diff --git a/db/knexfile.js b/db/knexfile.js deleted file mode 120000 index 3cf75ae7..00000000 --- a/db/knexfile.js +++ /dev/null @@ -1 +0,0 @@ -./../config/knexfile.js \ No newline at end of file -- cgit v1.2.3 From d5187156dcffbc034f22e47e55227ecb8e871b8e Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Sep 2022 00:08:07 +0000 Subject: prod config --- Caddyfile | 3 ++- db/db.js | 14 +++----------- lib/rates.js | 1 + package.json | 2 +- prod.yml | 19 ++++++++++++++++--- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Caddyfile b/Caddyfile index d179c899..3dc0100b 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,4 +1,4 @@ -localhost:80 { +:80 { handle_path /api* { reverse_proxy app:3119 } @@ -13,6 +13,7 @@ localhost:80 { handle { root * /coinos + try_files {path}.html {path} /index.html file_server } } diff --git a/db/db.js b/db/db.js index 06fdac89..9e7cc25b 100644 --- a/db/db.js +++ b/db/db.js @@ -1,13 +1,5 @@ import Sequelize from "@sequelize/core"; -import dbOptions from "../config/knexfile"; +import config from "$config"; -let { database, user, password, host } = dbOptions[ - process.env.NODE_ENV -].connection; - -export default new Sequelize(database, user, password, { - host, - dialect: "mariadb", - logging: false, - dialectOptions: { multipleStatements: true, timezone: "Etc/GMT+7" } -}); +let { database, user, password, options } = config.db; +export default new Sequelize(database, user, password, options); diff --git a/lib/rates.js b/lib/rates.js index 8679a08e..e7c16548 100644 --- a/lib/rates.js +++ b/lib/rates.js @@ -5,6 +5,7 @@ import fs from "fs"; import binanceFactory from "./binance"; import { broadcast } from "./sockets"; import store from "./store"; +import { err, warn } from "$lib/logging"; const binance = binanceFactory(); diff --git a/package.json b/package.json index 033cb60f..c67c5388 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "private": true, "scripts": { - "start": "node index.js", + "start": "nodemon index.js", "dev": "nodemon index.js" }, "dependencies": { diff --git a/prod.yml b/prod.yml index b7ca4b89..d0337cb6 100644 --- a/prod.yml +++ b/prod.yml @@ -3,6 +3,7 @@ services: caddy: container_name: caddy image: caddy:2 + restart: always ports: - "80:80" volumes: @@ -40,7 +41,7 @@ services: container_name: bitcoin volumes: - ./config/bitcoin:/home/bitcoin/.bitcoin - restart: unless-stopped + restart: always networks: default: ipv4_address: 172.42.0.23 @@ -49,19 +50,31 @@ services: container_name: liquid volumes: - ./config/liquid:/home/elements/.elements - restart: unless-stopped + restart: always networks: default: ipv4_address: 172.42.0.24 cl: image: elementsproject/lightningd:v0.12.0 container_name: cl + restart: always volumes: - ./config/lightning:/root/.lightning - restart: unless-stopped + ports: + - "9735:9735" networks: default: ipv4_address: 172.42.0.25 + lnd: + image: lightninglabs/lnd:v0.15.1-beta + container_name: lnd + volumes: + - ./config/lnd:/root/.lnd + - ./config/bitcoin:/root/.bitcoin + restart: always + networks: + default: + ipv4_address: 172.42.0.26 networks: default: name: net -- cgit v1.2.3 From ab4d160a6acfefdf83a281a02fb2e87a972150f6 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Sep 2022 00:11:41 -0400 Subject: pass date to exchange rate api --- lib/binance.js | 1 + lib/rates.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/binance.js b/lib/binance.js index 5eb2f286..f81c8cc3 100644 --- a/lib/binance.js +++ b/lib/binance.js @@ -21,6 +21,7 @@ export default () => { // app.set("ask", msg.a); // app.set("bid", msg.b); store.last = msg.c; + // console.log("last", msg.c, store.fx["CAD"], msg.c * store.fx["CAD"]); } catch (e) { err("binance message error", e.message); } diff --git a/lib/rates.js b/lib/rates.js index e7c16548..1827c1f6 100644 --- a/lib/rates.js +++ b/lib/rates.js @@ -27,7 +27,7 @@ let fetchRates; try { let { data: { rates: fx } - } = await axios.get("https://api.exchangerate.host/latest?base=USD"); + } = await axios.get(`https://api.exchangerate.host/latest?base=USD&v={(new Date()).toISOString().split('T')[0]}`); fs.writeFileSync("fx", JSON.stringify({ date, fx })); } catch (e) { try { @@ -41,6 +41,7 @@ let fetchRates; Object.keys(fx).map(k => { fx[k] = parseFloat((fx[k] / fx["USD"]).toFixed(6)); }); + fs.writeFileSync("fx", JSON.stringify({ date, fx })); } catch (e) { err("error fetching rates", e.message); -- cgit v1.2.3 From fa016bdd0eb3939c77f99e27af9a41923c2a7274 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Sep 2022 05:14:10 +0000 Subject: tor --- prod.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/prod.yml b/prod.yml index d0337cb6..8080c2be 100644 --- a/prod.yml +++ b/prod.yml @@ -75,6 +75,13 @@ services: networks: default: ipv4_address: 172.42.0.26 + tor: + container_name: tor + image: dperson/torproxy + restart: always + networks: + default: + ipv4_address: 172.42.0.27 networks: default: name: net -- cgit v1.2.3 From 6059ca000e68277dfc951bd56b6e46f65e860046 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Sep 2022 07:06:35 +0000 Subject: caddy cloudflare plugin --- .gitignore | 1 + Caddyfile | 62 ++++++++++++++++++++++++++++++++++++++++++++------------------ prod.yml | 34 +++++++++++++++++++++++++++++----- 3 files changed, 74 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 788c079f..3b6aa213 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ docker-compose.mainnet.yml assets.json lm.yml lt.yml +caddy diff --git a/Caddyfile b/Caddyfile index 3dc0100b..16535102 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,19 +1,45 @@ -:80 { - handle_path /api* { - reverse_proxy app:3119 - } - - handle /lnurl* { - reverse_proxy app:3118 - } - - handle /ws* { - reverse_proxy app:3119 - } - - handle { - root * /coinos - try_files {path}.html {path} /index.html - file_server - } +classic.coinos.io { + handle_path /api* { + reverse_proxy app:3119 + } + + handle /lnurl* { + reverse_proxy app:3118 + } + + handle /ws* { + reverse_proxy app:3119 + } + + handle { + root * /coinos + try_files {path}.html {path} /index.html + file_server + } + + tls { + dns cloudflare {env.CLOUDFLARE_AUTH_TOKEN} + } +} + +coinos.io { + handle_path /api* { + reverse_proxy app:3119 + } + + handle /lnurl* { + reverse_proxy app:3118 + } + + handle /ws* { + reverse_proxy app:3119 + } + + handle { + reverse_proxy ui:3000 + } + + tls { + dns cloudflare {env.CLOUDFLARE_AUTH_TOKEN} + } } diff --git a/prod.yml b/prod.yml index 8080c2be..a2547e29 100644 --- a/prod.yml +++ b/prod.yml @@ -1,21 +1,35 @@ version: '3.6' services: caddy: + depends_on: + - app container_name: caddy - image: caddy:2 + image: gcr.io/coinos-326717/github.com/asoltys/caddy-cloudflare:latest restart: always ports: - "80:80" + - "443:443" volumes: - /var/coinos:/coinos - ./Caddyfile:/etc/caddy/Caddyfile - ./caddy:/data environment: - DOMAIN: "${DOMAIN}" + CLOUDFLARE_AUTH_TOKEN: "${CLOUDFLARE_AUTH_TOKEN}" networks: default: ipv4_address: 172.42.0.21 + ui: + depends_on: + - app + container_name: ui + image: gcr.io/coinos-326717/github.com/coinos/coinos-ui:prod + restart: always app: + depends_on: + - cl + - maria + - bitcoin + - liquid container_name: app image: gcr.io/coinos-326717/github.com/coinos/coinos-server:prod restart: always @@ -25,8 +39,6 @@ services: volumes: - ./:/app - ./logs:/logs - extra_hosts: - - host.docker.internal:host-gateway networks: default: ipv4_address: 172.42.0.22 @@ -36,6 +48,8 @@ services: restart: always environment: MARIADB_ROOT_PASSWORD: password + volumes: + - ./mysql:/var/lib/mysql bitcoin: image: ghcr.io/vulpemventures/bitcoin container_name: bitcoin @@ -55,22 +69,30 @@ services: default: ipv4_address: 172.42.0.24 cl: + depends_on: + - bitcoin image: elementsproject/lightningd:v0.12.0 container_name: cl restart: always volumes: - ./config/lightning:/root/.lightning ports: - - "9735:9735" + - "9736:9735" networks: default: ipv4_address: 172.42.0.25 lnd: + depends_on: + - bitcoin + - tor image: lightninglabs/lnd:v0.15.1-beta container_name: lnd volumes: - ./config/lnd:/root/.lnd - ./config/bitcoin:/root/.bitcoin + - ./config/tor:/etc/tor + ports: + - "9735:9735" restart: always networks: default: @@ -79,6 +101,8 @@ services: container_name: tor image: dperson/torproxy restart: always + volumes: + - ./config/tor:/etc/tor networks: default: ipv4_address: 172.42.0.27 -- cgit v1.2.3 From 883e624d4d645b6b1c1f4b85c4bea4625ba5b046 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Sep 2022 07:32:22 +0000 Subject: drop nodemon in prod --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c67c5388..033cb60f 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "private": true, "scripts": { - "start": "nodemon index.js", + "start": "node index.js", "dev": "nodemon index.js" }, "dependencies": { -- cgit v1.2.3