Giter VIP home page Giter VIP logo

pinodexmr_v1's Introduction

PiNode-XMR logo

We have moved!

We are now part of the Monero-Ecosystem group of repositories and as active as ever.

For our current users your device will function as normal. Your next PiNode-XMR update will change your external links to point to the new repository.
Once sufficient time has been given to update devices, code will be removed from this repository leaving just this title page. Est Jul 2020.

pinodexmr_v1's People

Contributors

shermand100 avatar xmranon avatar

Stargazers

 avatar masihbelajar avatar Angel Calderaro avatar Majocchi avatar untraceable avatar Tomaz Ursic avatar Fernando Chong avatar Yiu Chung WONG avatar JG avatar  avatar bashir barrage avatar  avatar Aaron Kaufman avatar Paweł Jacewicz avatar  avatar N3Cr0N avatar Tom Talbot avatar Will Pankiewicz avatar Jay Namsayin avatar  avatar  avatar 467 6jswzwz456w4wz4 avatar

Watchers

James Cloos avatar  avatar N3Cr0N avatar  avatar  avatar

pinodexmr_v1's Issues

Setup.sh development

Add progress flags to script ~/setup.sh so if a user fails an element of the menu it only reverts to that step, not the whole script.

Create SSL Certs for Web Terminal -Shell in a box

Debian Jessie (onto which the PiNode-XMR is built) the default openssl package does not include the utilities necessary for Shell-in-a-box to generate self-signed certificates.

This currently issues a warning (chrome browser) for an unsecured connection due to it's unencrypted data.

Solution: Upgrading openssl to install a version of the tools that support certificate creation.

PiVPN creates network adapter (tunnel). This confuses Monero start script.

Context:

This error is focused around the command hostname -I (that's a capital eye)

Sample output:

pinodexmr@PiNodeXMR:~$ hostname -I
192.168.1.127 10.8.0.1

Monero daemon starts with ./monerod --rpc-bind-ip=$DEVICE_IP

Where DEVICE_IP="$(hostname -I)"

Normal working condition

With ethernet as the only connected network adaptor the following is produced. Monerod accepts the one IP to bind. Start is successful

pinodexmr@PiNodeXMR:~$ hostname -I
192.168.1.127

This error is produced by:

Multiple network adaptors gaining simultaneous IP address such as:

  • Having both Ethernet and WiFi connections
  • IPv6 enabled
  • OpenVPN tunnel

Possible solutions

Add filter to only set first column of hostname -I result as output for variable. So hostname -I | awk '{print $1}' works.

Consider a bind to fixed address but network wide so 0.0.0.0 (maybe 127.0.0.1)

Add onion-blockchain-explorer

Feature requested by a few users and was considered for the 0.6.19 release however encountered some problems with dependencies that would kill the explorer on future update.

To summarise Onion-blockexplorer seems to need a version of monero that is built from source, whereas PiNode-XMR uses precompiled ARMv7 binaries

Edit 1: Oct '19

My current active issue to work on.

I've been in contact with the monero onion blockchain explorer creater which has helped massively in how to integrate this.
The explorer seems to centralise around libraries in the ~/monero/ directory (explorer uses compile from source monero) and then uses the default ~./bitmonero/ directory for the blockchain . However the way PiNode-XMR is created by using the pre-built armv7 daemon, libraries aren't created for the explorers use.

To solve this Monero could be compiled from source to give the explorer the files it needs, using the ~/monero/ directory. Then a separate directory could be created called ~/monero-active/ which contains the pre-compiled monerod for armv7 for general PiNode-XMR use.

The reason for having two installations of Monero are:

  • If I used just one installation (self compile) when updates are available it is not user friendly to use compile from source. Yes a script could be created for this but the opportunity for failure is much greater.
  • In addition on update compile from source takes ~7 hours (Pi3), this is not acceptable
  • The block-explorer version shouldn't need updating unless there is a protocol change for the blockchain (compile from source version)

So plan to use ARMv7 Monero for speed of update when available (<5 mins) in ~/monero-active/ for running the node.
Have self compiled Monero in ~/monero/ only to be used as a resource library for the block-explorer. Shouldn't need regular updating.

Edit 2: Dec '19

In progress still. For the block explorer it requires the compiled from source monerod. So the Armv7 monerod has been moved to ./monero-active/ and will be the easy to update and running version. The ./monero directory will contain what are essentially libraries for the block explorer to work, and should require updating until a monero major release.

In this configuration the monero block explorer works as a block explorer. However due to some rpc issues tx fee data, and mempool data isn't currently retrievable. This is being looked into

Tidy HTML pages. I've made a mess of the lines whilst learning.

What it says on the tin. The web-ui side of things has been self taught and therefore the indentation, closing , and just general formatting is a mess.

If someone could advise on the "advanced-settings.html" page and tidy that, I can work from there to resolve the other less complex pages.

Hardware: Have a single board computer spare? Will it run PiNode-XMR?

I'd like some assistance from the community!

With the self installer scripts releasing us from the constraints of the Raspberry Pi platform I require testers with access to single board computers (SBC). It would be rather wasteful (and expensive) for me to buy one of every SBC out there so I'm asking you to dig though your spare project box's to see what you can put to use.

The list below is not exhaustive. If you own something else that's not on the list, that's fine, give it a go, it can be added. Use the list as a guide for the info we need. If you use a non-standard disk image can you link where others can find it, however standard images should be used where possible as the point of this open source installer is that it can be trusted.

Leave your findings as a comment at the bottom.

My Expectations: The purpose of this is to see what variations (if any) affect the PiNode-XMR installer or how it functions once complete. I believe that on each device the node will install and be functional if using Debian Buster, but variations in hardware such as CPU temperature sensors may become inaccurate. Details like this will be logged in the notes column, or a link to their own issue as they arise.

Device Base disk Image Tested? Status Build time Notes
Pine A64-LTS buster_current PENDING
Rock 64 buster_current PENDING
Le Potato buster_current_minimal PENDING
Banana Pi M64 buster_current_minimal PENDING
Odroid C2 buster_current_minimal PENDING
Rock Pi 4B buster_current PENDING
NanoPC-T3 Plus buster PENDING Legacy base images listed
Asus Tinkerboard buster_current_minimal PENDING

Confirmed

Device Base disk Image Tested? Status Build time Notes
Raspberry Pi 3b+ Raspbian Buster lite 2020-02-13 Approx 8hrs
Raspberry Pi 4 Raspbian Buster lite 2020-02-13 Approx 4hrs
Odroid XU4 Buster_current_5.4.28_minimal Approx 4hrs
Orange Pi Plus 2E buster_current Approx 4-6 hours Community tested by @dalecooper

Making .img files is Hardware limiting - create install script for any OS*

The current method of distributing this project is to build and install it onto Raspbian and then copy an exact image of the completed project for user download. Each image is specific to each SBC Hardware (Odroid, Pine64, Raspberry Pi, etc).

So, to assist in cross-platform distribution of this project I aim to create a single script that is downloadable and executable. this script will auto build PiNode-XMR on their hardware.

Example:

  1. User has Pine64 board, installs trusted Debian lite OS from normal source.
  2. Downloads PiNode-XMR script and runs it
  3. Script produces menu and user selects from list of supported OS's that he/she is running Debian
  4. PiNode-XMR sources and builds itself using open source script for Debian.

Proposed supported OS's

  • Raspbian (minor changes from Debian)
  • Debian

Please suggest other OS's that could be supported or ideas on how to streamline this in the comments.

Edit Feb 2020:

Raspbian script and Armbian script prepared and undergoing testing.

Debian to follow for more robust hardware.

Edit March 2020:

Raspbian Testing nearly complete, and satisfied that the overall project is sound. However due to it being only me developing there will no doubt me minor bugs and other users handle this project in a way I havn't foreseen.
The new PiNode-XMR update script will allow me to push these updated scripts with minimal disruption to the user.

Armbian tweaking still in progress, but with the sound backing of the Raspbian build this should be quick and just requires customisation such as removal of raspi-config or other Pi specific tools.

Advanced settings tab, user buttons require linking to scripts

A very simple issue to solve for someone:

Scripts have been created for the user to call such as:
monerod-start.sh
monerod-reboot.sh
monerod-stop.sh
monerod-start-tor.sh
Updater.sh

And source files for configurable values such as:

monero-port.sh
out-peers.sh
in-peers.sh
limit-rate-up.sh
limit-rate-down.sh
RPCp.sh
RPCu.sh

Ajax/php needed to link buttons to trigger scripts/change source values.

**Note tor command triggers start, currently unable to switch back to clearnet with script RPC issues.

Progress 8th June '19:
Ajax/php active on buttons.
Issue of commands run by user www-data solved by using systemd to send commands as user 'pinodexmr' (default).

Monerod start button active
Monerod stop button active
Monerod reboot button active

A bit more time needed to customize scripts on standard buttons but won't take long.
Not started work on the variable setting drop downs yet.

can't sync wallet since upgrade

Hi,

since I upgraded to v3.20.04 I am not able to sync my Monero wallet against my private node. It was working fine before. Do firewall rules need to be updated or something else?
I am getting this error logs:
2020-04-07 12:34:54.965 15876 TRACE net contrib/epee/include/net/net_helper.h:446 READ ENDS: Connection err_code 1236
2020-04-07 12:34:54.965 15876 DEBUG net contrib/epee/include/net/net_helper.h:455 Problems at read: Network connection has been stopped by local system
2020-04-07 12:34:54.965 15876 ERROR net.http contrib/epee/include/net/http_client.h:483 Unexpected recv fail
2020-04-07 12:34:54.965 15876 TRACE net.http contrib/epee/include/net/http_client.h:529 Returning false because of wrong state machine. state: 5
2020-04-07 12:34:54.965 15876 INFO net.http contrib/epee/include/storages/http_abstract_invoke.h:53 Failed to invoke http request to /json_rpc
2020-04-07 12:34:54.965 1548 DEBUG net.http contrib/epee/include/net/http_client.h:382 Reconnecting...
2020-04-07 12:34:54.966 9668 DEBUG frontend src/wallet/api/wallet.cpp:402 Wallet connection status changed 0
2020-04-07 12:34:54.966 9668 DEBUG frontend src/wallet/api/wallet.cpp:402 Checking connection status
2020-04-07 12:34:54.971 9668 DEBUG frontend src/wallet/api/wallet.cpp:402 Wallet connection status changed 3

Thank you

Experiment with early integration of I2P

With I2P-zero talked about as Monero ready it seems as good a time as any to experiment with implementation on PiNode-XMR.

I2P-zero is said to need a build of the master branch of the Monero source code yourself and then follow instructions in https://github.com/monero-project/monero/blob/master/ANONYMITY_NETWORKS.md

Also may be of use:
https://github.com/i2p-zero/i2p-zero

**Note: Onion-blockexplorer issue requires self compiled build of master too, these issues may be solved simultaniously.

Review security of "/etc/sudoers"

An important one...

The current sudoers file is written in such a way that was to enable functions and bypass errors I was encountering running those functions. Security could most likely be tightened. Any advice will be considered and researched.

Raspberry Pi 4 tester needed

As simple as the title says, I don't currently own this hardware so the project requires a tester to try either PiNode-XMR image for functionality. First time contributors welcome.

Edit:
Further information suggests that the Pi 4 requires Raspbian Buster for certain hardware upgrades. Due to Pinode-XMR being built on the Stretch release I believe it is not currently forward compatible with the Pi 4.

Would be great if someone with the hardware could test and confirm.

RPC_Payments (feature to display log of users credits)

So the V2 PiNode-XMR is RPC-Payment ready once monerod-0.15.0.3 appears on the scene.

There are some solves monerod issues with restricted RPC ports and credentials that I'm waiting to be worked in.

Once that's ready I need the add a page to display what users have what credits.

Using SFTP log in with WinSCP causes crash

SFTP and FTP to log in triggers .profile to launch the welcome setup script, which as a FTP program can't be satisfied. loops then dies.

Need to trigger the welcome setup is a better way than .profile

Create first boot interactive configuration menu for password setting

To enable RPC login for secure external connections, eg Mobile wallet app users to access their personal node whilst not on LAN, password setting by the user is required.

Currently this can be done with web terminal but not user friendly. I would propose a menu at first boot that guides a user to set passwords:
New Root/ssh/user password
RPC password

(whiptail menu seems an obvious choice but open to ideas).

Could also incorporate setup of static IP configuration (for example noip.com has simple linux updater which requires minimal setup)

Progress 8th June '19:

'dialog' Menu created that sets: root, pinodexmr (default user) and SSH password securely with validity checks.
Menu also sets RPC username and password in the same manner.
Menu also helps user configure Dynamic DNS client with external service "Noip.com" to allow one part of the external connection process. (Home router config still Req and out of scope of this project)

Create new Web-UI that the community owns and trusts

The current Web-UI is based on github.com/designmodo/Flat-UI and has worked well as web design is not something I know much about, but I was able to tweak it to suit the needs of this project.

The problem comes that as I try to make this project as open source as possible, the Web-UI doesn't come from a repository I control, and is heavily bloated with 2159 objects most of which are unused and I don't have time to audit.

If someone has the time and knowledge to re-create the Web-UI to better suit PiNode-XMR's transparency please get in touch with the commend below.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.