diff --git a/README.md b/README.md index 9236230..beb06d0 100644 --- a/README.md +++ b/README.md @@ -29,14 +29,34 @@ This repository is one step in a longer path. Here are the major milestones of t ## Installation +### Development Environment + +A development environment will allow you modify the code on-the-fly and contribute to the code base of this repository. [PM2](https://www.npmjs.com/package/pm2) is recommended for running this code base as an IPFS Circuit Relay. + +- [Video: Installing ipfs-service-provider](https://youtu.be/Z0NsboIVN44) +- [Step-by-step installation instructions](https://gist.github.com/christroutner/3304a71d4c12a3a3e1664a438f64d9d0) + ```bash git clone https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-service cd ipfs-bch-wallet-service -sudo npm install -g node-pre-gyp +./install-mongo-sh npm install -npm start +./ipfs-bch-wallet-service.sh ``` +### Production Environment + +The [docker](./production/docker) directory contains a Dockerfile for building a production deployment. However, there is currently [a bug](https://github.com/Permissionless-Software-Foundation/ipfs-service-provider/issues/38) preventing the Docker container from being used as a Circuit Relay. + +``` +docker-compose build --no-cache +docker-compose up -d +``` + +### Operation Notes + +- There is a memory leak in the version of js-ipfs. The app is currently configured to shut down every 8 hours to flush memory. It relies on a process manager like pm2, Docker, or systemd to restart the app after it shuts down, in order to ensure continuous operation. + ## Structure The file layout of this repository differs from the koa-api-boilerplate. Instead, it follows the file layout of [Clean Architecture](troutsblog.com/blog/clean-architecture). diff --git a/bin/server.js b/bin/server.js index d996542..5bfca3d 100644 --- a/bin/server.js +++ b/bin/server.js @@ -100,12 +100,12 @@ class Server { // Attach the other IPFS controllers await controllers.attachControllers(app) - // ipfs-coord has a memory leak. This app shuts down after 8 hours. It + // ipfs-coord has a memory leak. This app shuts down after 4 hours. It // expects to be run by Docker or pm2, which can automatically restart // the app. setTimeout(function () { process.exit(0) - }, 60000 * 60 * 8) + }, 60000 * 60 * 4) return app } catch (err) { diff --git a/ipfs-bch-wallet-service.sh b/ipfs-bch-wallet-service.sh new file mode 100755 index 0000000..993860e --- /dev/null +++ b/ipfs-bch-wallet-service.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Ports +export PORT=5001 # REST API port +export IPFS_TCP_PORT=5268 +export IPFS_WS_PORT=5269 + +#export ENABLE_CIRCUIT_RELAY=1 + +# Production database connection string. +#export DBURL=mongodb://localhost:27017/bch-service-dev + +export COORD_NAME=ipfs-service-provider-generic +export MNEMONIC="churn aisle shield silver ladder swear hunt slim pen demand spoil veteran" + +export DEBUG_LEVEL=1 + +npm start diff --git a/package-lock.json b/package-lock.json index 167cf22..7533c68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "axios": "^0.21.1", "bcryptjs": "^2.4.3", "glob": "^7.1.6", - "ipfs-coord": "^6.6.4", + "ipfs-coord": "^6.6.6", "jsonrpc-lite": "^2.2.0", "jsonwebtoken": "^8.5.1", "jwt-bch-lib": "^1.3.0", @@ -9472,9 +9472,9 @@ } }, "node_modules/ipfs-coord": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-6.6.4.tgz", - "integrity": "sha512-0rrfunCMvC9Oiw+MCCUZ5/J2VSY1Z3Wdq6qph2VN+ibdhxeRFtDcfZbVT7VrlWnGo/Q4lbGE+nDAPRro/pgitg==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-6.6.6.tgz", + "integrity": "sha512-vWMrh9kjbNimXuM2fjW7weKXqm4JqvIAoLmfmfuHfRMaJkXiK1RQeTERdE7FmYYunMKVkOz045pMEAFwnNh+vA==", "dependencies": { "bch-encrypt-lib": "^2.0.0", "orbit-db": "^0.26.1" @@ -31269,9 +31269,9 @@ } }, "ipfs-coord": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-6.6.4.tgz", - "integrity": "sha512-0rrfunCMvC9Oiw+MCCUZ5/J2VSY1Z3Wdq6qph2VN+ibdhxeRFtDcfZbVT7VrlWnGo/Q4lbGE+nDAPRro/pgitg==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-6.6.6.tgz", + "integrity": "sha512-vWMrh9kjbNimXuM2fjW7weKXqm4JqvIAoLmfmfuHfRMaJkXiK1RQeTERdE7FmYYunMKVkOz045pMEAFwnNh+vA==", "requires": { "bch-encrypt-lib": "^2.0.0", "orbit-db": "^0.26.1" diff --git a/package.json b/package.json index 37fbd75..70b7238 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "bcryptjs": "^2.4.3", "glob": "^7.1.6", "@chris.troutner/ipfs": "2.0.2", - "ipfs-coord": "^6.6.4", + "ipfs-coord": "^6.6.6", "jsonrpc-lite": "^2.2.0", "jsonwebtoken": "^8.5.1", "jwt-bch-lib": "^1.3.0",