Pipenv/fix install loguru (#732)
* update pipfile * pipenv workflow * pipfile jinja * Pipfile installs dev files * python3.8 tests only * version tag yaml * all tests * pipenv with pip * only 3.7 * activate env * test-pipenv * pipenv importlib_metadata * importlib-metadata * 3.8 * 3.7 only oops * merge install guides * install guide in README
This commit is contained in:
parent
357860d849
commit
1f13bdeb2f
51
.github/workflows/tests.yml
vendored
51
.github/workflows/tests.yml
vendored
|
@ -44,7 +44,7 @@ jobs:
|
||||||
--health-retries 5
|
--health-retries 5
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: [3.7, 3.8]
|
python-version: [3.7]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
@ -68,34 +68,21 @@ jobs:
|
||||||
uses: codecov/codecov-action@v3
|
uses: codecov/codecov-action@v3
|
||||||
with:
|
with:
|
||||||
file: ./coverage.xml
|
file: ./coverage.xml
|
||||||
# build:
|
pipenv:
|
||||||
# runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# strategy:
|
strategy:
|
||||||
# matrix:
|
matrix:
|
||||||
# python-version: [3.7, 3.8]
|
python-version: [3.7]
|
||||||
# steps:
|
steps:
|
||||||
# - uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
# - name: Set up Python ${{ matrix.python-version }}
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
# uses: actions/setup-python@v1
|
uses: actions/setup-python@v2
|
||||||
# with:
|
with:
|
||||||
# python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
# - name: Install dependencies
|
- name: Install dependencies
|
||||||
# run: |
|
run: |
|
||||||
# python -m pip install --upgrade pip
|
pip install pipenv
|
||||||
# pip install -r requirements.txt
|
pipenv install --dev
|
||||||
# - name: Test with pytest
|
pipenv install importlib-metadata
|
||||||
# env:
|
- name: Run tests
|
||||||
# LNBITS_BACKEND_WALLET_CLASS: LNPayWallet
|
run: make test-pipenv
|
||||||
# LNBITS_FORCE_HTTPS: 0
|
|
||||||
# LNPAY_API_ENDPOINT: https://api.lnpay.co/v1/
|
|
||||||
# LNPAY_API_KEY: sak_gG5pSFZhFgOLHm26a8hcWvXKt98yd
|
|
||||||
# LNPAY_ADMIN_KEY: waka_HqWfOoNE0TPqmQHSYErbF4n9
|
|
||||||
# LNPAY_INVOICE_KEY: waki_ZqFEbhrTyopuPlOZButZUw
|
|
||||||
# LNPAY_READ_KEY: wakr_6IyTaNrvSeu3jbojSWt4ou6h
|
|
||||||
# run: |
|
|
||||||
# pip install pytest pytest-cov
|
|
||||||
# pytest --cov=lnbits --cov-report=xml
|
|
||||||
# - name: Upload coverage to Codecov
|
|
||||||
# uses: codecov/codecov-action@v1
|
|
||||||
# with:
|
|
||||||
# file: ./coverage.xml
|
|
8
Makefile
8
Makefile
|
@ -37,5 +37,13 @@ test:
|
||||||
PYTHONUNBUFFERED=1 \
|
PYTHONUNBUFFERED=1 \
|
||||||
./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml
|
./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml
|
||||||
|
|
||||||
|
test-pipenv:
|
||||||
|
rm -rf ./tests/data
|
||||||
|
mkdir -p ./tests/data
|
||||||
|
FAKE_WALLET_SECRET="ToTheMoon1" \
|
||||||
|
LNBITS_DATA_FOLDER="./tests/data" \
|
||||||
|
PYTHONUNBUFFERED=1 \
|
||||||
|
pipenv run pytest --durations=1 -s --cov=lnbits --cov-report=xml
|
||||||
|
|
||||||
bak:
|
bak:
|
||||||
# LNBITS_DATABASE_URL=postgres://postgres:postgres@0.0.0.0:5432/postgres
|
# LNBITS_DATABASE_URL=postgres://postgres:postgres@0.0.0.0:5432/postgres
|
||||||
|
|
7
Pipfile
7
Pipfile
|
@ -28,7 +28,7 @@ asyncio = "*"
|
||||||
fastapi = "*"
|
fastapi = "*"
|
||||||
uvicorn = {extras = ["standard"], version = "*"}
|
uvicorn = {extras = ["standard"], version = "*"}
|
||||||
sse-starlette = "*"
|
sse-starlette = "*"
|
||||||
jinja2 = "3.0.1"
|
jinja2 = "==3.0.1"
|
||||||
pyngrok = "*"
|
pyngrok = "*"
|
||||||
secp256k1 = "*"
|
secp256k1 = "*"
|
||||||
pycryptodomex = "*"
|
pycryptodomex = "*"
|
||||||
|
@ -37,4 +37,7 @@ pycryptodomex = "*"
|
||||||
black = "==20.8b1"
|
black = "==20.8b1"
|
||||||
pytest = "*"
|
pytest = "*"
|
||||||
pytest-cov = "*"
|
pytest-cov = "*"
|
||||||
mypy = "latest"
|
mypy = "*"
|
||||||
|
pytest-asyncio = "*"
|
||||||
|
requests = "*"
|
||||||
|
mock = "*"
|
||||||
|
|
1121
Pipfile.lock
generated
1121
Pipfile.lock
generated
File diff suppressed because it is too large
Load Diff
|
@ -13,7 +13,7 @@ LNbits
|
||||||
|
|
||||||
(LNbits is beta, for responsible disclosure of any concerns please contact lnbits@pm.me)
|
(LNbits is beta, for responsible disclosure of any concerns please contact lnbits@pm.me)
|
||||||
|
|
||||||
Use [lnbits.com](https://lnbits.com), or run your own LNbits server!
|
Use [legend.lnbits.com](https://legend.lnbits.com), or run your own LNbits server!
|
||||||
|
|
||||||
LNbits is a very simple Python server that sits on top of any funding source, and can be used as:
|
LNbits is a very simple Python server that sits on top of any funding source, and can be used as:
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ LNbits is inspired by all the great work of [opennode.com](https://www.opennode.
|
||||||
|
|
||||||
## Running LNbits
|
## Running LNbits
|
||||||
|
|
||||||
See the [install guide](docs/devs/installation.md) for details on installation and setup.
|
See the [install guide](docs/guide/installation.md) for details on installation and setup.
|
||||||
|
|
||||||
## LNbits as an account system
|
## LNbits as an account system
|
||||||
|
|
||||||
|
|
|
@ -7,46 +7,10 @@ nav_order: 1
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
LNbits uses [Pipenv][pipenv] to manage Python packages.
|
This guide has been moved to the [installation guide](../guide/installation.md).
|
||||||
|
To install the developer packages, use `pipenv install --dev`.
|
||||||
|
|
||||||
```sh
|
## Notes:
|
||||||
git clone https://github.com/lnbits/lnbits-legend.git
|
|
||||||
cd lnbits-legend/
|
|
||||||
|
|
||||||
sudo apt-get install pipenv
|
* We recommend using <a href="https://caddyserver.com/docs/install#debian-ubuntu-raspbian">Caddy</a> for a reverse-proxy if you want to serve your install through a domain, alternatively you can use [ngrok](https://ngrok.com/).
|
||||||
pipenv shell
|
|
||||||
# pipenv --python 3.9 shell (if you wish to use a version of Python higher than 3.7)
|
|
||||||
pipenv install --dev
|
|
||||||
# pipenv --python 3.9 install --dev (if you wish to use a version of Python higher than 3.7)
|
|
||||||
|
|
||||||
# If any of the modules fails to install, try checking and upgrading your setupTool module
|
|
||||||
# pip install -U setuptools
|
|
||||||
|
|
||||||
# install libffi/libpq in case "pipenv install" fails
|
|
||||||
# sudo apt-get install -y libffi-dev libpq-dev
|
|
||||||
```
|
|
||||||
## Running the server
|
|
||||||
|
|
||||||
Create the data folder and edit the .env file:
|
|
||||||
|
|
||||||
mkdir data
|
|
||||||
cp .env.example .env
|
|
||||||
sudo nano .env
|
|
||||||
|
|
||||||
To then run the server for development purposes (includes hot-reload), use:
|
|
||||||
|
|
||||||
pipenv run python -m uvicorn lnbits.__main__:app --host 0.0.0.0 --reload
|
|
||||||
|
|
||||||
For production, use:
|
|
||||||
|
|
||||||
pipenv run python -m uvicorn lnbits.__main__:app --host 0.0.0.0
|
|
||||||
|
|
||||||
You might also need to install additional packages, depending on the [backend wallet](../guide/wallets.md) you use.
|
|
||||||
E.g. when you want to use LND you have to `pipenv run pip install lndgrpc` and `pipenv run pip install purerpc`.
|
|
||||||
|
|
||||||
Take a look at [Polar][polar] for an excellent way of spinning up a Lightning Network dev environment.
|
|
||||||
|
|
||||||
**Notes**:
|
|
||||||
|
|
||||||
* We reccomend using <a href="https://caddyserver.com/docs/install#debian-ubuntu-raspbian">Caddy</a> for a reverse-proxy if you want to serve your install through a domain, alternatively you can use [ngrok](https://ngrok.com/).
|
|
||||||
* <a href="https://linuxize.com/post/how-to-use-linux-screen/#starting-linux-screen">Screen</a> works well if you want LNbits to continue running when you close your terminal session.
|
* <a href="https://linuxize.com/post/how-to-use-linux-screen/#starting-linux-screen">Screen</a> works well if you want LNbits to continue running when you close your terminal session.
|
||||||
|
|
|
@ -4,8 +4,88 @@ title: Basic installation
|
||||||
nav_order: 2
|
nav_order: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Basic installation
|
# Basic installation
|
||||||
Install Postgres and setup a database for LNbits:
|
|
||||||
|
You can choose between two python package managers, `venv` and `pipenv`. Both are fine but if you don't know what you're doing, just go for the first option.
|
||||||
|
|
||||||
|
By default, LNbits will use SQLite as its database. You can also use PostgreSQL which is recommended for applications with a high load (see guide below).
|
||||||
|
|
||||||
|
## Option 1: venv
|
||||||
|
|
||||||
|
Download this repo and install the dependencies:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/lnbits/lnbits-legend.git
|
||||||
|
cd lnbits-legend/
|
||||||
|
# ensure you have virtualenv installed, on debian/ubuntu 'apt install python3-venv'
|
||||||
|
python3 -m venv venv
|
||||||
|
# If you have problems here, try `sudo apt install -y pkg-config libpq-dev`
|
||||||
|
./venv/bin/pip install -r requirements.txt
|
||||||
|
# create the data folder and the .env file
|
||||||
|
mkdir data && cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Running the server
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./venv/bin/uvicorn lnbits.__main__:app --port 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to host LNbits on the internet, run with the option `--host 0.0.0.0`.
|
||||||
|
|
||||||
|
|
||||||
|
## Option 2: pipenv
|
||||||
|
|
||||||
|
You can also use Pipenv to manage your python packages.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/lnbits/lnbits-legend.git
|
||||||
|
cd lnbits-legend/
|
||||||
|
|
||||||
|
sudo apt update && sudo apt install -y pipenv
|
||||||
|
pipenv install --dev
|
||||||
|
# pipenv --python 3.9 install --dev (if you wish to use a version of Python higher than 3.7)
|
||||||
|
pipenv shell
|
||||||
|
# pipenv --python 3.9 shell (if you wish to use a version of Python higher than 3.7)
|
||||||
|
|
||||||
|
# If any of the modules fails to install, try checking and upgrading your setupTool module
|
||||||
|
# pip install -U setuptools wheel
|
||||||
|
|
||||||
|
# install libffi/libpq in case "pipenv install" fails
|
||||||
|
# sudo apt-get install -y libffi-dev libpq-dev
|
||||||
|
|
||||||
|
mkdir data && cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Running the server
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pipenv run python -m uvicorn lnbits.__main__:app --port 5000 --host 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Add the flag `--reload` for development (includes hot-reload).
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
Problems installing? These commands have helped us install LNbits.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install pkg-config libffi-dev libpq-dev setuptools
|
||||||
|
|
||||||
|
# if the secp256k1 build fails:
|
||||||
|
# if you used venv (option 1)
|
||||||
|
./venv/bin/pip install setuptools wheel
|
||||||
|
# if you used pipenv (option 2)
|
||||||
|
pipenv install setuptools wheel
|
||||||
|
# build essentials for debian/ubuntu
|
||||||
|
sudo apt install python3-dev gcc build-essential
|
||||||
|
```
|
||||||
|
|
||||||
|
### Optional: PostgreSQL database
|
||||||
|
|
||||||
|
If you want to use LNbits at scale, we recommend using PostgreSQL as the backend database. Install Postgres and setup a database for LNbits:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# on debian/ubuntu 'sudo apt-get -y install postgresql'
|
# on debian/ubuntu 'sudo apt-get -y install postgresql'
|
||||||
|
@ -22,34 +102,35 @@ createdb lnbits
|
||||||
exit
|
exit
|
||||||
```
|
```
|
||||||
|
|
||||||
Download this repo and install the dependencies:
|
You need to edit the `.env` file.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/lnbits/lnbits-legend.git
|
|
||||||
cd lnbits-legend/
|
|
||||||
# ensure you have virtualenv installed, on debian/ubuntu 'apt install python3-venv' should work
|
|
||||||
python3 -m venv venv
|
|
||||||
./venv/bin/pip install -r requirements.txt
|
|
||||||
cp .env.example .env
|
|
||||||
# add the database connection string to .env 'nano .env' LNBITS_DATABASE_URL=
|
# add the database connection string to .env 'nano .env' LNBITS_DATABASE_URL=
|
||||||
# postgres://<user>:<myPassword>@<host>/<lnbits> - alter line bellow with your user, password and db name
|
# postgres://<user>:<myPassword>@<host>/<lnbits> - alter line bellow with your user, password and db name
|
||||||
LNBITS_DATABASE_URL="postgres://postgres:postgres@localhost/lnbits"
|
LNBITS_DATABASE_URL="postgres://postgres:postgres@localhost/lnbits"
|
||||||
# save and exit
|
# save and exit
|
||||||
./venv/bin/uvicorn lnbits.__main__:app --port 5000
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Using LNbits
|
||||||
|
|
||||||
Now you can visit your LNbits at http://localhost:5000/.
|
Now you can visit your LNbits at http://localhost:5000/.
|
||||||
|
|
||||||
Now modify the `.env` file with any settings you prefer and add a proper [funding source](./wallets.md) by modifying the value of `LNBITS_BACKEND_WALLET_CLASS` and providing the extra information and credentials related to the chosen funding source.
|
Now modify the `.env` file with any settings you prefer and add a proper [funding source](./wallets.md) by modifying the value of `LNBITS_BACKEND_WALLET_CLASS` and providing the extra information and credentials related to the chosen funding source.
|
||||||
|
|
||||||
Then you can restart it and it will be using the new settings.
|
Then you can restart it and it will be using the new settings.
|
||||||
|
|
||||||
You might also need to install additional packages or perform additional setup steps, depending on the chosen backend. See [the short guide](./wallets.md) on each different funding source.
|
You might also need to install additional packages or perform additional setup steps, depending on the chosen backend. See [the short guide](./wallets.md) on each different funding source.
|
||||||
|
|
||||||
## Important note
|
Take a look at [Polar](https://lightningpolar.com/) for an excellent way of spinning up a Lightning Network dev environment.
|
||||||
If you already have LNbits installed and running, on an SQLite database, we **HIGHLY** recommend you migrate to postgres!
|
|
||||||
|
|
||||||
There's a script included that can do the migration easy. You should have Postgres already installed and there should be a password for the user, check the guide above. Additionally, your lnbits instance should run once on postgres to implement the database schema before the migration works:
|
|
||||||
|
|
||||||
|
# Additional guides
|
||||||
|
|
||||||
|
### SQLite to PostgreSQL migration
|
||||||
|
If you already have LNbits installed and running, on an SQLite database, we **highly** recommend you migrate to postgres if you are planning to run LNbits on scale.
|
||||||
|
|
||||||
|
There's a script included that can do the migration easy. You should have Postgres already installed and there should be a password for the user (see Postgres install guide above). Additionally, your LNbits instance should run once on postgres to implement the database schema before the migration works:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# STOP LNbits
|
# STOP LNbits
|
||||||
|
@ -68,9 +149,6 @@ python3 conv.py
|
||||||
Hopefully, everything works and get migrated... Launch LNbits again and check if everything is working properly.
|
Hopefully, everything works and get migrated... Launch LNbits again and check if everything is working properly.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Additional guides
|
|
||||||
|
|
||||||
### LNbits as a systemd service
|
### LNbits as a systemd service
|
||||||
|
|
||||||
Systemd is great for taking care of your LNbits instance. It will start it on boot and restart it in case it crashes. If you want to run LNbits as a systemd service on your Debian/Ubuntu/Raspbian server, create a file at `/etc/systemd/system/lnbits.service` with the following content:
|
Systemd is great for taking care of your LNbits instance. It will start it on boot and restart it in case it crashes. If you want to run LNbits as a systemd service on your Debian/Ubuntu/Raspbian server, create a file at `/etc/systemd/system/lnbits.service` with the following content:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user