GithubHelp home page GithubHelp logo

guydavis / machinaris Goto Github PK

View Code? Open in Web Editor NEW
343.0 18.0 69.0 5.28 MB

An easy-to-use WebUI for crypto plotting and farming. Offers Bladebit, Gigahorse, MadMax, Chiadog and Plotman in a Docker container. Supports Chia, MMX, Chives, Flax, and HDDCoin among others.

License: Apache License 2.0

Python 54.19% HTML 28.54% Shell 16.64% CSS 0.12% Mako 0.08% JavaScript 0.44%
chia plotting webui plotman chia-network chiadog crypto cryptocurrency farming blockchain

machinaris's Introduction

machinaris

A Docker image for plotting and farming the Chia™ cryptocurrency on one computer or across many. Try the easy install using the Launch Wizard.

Home

For details, see your particular platform: Windows, Linux, Macintosh, Unraid, Synology and others. For support, start a Discussion or join our Discord.

Plotting View

Plotting with the MadMax/Gigahorse and Bladebit plotters, with optional GPU, is managed by Plotman through the Machinaris WebUI across many machines:

Plotting

Track your plotter machines performance as you fine-tune your plotting, graphed for each k-size you plot.

Speed

Archive your new plots to their final destination on local drives or on remote harvesters (via rsync):

Transfers

Farming View

Machinaris bundles the latest Chia™ version inside the Docker image.

Farming

Machinaris also optionally farms your plots to other blockchains including BPX, Chives, Ecostake, Flax, HDDCoin, MMX, and many others.

Alerts

Chiadog provides monitoring of the log files, ensuring you get notified when important events occur across your farm:

Alerts

Drive health is monitored as with smartctl on Linux. Notifications can be sent to e-mail, telegram, discord, slack, etc.

Drives

Setup

Simplified setup allows you to either import your existing key mnemonic or generate a new one directly in the Machinaris WebUI on first launch:

Setup

That's for fullnode (default) and farmer modes. However, for harvester you only need the farmer's CA certificates and for plotter only your pool and farmer public keys.

Immediately on setup, a fast blockchain download will get you synced and farming in just hours, rather than the days required by the official GUI client.

Configuration

Configuration updating for Chia, Plotman, and Chiadog directly from the WebUI.

Settings

Summary and details for connections and blockchains highlights your farm's status:

Connections

Container CLI

While the WebUI is useful for quick and easy access, you also have the full power of a shell commandline (CLI) in the running Machinaris container. All binaries are available to execute advanced commands:

ContainerCLI

To enter an in-container shell, just type docker exec -it machinaris bash from the host OS.

Worker Management

When Machinaris is deployed to multiple systems on your LAN, you can control each plotter, harvester, and farmer - all from a central WebUI on the Machinaris controller. Configuration, monitoring, and alerting are all available in this centralized portal.

Workers

Each worker will run one Machinaris container per blockchain: Chia, Flax, MMX, etc as a fullnode, harvester, or plotter.

REST API

Machinaris includes a complete REST API offering opportunities for integration and extension with other tools.

Workers

All project contributions and feedback are welcomed!

Trademark Notice

CHIA NETWORK INC, CHIA™, the CHIA BLOCKCHAIN™, the CHIA PROTOCOL™, CHIALISP™ and the “leaf Logo” (including the leaf logo alone when it refers to or indicates Chia), are trademarks or registered trademarks of Chia Network, Inc., a Delaware corporation. There is no affliation between this Machinaris project and the main Chia Network project.

machinaris's People

Contributors

antcasq avatar apfelbirnekreis avatar baatezu avatar bafff avatar bdeprez avatar chris-merritt avatar dependabot[bot] avatar ekersey avatar fabriziocacicia avatar fufar avatar guydavis avatar hereisderek avatar karaliux avatar kmoore134 avatar nold360 avatar priyankub avatar sagittarius avatar slowfinger avatar sparklyballs avatar y2kboy23 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

machinaris's Issues

add Free hd space to webinterface

I would like to see added free plotting HD space so i know when to buy more hd's :)
Maybe include When its full day ( due to constant plotting based on speed)

No Plots show if nfs share remounted in container

Hi ,
first: great work ! I have only one issue , its seems that the gui wont show plots if they are mounted as nfs share on the host and then remounted inside the containert. On the cli chia farm summary shows all plots and dirs , chia plots check also recognize the plots inside the dirs,. The gui shows in home correct values , in farming 0.
I hope my german english didnt hurts you not to much :-)

Update: Its not NFS , its just hardocded values for the first plot dir.. Ignore this issue :-)

Plots stuck in phase 3 for days

Hello,

plotman started two plot jobs before i stopped it to let them finish (for testing/learning).

Both of them are in phase 3 and seem to be stuck.

image

image

Node is fully synced if that makes a difference. Both the tmp and final dest is on a dedicated harddrive. It has sufficient space.
image

Summary:
image

The initial plot is one i made using the official gui before migrating to this.
The temp folder is full of .tmp files.

[feature request] - Control the plotter during the WEBUI of fullnode

This would be i nice feature to controll the plotter during the webui of the fullnode.
May be to sum up all plotters in the "Plotting" Section...

Maybe we could get this working through a database somewhere else (in unraid just a small mariadb/mysql/postgres docker --> would prefer postgres because i have already one running).
In the DB the could all poll there states and i would start a transaction i the state in the DB changes...
--> just a suggestion

Version in UI dont match

I updated to latest chia version 1.1.7 but the web ui shows 1.1.6. Logged in to docker bash to check and it is 1.1.7. So maybe UI didn't update?

[feature request] - statistic for already done plots

when you grep the logfile files you can get the totaltime by last plotting processes...
cat /mnt/user/appdata/machinaris/config/plotman/logs/* | grep "Total time"
--> the output looks like this
Total time = 46063.301 seconds. CPU (95.470%) Thu May 20 08:36:40 2021 Total time = 45165.172 seconds. CPU (102.620%) Thu May 20 21:20:07 2021

Here you can create a nice table and maybe altough calculate the total time up to hh:mm:ss

/bin/sh: 1: cannot open /dev/tty: No such device or address

Hi,

Building/running on Ubuntu I got this error. Any advise?

Logs are clean

Chia directory /root/.chia/mainnet
/root/.chia/mainnet already exists, no migration action taken
to use your own keys pass them as a text file -v /path/to/keyfile:/path/in/container and -e keys="/path/in/container"
Generating private key
Added private key with public key fingerprint xxx
Plots directory appears to be empty and you have not specified another, try mounting a plot directory with the docker -v command 
Added plot directory "/plots".
Daemon not started yet
Starting daemon
chia_farmer: started
Configuring Chia...
Configuring Plotman...
Starting Machinaris...
Completed container startup.  Browse to port 8926.

Setting multiple plots folders , plots don't show in farming view.

For my setup I need to set 3 different locations for the stored plots, so i've edited the config yaml file to reflect this. the summary shows the correct number of plots for the combined total of the 3 locations, however if I go to the farming view it only shows plots in /plots
Ideally i'd like to map /plots/1 /plots/2 /plots/3 container locations to my 3 host paths but if i do this no plots show in the farming view and again the summary view is correct.

Feature req: Discord notification

Add a possibility in Alerts to send notifications via Webhook to Discord.

T.ex:
Plots startet
Plots finished (time to make etc.)
Coins farmed
Optional hourly status update (or adjustable time updates)

Machinaris theme(s)

Not a coder, so not sure how to do a PR. But wanted to share some theme adjustments. Default Machinaris looks a bit of a mix between light and dark mode, so I wanted to just darken the background.

machtheme1

<style> 
/* Main background color */
body {
  background-color: #15171a
}

/* Rounded sections */
.rounded-3 {
  border-radius: .5rem!important;
  background-color: #212529!important;
  -webkit-box-shadow: 0px 1px 0px 0px #000;
  box-shadow: 0px 1px 0px 0px #000;
  border: 0!important;
}

.text-success {
  color: #3aac59!important;
  font-weight: 500;
}

.display-6 {
  color: #c7c7c7;
}

/* Menu */
.col-auto.col-md-3.col-xl-2.px-sm-2.px-0.bg-dark {
  border-right: 1px solid #000;
}
</style>

Here is a default Chia GUI look (at least how it seems to look on Windows). Dark Mode:
machtheme2

<style> 
/* Main background color */
body {
  background-color: #303030
}

/* Rounded sections */
.rounded-3 {
  border-radius: .5rem!important;
  border: 0!important;
  -webkit-box-shadow: 0px 1px 0px 0px #000;
  box-shadow: 0px 1px 0px 0px #000;
  background-color: #424242!important;
}

.text-success {
  color: #3aac59!important;
  font-weight: 500;
}

.display-6 {
  color: #c7c7c7
}

/* Menu */
li .text-success {
  color: #fff!important;
}

.fs-4.bi-flower1 {
  color: #3aac59;
}

.fs-5.d-none.d-sm-inline {
  color: #3aac59;
}

.bg-dark {
  background-color: #424242!important;
}
</style>

And here is the light version:
machtheme3

<style> 
/* Main background color */
body {
  background: linear-gradient(45deg, #ffffff 30%, #fdfdfd 90%);
}

/* Rounded sections */
.rounded-3 {
  border-radius: .5rem!important;
  background-color: #fff!important;
  -webkit-box-shadow: 0px 1px 0px 0px #9e9e9e;
  box-shadow: 0px 1px 0px 0px #9e9e9e;
  border: 1px solid #ddd;
  important;
}

.text-success {
  color: #3aac59!important;
  font-weight: 500;
}

.display-6 {
  color: #757575;
}

/* Menu */
.col-auto.col-md-3.col-xl-2.px-sm-2.px-0.bg-dark {
  border-right: 1px solid #ddd;
}

li .text-success {
  color: #757575!important;
}

.fs-4.bi-flower1 {
  color: #3aac59;
}

.fs-5.d-none.d-sm-inline {
  color: #3aac59;
}

.bg-dark {
  background-color: #fff!important;
}

i.fs-4.bi-github {
  color: #757575!important;
}

.ms-1.d-none.d-sm-inline {
  color: #757575!important;
}
</style>

I'm sure I messed up some classes I've targeted or someone can do a better job, but this is a quick copy/paste to get those colors for now. Hopefully a theme toggle could be made and we could drop these in to customize.

no keys found in different directory

I am having issues changing the directory of the keys location.

When I make the path /mnt/user/Video files/mnemonic.txt It will not detect the text file I have in there, It also will not create a new key.

I get this error when trying to create a new one.

"Unable to save mnemonic to /mnt/user/Video files/1/mnemonic.txt"

What am I doing wrong?

Paho MQTT module was not found

I'm trying to use MQTT Notifications from Chia Dog but I get this error messages:

[ ERROR] --- Message delivery failed because the Paho MQTT module was not found. Please refer to INTEGRATIONS.md for help on resolving this issue. (mqtt_notifier.py:109)
[ ERROR] --- Failed to send events over mqtt (notify_manager.py:64)

I've installed the Paho MQTT package as it says in INTEGRATIONS.md but it still doesn't work

Internal Server Error

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

Fresh installation of Debian 10, Docker 19 and Machinaris (Plotter-only), following the Docker Wiki at https://github.com/guydavis/machinaris/wiki/Docker

Can someone confirm if this is an issue with Machinaris or not? I successfully installed on an exact same VM yesterday.

Update 1: Just tried on a fresh install of Ubuntu 20.04, same issue.

Update 2: Seems to be a Plotter-only issue as running Full-Node works as expected.

v0.2 - Network | Connections | Add Connection button is broken

Sorry, I fat-fingered a change during release fix and broke this button. Will fix in next patch release.

For now, fall workaround is to execute the Add Connection directly via CLI:

docker exec -it machinaris bash
chia show --add-connection HOST:IP

Plotman Archive must be manually started from container CLI

When plotman.yaml has archive settings enabled, the 'Plot On!' and 'Stop Plotman' buttons should also start/stop a separate plotman archive loop, not just the main plotman plot loop. Seems this archive behavior is a bolt-on requiring a separate process.

Machinaris does support archiving via Plotman over rsync. I am running this myself, with two Windows plotters rsyncing over plots to an Unraid server. That said, this Plotman archiving support could be improved in Machinaris. This issue will encompass those improvements.

Ability to View Logs via Machinaris WebUI

Want to see logs from services via the browser. Examples:

  • Farming: mainnet/log/debug.log
  • Plotting: plotman/logs/plotman.log
  • for each running plot: plotman/logs/2021-05....log
  • Alerts: chiadog/logs/chiadog.log
  • Machinaris: machinaris/logs/webui.log

Possible implementation in Flask. Should it be a tab on main window, or a pop-over log viewer that is in it's own browser window like Unraid does?

Wallet "No online backup file found"

Hello, first of, thank you for putting this together. It really is helpful for me to keep everything in one place. Everything else seems to be good except the wallet feature. I keep getting the "No online backup file found". I forwarded the port and it seems to be syncing (which is taking a while, does it usually take that long?). Could you let me know what what I did wrong? I imported a mnemonic that I was using on the GUI on another PC (turned off now). Thank you.
Window_ShareX_chrome_2021_05_20_ 07 12 52

Simple Login Page

Just simple username and password that can be set in docker or settings.

Docker Port Mapping not working with bridge

Changing to Bridge mode and making custom container and hosts ports doesn't reflect in the running app. It still uses the old web port.

Mapping:
image

Log:
image

The same happens in Host Mode and if I change the port.

option to select role

it would be awesome to have a start interface with toggles for each
[] harvester
[] plotter
[] farmer
[] full node

mnemonic.txt file not recognized ("Uh-oh! No Keys Found")

This has to be user error, but I'm at a loss. I'm getting the "Uh-oh! No Keys Found" message when I open my container. "No valid keys were found at these path(s) in-container: /root/.chia/mnemonic.txt". The path looks right; the mnemonic setting for the container is set to /root/.chia/mnemonic.txt.

I copied my mnemonic.txt file from the unraid host console using this command:

root@Unraid:/mnt/user/chia# cp mnemonic.txt /mnt/user/appdata/machinaris/mnemonic.txt

As a note, this mnemonic.txt file was used successfully with the official chia docker.

I verified that it was copied from inside the container console:

# cd /root/.chia
# ls
chiadog  machinaris  mainnet  mnemonic.txt  plotman  root # <-- removed asterisks, they were just formatting

Then I verified that the file actually contains the menomic using the command cat mnemonic.txt (I won't show the results for obvious reasons).

Finally, I restarted machinaris. But I still have the same error.

Please tell me I'm missing something silly.

plotting tmp output incorrect.

When looking at plot jobs, the first tmp should list the plotting directory used (as seen in the plotman cli output) and not the temp plot size. Temp plot size is found on the second tmp column.

image

Plotting - ability to Stop Plotman loop from WebUI

Stopping the plotman process which is launching new plot jobs would allow existing plot jobs to keep running. Useful to have Plotman reload after plotman.yaml changes so maybe a Restart action too.

Currently, to do this one needs to find PID of plotman in container and kill it.

AppArmor profile for Chia Node

Hi. I would really enjoy running the Chia fullnode with MAC security like Ubuntu AppArmor, just in case since there's an open port to the Internet. Is there anyone interested in creating an AppArmor profile to run the fullnode inside the container? I might be able to help. Thanks :)

RuntimeError: std::exception

When trying to use the plotting functionality a I get a "RuntimeError: std::exception"
I've testes if the drive are mounted correctly to the container and if a I read/write access as well for the /plotting and for the /plots directory this is working fine.
We I try to manually create a plot using the chia commandline I get the same error.
I'm running the :latest version of machinaris freshly installed today.

Updated via Unraid, farmer private key not found

After updating the machinaris docker in unraid, my plots are showing the following message:
Warning! Chia is farming 0 plots, but Machinaris found 4 *.plot files on disk. See the FAQ.
When i run chia plots check , i see the following:
WARNING There are 4 plots with a farmer or pool public key that is not on this machine. The farmer private key must be in the keychain in order to farm them, use 'chia keys' to transfer keys. The pool public keys must be in the config.yaml
I am quite new to this and I am sorry if the answer is obvious.

Feature Request: Summary and Plotting

Summary / Dashboard

  • Show Farming Plots
  • Total Size of Plots
  • Data storage left
  • Network sync status

Plotting

  • Percentage tracker
  • History with stats (time taken etc.)

Review Chia private key & wallet security best practices - implement and document for Machinaris.

We inherited the keys=/root/.chia/mnemonic.txt behavior from the official Chia Docker, but there needs to be a better way to handle the private key and/or keyring.

Some notes:

  • When mode=plotter, we can now just pass farmer_pk and pool_pk, so that's good.
  • When mode=harvester, we can import the farmer's ca and not require mnemonic.txt, so that's good.
  • But when mode=[farmer|fullnode], we need a better approach to private key security. Currently, mnemonic.txt is required on first launch to initialize Chia services.
  • Best practice is to change the payout address to a cold wallet so that coins do not accumulate in the main wallet used by Machinaris.

Some references:

I'm opening this thread and calling for discussion and assistance to find best practices and approaches. Any contributions of wiki documentation and code pull requests are welcomed. A "Security" discussion channel has also been opened our our Discord. Come share good ideas!

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.