Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mably/lncli-web
Light-weight web client for the lnd daemon written in NodeJS / Angular.
https://github.com/mably/lncli-web
bitcoin cryptocurrency lightning lightning-network web-client
Last synced: 2 months ago
JSON representation
Light-weight web client for the lnd daemon written in NodeJS / Angular.
- Host: GitHub
- URL: https://github.com/mably/lncli-web
- Owner: mably
- License: agpl-3.0
- Created: 2017-02-04T15:13:33.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-18T03:56:40.000Z (almost 2 years ago)
- Last Synced: 2024-08-01T22:50:36.411Z (5 months ago)
- Topics: bitcoin, cryptocurrency, lightning, lightning-network, web-client
- Language: JavaScript
- Homepage: https://github.com/lightningnetwork/lnd
- Size: 2.05 MB
- Stars: 184
- Watchers: 12
- Forks: 58
- Open Issues: 42
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-lightning-network - lncli-web - Light-weight web client for the lnd daemon written in NodeJS / Angular (Applications / Web Interfaces)
- awesome-lightning-network - lncli-web - Light-weight web client for the lnd daemon written in NodeJS / Angular (Applications / Web Interfaces)
README
# Lnd Web Client
## Installation
### Requirements
* [Git](https://git-scm.com/)
* [NodeJS 11.2+ / npm](https://nodejs.org)### Procedure
Fetch sources from the Lnd Web Client git repository:
```
git clone https://github.com/mably/lncli-web.git
```
Move into the newly created directory:```
cd lncli-web
```Fetch the dependencies and build the application by running:
```
npm install
```If not started automatically, run the following command to build the application:
```
"./node_modules/.bin/gulp" bundles
```## Execution
### Requirements
`lncli-web` is now fully compatible with macaroons and encrypted wallets.
But if you want to start `lnd` with wallet encryption and macaroons disabled, just add those two parameters to the command line:
```
lnd [...] --no-macaroons --noencryptwallet
```If you want to use macaroons, you need to copy the `lnd` `admin.macaroon` file to the `lncli-web` root directory (by default). The default path to the `admin.macaroon` file can be modified in the `/config/defaults.js` file.
### Generate lnd certificates compatible with NodeJS gRPC
Beware that lnd autogenerated certificates are not compatible with current NodeJS gRPC module implementation.
Lnd uses the `P-521` curve for its certificates but NodeJS gRPC module is only compatible with certificates using the `P-256` curve ([link](https://github.com/grpc/grpc/issues/6722#issuecomment-320348094)).
You need to generate your own lnd certificates using the following commands (thanks to Alex Akselrod for helping me on this):
```
# Enter the Lnd home directory, located by default at ~/.lnd on Linux or
# /Users/[username]/Library/Application Support/Lnd/ on Mac OSX
# $APPDATA/Local/Lnd on Windows. Also change '/CN=localhost/O=lnd' to '//CN=localhost\O=lnd' if you are using Git Bash.
cd ~/.lnd
openssl ecparam -genkey -name prime256v1 -out tls.key
openssl req -new -sha256 -key tls.key -out csr.csr -subj '/CN=localhost/O=lnd'
openssl req -x509 -sha256 -days 36500 -key tls.key -in csr.csr -out tls.cert
rm csr.csr
```### Copy generated certificate file into lncli-web directory
cp tls.cert [lncli-web_directory]/lnd.cert
### Start the Webserver
```
node server
```Available command-line arguments:
```
node server --helpUsage: server [options]
Options:
-h, --help output usage information
-V, --version output the version number
-s, --serverport [port] web server listening port (defaults to 8280)
-h, --serverhost [host] web server listening host (defaults to localhost)
-l, --lndhost [host:port] RPC lnd host (defaults to localhost:10009)
-t, --usetls [path] path to a directory containing key.pem and cert.pem files
-u, --user [login] basic authentication login
-p, --pwd [password] basic authentication password
-r, --limituser [login] basic authentication login for readonly account
-w, --limitpwd [password] basic authentication password for readonly account
-d, --disable-macaroon set this flag if you do not want to use macaroon files for auth
-f, --logfile [file path] path to file where to store the application logs
-e, --loglevel [level] level of logs to display (debug, info, warn, error)
-n, --lndlogfile path to lnd log file to send to browser
-k, --le-email [email] lets encrypt required contact email```
Open your browser at the following address: [http://localhost:8280](http://localhost:8280)
If you want to access `lncli-web` using a domain, add the `--serverhost` flag like so:
```
node server --serverhost
```
Open your browser at the following addres:
[http://yourdomain:8280](http://yourdomain:8280)Enjoy!
## Docker
#### Build the container
(from inside the lncli-web folder)
```
docker build . -t lncli-web
```#### Run in a Docker container
Mount your .lnd directory to the container:```
docker run -v /path/to/.lnd/:/config lncli-web
```The container will generate certs if necessary.
Any commandline option (see below) can be overridden by setting an appropriate environment variable.
Example: set `SET_LNDHOST` for `--lndhost`, or set `SET_LE_EMAIL` for `--le-email`
#### Running in a Docker container connecting to a remote LND instance
Copy the admin.macaroon, tls.key and tls.cert to your machine, for example in /tmp/config.Then, use `docker run` accordingly:
```
docker run -it -e SET_LNDHOST=[IP of lightning host]:10009 -v /tmp/config:/config --net=host lncli-web
```
Then just browse to http://127.0.0.1:8280. Note: this still requires you to re-generate your certificates as per above.## Screenshots
Check here for the mandatory screenshots: [http://imgur.com/a/LgWcs](http://imgur.com/a/LgWcs)
## Enabling https for remote access
You need to have a `key.pem` (private key) file and a `cert.pem` (certificate) file available in your path (check the --usetls command-line option).
On Linux you can create the above files using a self-signed certificate by executing the following command:
```
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 36500
```You might need to run this extra command to remove the password protection:
```
openssl rsa -in key.pem -out newkey.pem && mv newkey.pem key.pem
```And the you need to add the `--usetls` command-line option to point to the directory containing your two `pem` files.
Example command starting a password protected Lnd Web Client with readonly account enabled, running on port 443, and using https with corresponding `pem` files located in the app directory:
```
node server -s 443 --usetls . --user manager --pwd 33H966wG --limituser lnd --limitpwd rocks
```Hoping that helps.
## Network graph
The lightning network graph rendering functionality requires to have `graphviz` installed on the server.
### Contributing to the project
As of September 27th, all new code that is created or refactored should abide by the [Airbnb JS Style guide](https://github.com/airbnb/javascript). You can use automated tooling to maintain the style guide using [eslint](https://eslint.org). For simplicity, I have outlined a suggested workflow:
#### Suggested Workflow
1. write your code changes. For example, you are fixing a bug in `app/lightning.js`
2. once you are finished your patch, run `eslint app/lightning.js`. This will show you the errors in the source code
3. optionally, you can also run `eslint --fix app/lightning.js` to let eslint fix errors that it can fix without human intervention
4. fix the remainig style issues. You are only required to change and commit style for the code you changed (although the more, the merrier!)
5. commit your clean code