neveko/README.md

116 lines
5.5 KiB
Markdown
Raw Normal View History

2023-06-03 14:17:58 +00:00
# NEVEKO
2023-04-30 15:55:41 +00:00
2023-06-03 14:17:58 +00:00
NEVidebla-EKOnomia (invisible economy)
2023-04-30 15:55:41 +00:00
2023-06-03 14:17:58 +00:00
[![cargo-build](https://github.com/creating2morrow/neveko/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/creating2morrow/neveko/actions/workflows/rust.yml)
[![cargo-audit](https://github.com/creating2morrow/neveko/actions/workflows/audit.yml/badge.svg?branch=main)](https://github.com/creating2morrow/neveko/actions/workflows/audit.yml)
2023-05-06 05:52:42 +00:00
2023-06-11 22:55:51 +00:00
![home](./assets/home.png)
2023-06-05 07:49:27 +00:00
### gpg and i2p made simple for E2EE marketplace, messaging and more
2023-04-30 15:55:41 +00:00
## About
* send messages over the invisible internet
* vanity base32 addresses (advanced)
* automated mandatory gpg key encryption
2023-06-03 14:17:58 +00:00
* self-hosted i2p marketplace
* xmr multisig / payment integration
2023-04-30 15:55:41 +00:00
## Dev
* stack - rust (egui, rocket), lmdb, i2p-zero, monero(rpc, daemon), gpg
* install dependencies
* ubuntu example: `sudo apt update -y && sudo apt upgrade -y`
* `sudo apt install -y libssl-dev build-essential libgpgme-dev`
2023-06-03 14:17:58 +00:00
* `git clone https://github.com/creating2morrow/neveko`
* `cd neveko && ./scripts/build_all_and_run.sh "-- -h"`
* Example to start neveko with remote stagenet node / i2p proxy remote for development:
* `./scripts/build_all_and_run.sh "-- --monero-location monero-x86_64-linux-gnu-v0.18.3.1 --monero-rpc-host http://127.0.0.1:38083 --monero-rpc-daemon http://xmr3kaacphwkk4z2gp35bdl47lrrnzimmyqj4oliauqrjzqecofa.b32.i2p:38081 --monero-rpc-username user --monero-rpc-cred pass --remote-node --i2p-advanced --i2p-tunnels-json /home/user/neveko/i2p-manual/config --i2p-proxy-host http://x.x.x.x:xxxx --i2p-socks-proxy-host http://x.x.x.x:xxxx"`
2023-06-20 12:53:53 +00:00
* the `--monero-location` flag is needed even when using a remote node because
neveko has its own monero-wallet-rpc instance
2023-06-24 09:17:32 +00:00
* remote nodes are forced over the `--i2p-proxy-host`
* Recommended neveko-core startup with full node and i2p-zero locally running:
* ` ./scripts/build_all_and_run.sh "-- --monero-blockchain-dir=/home/user/.bitmonero --monero-location monero-x86_64-linux-gnu-v0.18.3.1 --i2p-zero-dir /home/user/i2p-zero-linux.v1.21/ --monero-blockchain-dir /home/user/.bitmonero"`
2023-06-24 09:17:32 +00:00
* monerod doesn't need to be running because neveko will start it and monero-wallet-rpc
* gui will automatically detect monerod, rpc and i2p-zero if neveko core is started first
* Neveko doesn't write logs to file. Use the command below to write to a log file:
```bash
{NEVEKO_START_CMDS} > neveko.log 2>&1
```
* just remember to put cli password in the original window, not the log file window
* https://stackoverflow.com/questions/6674327/redirect-all-output-to-file-in-bash
2023-04-30 15:55:41 +00:00
* gui built with rust [egui](https://docs.rs/egui/latest/egui/)
2023-05-09 21:28:07 +00:00
## Installation Mananger
* additional required software can be downloaded from the gui home or `Binaries` links below
2023-06-03 14:17:58 +00:00
* hashes are in core [lib.rs](./neveko-core/src/lib.rs)
2023-05-09 21:28:07 +00:00
* download i2p-zero, put the path in the connection manager or cli `--i2p-zero-dir` flag
* download monero, update connection manager or cli
* `--monero-blockchain-dir`, where to put lmdb for monero (e.g. path/to/ssd)
* `--monero-location`, path to monero download
2023-05-07 08:10:04 +00:00
## Contributing and Releasing
```bash
| branch | |tag and release|
dev -----------------|-------------------------------------------->
v0.1.0 -----------tag v0.1.0 (delete branch)
v0.2.0 |-------------------------------------------->
main -------------------------------------------------------------->
```
* code on dev branch
2023-05-09 21:28:07 +00:00
* run `./scripts/fmtall.sh` before committing
2023-05-07 08:10:04 +00:00
* pull request to dev branch
2023-05-09 21:28:07 +00:00
* todo => `TODO(name): detailed work`
* docs on all `pub fn` and `pub struct`
2023-05-07 08:10:04 +00:00
* merge dev to vX.X.X
* merge vX.X.X to main
* tag release v.X.X.X every friday (if stable changes)
* release binaries from the `cargo-build-release` workflow with notes
* create next v.X.X+1.X branch and delete old release branch
* release bug fixes as appropriate to v.X.X.X+1 branch when ready
## Workflows
|name | branch | purpose |
|-- |-- |-- |
|cargo-build | main,dev | ensure code compilation and build success |
|cargo-audit | main,dev | run security audit against RustSec database |
|cargo-build-release | `v0.*` | publish production ready binaries |
2023-04-30 15:55:41 +00:00
## API
* remote/programmatic access
* secured by wallet signing
* jwt and jwp
* see [curl.md](./docs/curl.md)
## Binaries
2023-06-03 14:17:58 +00:00
* neveko-auth - `internal` auth server
* neveko-contact - `internal` add contacts server
* neveko-gui - primary user interface
* neveko-market - `internal` marketplace admin server
* neveko-message - `internal` message tx/read etc. server
* neveko - `external` primary server for contact share, payment, market, message rx etc.
2023-04-30 15:55:41 +00:00
* [monerod](https://www.getmonero.org/downloads/#cli) - (not included) monero-wallet-rpc needs this
* can be overriden with remote node
* use the `--remote-node` flag
* [monero-wallet-rpc](https://www.getmonero.org/downloads/#cli) - (not included) interface for xmr wallet ops
* [monero-wallet-cli](https://www.getmonero.org/downloads/#cli) - enable experimental multisig
2023-06-03 14:17:58 +00:00
* [i2p-zero](https://github.com/creating2morrow/i2p-zero/releases/tag/v1.21-neveko) - (not included) tunnel creation and http proxy
2023-04-30 15:55:41 +00:00
2023-06-03 14:17:58 +00:00
most of the complex logic stays in neveko-core, exported from [lib.rs](./neveko-core/src/lib.rs)
2023-05-09 21:28:07 +00:00
2023-04-30 15:55:41 +00:00
## Manual
[the manual](./docs/man.md)
2023-06-11 22:55:51 +00:00
## Donations
This is just a hobby project but if anything here is useful donations are much appreciated!
No need to send xmr, donating time is fine. Just test code if you can and open issues. Thanks!