# squeaknode [![GitHub release](https://img.shields.io/github/release/squeaknode/squeaknode.svg)](https://github.com/squeaknode/squeaknode/releases) [![GitHub CI workflow](https://github.com/squeaknode/squeaknode/actions/workflows/ci.yml/badge.svg)](https://github.com/squeaknode/squeaknode/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/squeaknode/squeaknode/branch/master/graph/badge.svg?token=VV8WW3VR3Y)](https://codecov.io/gh/squeaknode/squeaknode) [![Join the chat at https://gitter.im/squeaknode/squeaknode](https://badges.gitter.im/squeaknode/squeaknode.svg)](https://gitter.im/squeaknode/squeaknode?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A peer-to-peer status feed with posts unlocked by Lightning. ![Screen capture](docs/images/screen-capture.gif) Squeaknode allows you to create, view, buy, and sell squeaks. A squeak is an immutable, signed structure that: * contains up to 280 utf-8 characters of text, encrypted (can only be decrypted with access to the decryption key obtained by lightning payment) * contains the height and block hash of the latest bitcoin block * contains the public key of the author * contains the public key of the recipient, if the text is end-to-end encrypted * contains the hash of another squeak, if the squeak is a reply * can be used to derive a unique hash The protocol is defined [here](https://github.com/yzernik/squeak/blob/master/docs/PROTOCOL.md). ## Installation ### Requirements * a Bitcoin node * an LND node * Python 3.6 or later #### Optional * a Tor SOCKS5 proxy (you can open Tor Browser and run it in the background) ### Step 1. Create the configuration > Create a **config.ini** file and fill in the relevant sections to connect to your Bitcoin node and LND node: ``` [node] network=mainnet [lightning] backend=lnd lnd_tls_cert_path=~/.lnd/tls.cert lnd_macaroon_path=~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon [bitcoin] rpc_host=localhost rpc_port=8332 rpc_user=devuser rpc_pass=devpass [tor] proxy_ip=localhost proxy_port=9150 [webadmin] enabled=true username=devuser password=devpass ``` If you want to use [c-lightning](https://github.com/ElementsProject/lightning) as the Lightning Network node backend instead of [LND](https://github.com/lightningnetwork/lnd), replace the `lightning` section with the following: ``` [lightning] backend=clightning clightning_rpc_file=~/.lightning/lightning-rpc ``` Add any other [configs](docs/configuration.md) that you need. ### Step 2. Install squeaknode: ``` pip install squeaknode ``` Or install from source ``` python3 -m venv venv source venv/bin/activate pip install . ``` ### Step 3. Start squeaknode: ``` squeaknode --config config.ini ``` Go to http://localhost:12994/ and use the username/password in **config.ini** to log in. ## Test ### Unit tests: #### Requirements * tox ``` make test ``` ### Integration tests: #### Requirements * docker-compose * jq ``` make itest ``` ## Release + Commit Verification All releases and all maintainer commits as of January 5, 2022 are signed by key `D761F27D9B20BA52` (yzernik@gmail.com). The key can be found [in this repo](https://github.com/squeaknode/squeaknode/blob/master/PGP.txt) and [on the Squeaknode website](https://squeaknode.org/pgp.txt). ## Telegram [Join our Telegram group!](https://t.me/squeaknode) ## License Distributed under the MIT License. See [LICENSE file](LICENSE).