{"id":13612609,"url":"https://github.com/bumi/lnme","last_synced_at":"2025-07-18T01:34:26.380Z","repository":{"id":40678073,"uuid":"164459019","full_name":"bumi/lnme","owner":"bumi","description":"Your friendly Bitcoin Lightning ⚡ payment page ⚡","archived":false,"fork":false,"pushed_at":"2024-05-31T17:54:03.000Z","size":11396,"stargazers_count":173,"open_issues_count":20,"forks_count":30,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-20T12:06:57.014Z","etag":null,"topics":["bitcoin","lightning","lightning-network","lightning-payments","lnd","payment","payments","widget"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bumi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":"https://ln.michaelbumann.com?lightning=lnurlp:ln.michaelbumann.com/lnurlp/github"}},"created_at":"2019-01-07T16:20:40.000Z","updated_at":"2025-05-17T15:24:33.000Z","dependencies_parsed_at":"2023-02-15T15:46:28.509Z","dependency_job_id":"965298cd-8b55-4a5e-9c26-f65e38beab81","html_url":"https://github.com/bumi/lnme","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/bumi/lnme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumi%2Flnme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumi%2Flnme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumi%2Flnme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumi%2Flnme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bumi","download_url":"https://codeload.github.com/bumi/lnme/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumi%2Flnme/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265688331,"owners_count":23811416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","lightning","lightning-network","lightning-payments","lnd","payment","payments","widget"],"created_at":"2024-08-01T20:00:32.363Z","updated_at":"2025-07-18T01:34:26.355Z","avatar_url":"https://github.com/bumi.png","language":"JavaScript","funding_links":["https://ln.michaelbumann.com?lightning=lnurlp:ln.michaelbumann.com/lnurlp/github"],"categories":["Self-Hosted Bitcoin Payment Processors","Bitcoin \u0026 Lightning Network","JavaScript"],"sub_categories":["Sovereign Payment Kernel"],"readme":"\u003cp align=\"center\"\u003e\u003cbr/\u003e\u003cbr/\u003e\u003cimg src=\"https://raw.githubusercontent.com/bumi/lnme/master/icon/lnme-icon-rrect.svg\" height=\"128\" width=\"128\" /\u003e\u003cbr/\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eLnMe - your friendly payment page\u003c/h1\u003e\u003cbr/\u003e\u003cbr/\u003e\n\nLnMe is a personal Bitcoin Lightning payment page/widget and self-hosted [Lightning Address](https://lightningaddress.com/) server.\n\n![demo](./lnme-demo.gif)\n\n**See it in action: [ln.michaelbumann.com](http://ln.michaelbumann.com/) - my lightning address: bumi@ln.michaelbumann.com**\n\nLnMe focusses on simplicity and ease of deployment. It connects to an existing lightning node (currently LND is supported).\n\nLnMe is one [simple executable](https://github.com/bumi/lnme/releases) file that can be deployed anywhere with no dependencies. (on your own node or for example with [one click on Heroku](#heroku))\n\n## Features\n\n- [x] Embeded payment page - customizable (see demo)\n- [x] [Lightning Address](https://lightningaddress.com/) support\n- [x] WebLN integration - if [WebLN](https://webln.dev/) is not available a QRcode and the invoice will be shown\n- [x] [JavaScript widget](#javascript-widget-integration) for existing websites\n- [x] [Invoice API](https://github.com/bumi/lnme/wiki/API) - simple REST API to create LN invoices from existing JS code\n- [x] [LNURL-pay](https://github.com/fiatjaf/lnurl-rfc/blob/luds/06.md) support\n- [x] [LNURL-pay comment](https://github.com/fiatjaf/lnurl-rfc/blob/luds/12.md) support\n\n## Installation\n\nLnMe connects to your [LND node](https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md), so a running LND node is required.\nLnMe can easily run next to LND on the same system or any other hosting provider.\n\nThere are no other dependencies. Simply download the binary and run it!\n\n1. Download the latest [release](https://github.com/bumi/lnme/releases)\n2. Run `lnme`\n3. Done.\n\n### Build from source\n\n1. `$ git clone https://github.com/bumi/lnme.git \u0026\u0026 cd lnme`\n2. `$ go install`\n3. `$ go build`\n4. `$ ./lnme`\n\n### Running in Docker\n\nLnMe is now available in docker too.\nYou can start LnMe like this: `docker run -it --rm ghcr.io/bumi/lnme:master`\nA list of existing tags is available [here](https://github.com/bumi/lnme/pkgs/container/lnme).\n\n### Configuration\n\n#### LND configuration\n\nTo connect to the lnd node the cert, macaroon and address of the lnd node has to be configured. LnMe uses the LND defaults.\n\n- `lnd-address`: Host and port of the LND gRPC service. default: localhost:10009\n- `lnd-cert-path`: Path to the LND TLS cert file. default: ~/.lnd/tls.cert\n- `lnd-macaroon-path`: Path to the LND macaroon file. default: ~/.lnd/data/chain/bitcoin/mainnet/invoice.macaroon (invoice.macaroon is recommended)\n\nInstead of the path to the macaroon and cert files you can also provide the hex strings:\n\n- `lnd-cert`: LND TLS cert as HEX string.\n- `lnd-macaroon`: LND macaroon HEX string. (invoice.macaroon is recommended)\n\n#### Other configuration\n\n- `static-path`: Path to a folder that you want to serve with LnMe (e.g. /home/bitcoin/lnme/website). Use this if you want to customize your ⚡website. default: disabled\n- `lnurlp-comment-allowed`: Allowed length of LNURL-pay comments, maximum around [~2000 characters](https://stackoverflow.com/a/417184). (default: 210)\n- `disable-website`: Disable the default LnMe website. Disable the website if you only want to embed the LnMe widget on your existing website.\n- `disable-cors`: Disable CORS headers. (default: false)\n- `disable-ln-address`: Disable [Lightning Address](https://lightningaddress.com/) handling.\n- `port`: Port to listen on. (default: 1323)\n- `listen`: IP and port to listen to. Supersedes `port`. (default: :1323).\n- `request-limit`: Limit the allowed requests per second. (default: 5)\n\nDepending on your deployment needs LnMe can be configured using the following options:\n\n1. Command line flags\n2. Environment variables\n3. Config TOML file\n\n#### Examples:\n\n##### Command line flags:\n\n    $ lnme --help\n    $ lnme --lnd-address=lndhost.com:10009 --port=4711\n    $ lnme --disable-website\n\n##### TOML config file\n\nSee [config.toml.example](./toml.config.example) for an example file.\n\n    $ lnme --config=/path/to/config.toml\n\n##### Environment variables\n\nAll environment variables must be prefixed by `LNME_` use `_` instead of `-`\n\n    $ LNME_LND_ADDRESS=127.0.0.1:10005 lnme\n\n### LND Permissions\n\nLnMe needs the following LND permissions:\n\n- Read/Write permission for `invoices`\n- Write permission for `address` (if you want to use the onchain option)\n\nUse the LND [macaroon bakery](http://macaroon-bakery.freedomnode.com/) to create a new macaroon for LnMe.\n\nTo get the HEX versions of the files use `xxd -plain` e.g. `xxd -plain invoice.macaroon | tr -d '\\n'`\n\n### TOR\n\nLnMe can connect to your lightning node through [Tor](https://www.torproject.org/). You need to have Tor installed on your system and then simply provide your LND `.onion` address (don't forget to specify the port).\n\n## Deployment\n\nIt is the easiest to run LnMe on the same node as LND. But you can run it anywhere as long as your LND node is accessible. Simply run the binary and make sure the PORT is accessible.\n\nIf you run LNMe on a different server you will need your LND address, the LND TLS certificate (HEX) and the macaroon (HEX). (see above)\n\nWhen getting the HEX of the LND files use `xxd -plain YOUR_FILE.cert | tr -d '\\n'`. For example for the TLS certificate, use `xxd -plain tls.cert | tr -d '\\n'`.\n\nThe TLS cert is located in the lnd directory:\n\n- ~/umbrel/lnd/tls.cert on Umbrel\n- /mnt/hdd/lnd/tls.cert on Raspiblitz\n- /embassy-data/package-data/volumes/lnd/data/main/tls.cert on Start9 Embassy\n- Can also be located in ~/.lnd\n\nYou should find the macaroon files in the LND data dir (e.g. ~.lnd/data/chain/bitcoin/mainnet/) or see \"LND Permissions\" how to create a new one.\n\n### Heroku\n\nOne click deployment with Heroku:\n\n[![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/bumi/lnme)\n\nHere is a [Video Demo of the Heroku deployment](https://www.youtube.com/watch?v=hSFXhnLp_Rc)\n\nIn order to run Tor on Heroku, the Heroku deployment includes a non-official buildpack: https://github.com/iamashks/heroku-buildpack-tor-proxy\nThis buildpack can be disabled and removed if not needed or desired, through the Settings tab on the Heroku dashboard, or by editing app.json and removing the buildpack.\n\nLastly, using the Heroku deployment, you can link the app to your own domain by following the directions here: https://help.heroku.com/MTG1BIA7/how-do-i-connect-a-domain-to-my-heroku-app\n\n\n### Fly.io\n\n#### 0. Clone the repo\n\n    $ git clone https://github.com/bumi/lnme.git\n    $ cd lnme\n\n#### 1. Create a new app\n\n    $ flyctl launch --generate-name  // or set a custom app name: flyctl launch --name lnme-test-1\n\nYou will be asked a few things:\n\n* Copy the configuration to the new app\n* You do NOT need to create a Postgresql Database\n* Do NOT deploy it directly, we first need to set some configs\n\n#### 2. Set the configuration using environment variables:\n\nThe LND config variablse are required. Others are optional:\n\n    $ flyctl secrets set LNME_LND_ADDRESS=\"xxx.xxx.xxx.xxx:10009\" LNME_LND_CERT=xxx LNME_LND_MACAROON=xxx\n    $ flyctl secrets set DISABLE_WEBSITE=1 // etc.\n\n#### 3. Launch the app:\n\n    $ flyctl deploy\n\n#### 4.Configure your domain\n\nTo configure a custom domain check the [fly.io guides](https://fly.io/docs/app-guides/custom-domains-with-fly/)\n\n\n### Custom deployment notes\n\nTo run LnMe as systemd service have a look at the [systemd service example config](https://github.com/bumi/lnme/blob/master/examples/lnme.service)\n\nI am running LnMe behind a reverse proxy using [caddy](https://caddyserver.com/) which comes with [fully-managed HTTPS](https://caddyserver.com/docs/quick-starts/https) via [letsencrypt](https://letsencrypt.org/).\n\nExample Caddyfile:\n\n```\nlnme.michaelbumann.com {\n  reverse_proxy 127.0.0.1:1323\n}\n```\n\n`$ caddy --config /etc/caddy/Caddyfile`\n\n## Feature Usage\n\n### Lightning Address\n\nThe Lightning Address is an Internet Identifier that allows anyone to send you Bitcoin over the Lightning Network.\nLightning Address builds on [LNURL-pay](https://github.com/fiatjaf/lnurl-rfc/blob/luds/06.md) LnMe handles the necessary requests for you.\n\nFor more information check out the website: [lightningaddress.com](https://lightningaddress.com/)\n\nYour Lightning Address: `{anything}@{your domain}`\n\n### LNURL\n\nif you got the Lightning Address enabled you also get a LNURL-pay URL:\n\nhttps://`{your domain}/lnurlp/{anything}`\n\nIf you need an bech32 encoded version you can use this online tool: [https://lnurl.fiatjaf.com/codec/](https://lnurl.fiatjaf.com/codec/)\n\n### Customize your ⚡ website\n\nLnMe comes with a default website but you can easily configure and build your own using the the LnMe JavaScript widget or JSON API.\n\nTake a look at the [embedded default website](https://github.com/bumi/lnme/blob/master/files/root/index.html) for an example and use the `--static-path` option to configure LnMe to serve your static file.\n\n1. Create a new folder (e.g. /home/satoshi/my-ln-page)\n2. Create your index.html\n3. Run lnme: `lnme --static-path=/home/satoshi/my-ln-page\n\n### Usage with 21 Payment Widgets\n\n[widgets.twentyuno.net](https://widgets.twentyuno.net/) is a beautiful embeddable payment widget for any existing website.\nYou can use your LnMe instance with the widget by using your [LnMe LNURL](https://github.com/bumi/lnme#lnurl) with the widget.\n\nUse your bech32 encoded [LNURL](https://github.com/bumi/lnme#lnurl) as `Receiver` in the [widget configuration](https://widgets.twentyuno.net/get-started)\n\n### JavaScript Widget integration\n\nYou can integrate the LnMe widget in your existing website.\n\n#### 1. Add the LnMe JavaScript files\n\n```html\n\u003cscript\n  data-lnme-base-url=\"https://your-lnme-host.com:1323\"\n  src=\"https://your-lnme-host.com/lnme/lnme.js\"\n\u003e\u003c/script\u003e\n```\n\n#### 2. Usage\n\nTo request a lightning payment simply call `request()` on a `new LnMe({value: value, memo: memo})`:\n\n```js\nvar lnme = new LnMe({ value: 1000, memo: \"high5\" });\nlnme.request();\n```\n\nUse it from a plain HTML link:\n\n```html\n\u003ca\n  href=\"#\"\n  onclick=\"javascript:new LnMe({ value: 1000, memo: 'high5' }).request();return false;\"\n  \u003eTip me\u003c/a\n\u003e\n```\n\n##### More advanced JS API:\n\n```js\nlet lnme = new LnMe({ value: 1000, memo: \"high5\" });\n\n// get a new invoice and watch for a payment\n// promise resolves if the invoice is settled\nlnme.requestPayment().then((invoice) =\u003e {\n  alert(\"YAY, thanks!\");\n});\n\n// create a new invoice\nlnme.addInvoice().then((invoice) =\u003e {\n  console.log(invoice.PaymentRequest);\n});\n\n// periodically watch if an invoice is settled\nlnme.watchPayment().then((invoice) =\u003e {\n  alert(\"YAY, thanks!\");\n});\n```\n\n## Motivation\n\nI wanted a simple way for people to send Lightning payments using my own lightning node.\nBTCPay Server is too big and hard to run for that and I do not need most of its features.\n\n## Development\n\nUse `go run` to run the service locally:\n\n    $ go run lnme.go --address=127.0.0.1:10009 --cert=/home/bitcoin/lightning/tls.cert --macaroon=/home/bitcoin/lightning/invoice.macaroon\n\n## Build\n\n    $ go build\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/bumi/lnme\n\n## Support\n\nIf you like this software and it is valuable for you, you can send sats to ⚡️bumi@getalby.com\n\n## License\n\nAvailable as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbumi%2Flnme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbumi%2Flnme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbumi%2Flnme/lists"}