Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Basic "How To Run A Full Node" Page #711

Merged
merged 7 commits into from
Feb 23, 2015
Merged

Add Basic "How To Run A Full Node" Page #711

merged 7 commits into from
Feb 23, 2015

Conversation

harding
Copy link
Contributor

@harding harding commented Jan 15, 2015

Preview: http://dg4.dtrt.org/en/full-node

  • Add basic page with some general information plus instructions for Ubuntu 14.10. I hope to write more instructions later, and hopefully we can find other volunteers to contribute instructions too.
  • Change a link on the participate page to point to the full node page.
  • This page is being added as English-only for now. I figure we can convert it into a translation template after we have instructions for Windows and Mac OS X, and after the instrutions have actually been tested with the released version of Bitcoin Core 0.10.0. (These Ubuntu instructions were tested with RC3 and the old Ubuntu packaging.)

Note: this page is less grandiose than I had hoped. I realized I was procrastinating on it, so I decided to just see what I could do in an afternoon. Suggestions for improvements welcome.

Related: issue #410

@schildbach
Copy link
Contributor

Awesome, thanks for writing this down!


* 2 gigabytes of memory (RAM)

* Broadband Internet connection
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe "A good broadband Internet connection"?

To my understanding, many broadband connections aren't this fast and may in fact slow down the network.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll change that.

For reference, I just checked the stats on my fastest and best connected node (with >99% uptime) and it says the average for the last 30 days is 592 Kbit outgoing and 63 Kbit incoming. That outgoing is may be a bit high for a low-end DSL connection around here, but the average is skewed by the fact that my connection supports up to 100 Mbit/s and regularly sees peaks of about 14 MBit/s---much higher than supported by most home connections around here.

bitcoind3

Based on that, I think pretty much any broadband connection would be an asset to the network. However, a connection with low outgoing speed will more commonly get saturated, giving a poor experience to the volunteer---so I think saying "a good connection" is warranted.

@ghost1542
Copy link
Contributor

@harding Thanks! Very useful page to have, I just reported what I found, maybe I'll have time to review it more carefully a bit later. I've noticed there is no mention of opening port 8333? I wonder if the page should be translated, 25 languages is time-consuming and there is a lot of words there, but it's an important page.

@harding
Copy link
Contributor Author

harding commented Jan 16, 2015

@saivann thanks for your comments! I replied to a few; the rest I plan on implementing as you propose.

Yeah, about half a second after I clicked "Submit pull request", I realized I forgot about port 8333. :-) I'll write something about it tomorrow.

AFAICT, translation has a lot of things going against it:

  • High word count: currently about 2,000. It'll likely be over 5,000 words by the time we add Ubuntu Server, generic Linux, Windows (7 and 8?), and Mac OS X instructions.
  • Screenshots: we'd need to take new screenshots for each language. That may not be hard for systems I can virtualize (like Ubuntu), but it does sound time consuming, and it may be impossible for systems I don't have any current access to (like OS X).
  • Frequent changes: this guide will probably need to be partially rewritten for each Bitcoin Core release, with little rewrites needed for minor releases (every month or two) and larger rewrites needed for major releases (every six months or so). It also has to be updated when the underlying operating systems change. That means there will probably frequent translation updates.

It seems to me like it's probably better to put off translations for the short term until we see the page in action. That way, if nobody ever visits the page or it ends up changing too often, we don't bother to even try to get it translated.

@schildbach My pleasure!

@harding
Copy link
Contributor Author

harding commented Jan 17, 2015

  • Commit 702a8a9 replaces the original commit. The only change is that I deleted two of the images related to GUI autostart. New images are part of the next commit.

  • Commit 40bbde2 makes numerous corrections suggested by @saivann (thanks!). See the commit message for details.

    It also adds an extended section describing setting up port forwarding on home routers and opening firewall ports to allow inbound connections to port 8333.

The preview has been updated.

I hope to get a Windows 7 VM setup tonight so I can write Windows instructions tomorrow.

@jlopp
Copy link
Contributor

jlopp commented Jan 20, 2015

Wow; great work. How did you determine that 6 hours per day is the minimum requirement? The problem with nodes that don't run 24/7 is that they don't become well-connected since their IP address is constantly being purged from the address lists held be other nodes on the network. Gavin has also noted that we want nodes that are always on: https://www.reddit.com/r/Bitcoin/comments/1scd4z/im_running_a_full_node_and_so_should_you/cdw3lrh?context=3

@harding
Copy link
Contributor Author

harding commented Jan 20, 2015

@jlopp I used the highly scientific method called guessing. :-)

Based on monitoring my own full node stats---including the intermittent-on devel node on my laptop---I know that it typically takes 30 to 60 minutes of node uptime before the seeders start sending me BitcoinJ-based SPV clients. Five hours of serving SPV clients seems like a reasonable contribution to the network to me.

In addition, based on my getnettotals results (I run it in an every-minute cronjob), I also know that my node tends to upload about 10 times as much as it downloads, and that it reaches that ratio in about 2 to 3 hours and then remains fairly constant. Doubling that time to account for node variations also comes out to about six hours.

I actually think a lower value than 6 hours a day would still be a positive contribution to the network. I specified higher requirements than strictly necessary in all categories, including uptime, because there was some concern about contributors with marginal resources becoming disappointed and making comments that would hurt volunteer morale.

I agree with Gavin's comment that we need more always-on full nodes. However, those nodes haven't appeared in the year since he made that comment---so what are we to do?

@harding
Copy link
Contributor Author

harding commented Jan 20, 2015

Commit 83c419e adds instructions for Windows 7, Ubuntu Server, and Other Linux Distributions---see the complete list of changes below. This is my final planned commit for the full-node page, although I will re-review when 0.10.0 final is released. The preview has been updated.

  • Added instructions for Windows 7, but only for Bitcoin Core GUI. I added a stub for anyone who wants to write instructions for using the daemon on Windows.
  • Added instructions for Ubuntu 14.04 LTS Server, but only for Bitcoin core daemon. I assume most server users run headless.
  • Added instructions for Other Linux Distributions, for both GUI and daemon. Hopefully the instructions are general enough to apply to most distributions but specific enough that they actually help readers.
  • Added a stub for Windows 8.1 as I don't have access to a copy, and all the pay-per-hour Windows VPSes I can find run some version of Windows Server. (I have the same problem with OS X.)
  • Hid some subsections in the table of contents: I found having subsections named "Bitcoin Core GUI" and "...Daemon" within multiple sections distracting, so I hid them in the TOC.
  • Added basic PGP verification instructions: I didn't try to explain PGP to newbies, but I did provide instructions useful to people who have used PGP before. These instructions are currently displayed in the Windows 7 and Other Linux Distributions sections (where users download from Bitcoin.org).
  • Made sure the end of each install section points to the Network Configuration section so users open port 8333.

@ghost1542
Copy link
Contributor

@harding Maybe you could still mention something like "Ideally, you should keep your PC running. However, 6 hours a day remains a good minimum"?

@harding
Copy link
Contributor Author

harding commented Jan 20, 2015

@saivann, @jlopp added commit 9940b07 mentioning that more hours are better, and that running continuously would be best of all. Preview updated.

@jlopp
Copy link
Contributor

jlopp commented Jan 20, 2015

ACK.

This will be a great resource and I'll do what I can to get it added to as many FAQs as possible. From the discussions I've had with devs, it seems that the best hope we have of getting more people to run nodes is to make it easier. Getting rid of the need for bootstrapping is a good start; hopefully pruning will be another step in the right direction. But the ideal scenario would be for it to be straightforward enough that a guide such as this isn't even necessary :)

@harding
Copy link
Contributor Author

harding commented Jan 20, 2015

@jlopp Thanks! And I would love to see this guide become unnecessary.

@jlopp
Copy link
Contributor

jlopp commented Jan 22, 2015

Bump will this be getting merged and pushed soon?

@harding
Copy link
Contributor Author

harding commented Jan 22, 2015

@jlopp Since these instructions are specific to Bitcoin Core 0.10.0, which hasn't been released yet, I'm not planning on merging this until 0.10.0 is released on Bitcoin.org and the Ubuntu PPA repository has been updated.

(However, unless there are any changes to 0.10.0's install procedures or someone finds a problem on the page, I am finished writing.)

@ghost1542
Copy link
Contributor

@harding I have just read through the whole document once again and it's awesome! Thanks for your extensive research and clear step-by-step instructions!

The only remaining suggestion I have is about dropping some duplicate content. What would you think about having only one Ubuntu version (Ubuntu 14.04 or Ubuntu 14.10), with graphical and command line instructions? At a first glance, the only difference I have found between the duplicate command line instructions is how to access the terminal when installing Bitcoin Core (one over SSH, one with the swirl icon). Maybe this can be merged together?

@harding
Copy link
Contributor Author

harding commented Jan 25, 2015

@saivann good idea re: Ubuntu instructions---I'll do that. Thanks for the complement!

@harding
Copy link
Contributor Author

harding commented Jan 26, 2015

Commit b29ab4a merges the two different Ubuntu instructions together as suggested by @saivann. Preview updated.

@ghost1542
Copy link
Contributor

LGTM, Thanks!

@harding
Copy link
Contributor Author

harding commented Jan 27, 2015

Commit aaab53f adds a quick note about screensavers activating a low-power mode that prevents nodes from uploading data. This was reported in issue #698 but I forgot about it. (Sorry!)

@harding
Copy link
Contributor Author

harding commented Feb 18, 2015

Note: 0.10.0 packages have been uploaded for Ubuntu 14.10, so I'll be retesting these instructions tomorrow. I'll also work on revising the block chain size text as discussed in #749

I'm aiming for merging this Monday morning EDT (noonish UTC).

Add basic page with some general information plus instructions for
Ubuntu 14.10.

Change a link on the participate page to point to the full node page.

This page is being added as English-only for now.  I figure we can
convert it into a translation template after we have instructions for
Windows and Mac OS X, and after the instrutions have actually been
tested with the released version of Bitcoin Core 0.10.0.  (These Ubuntu
instructions were tested with RC3 and the old Ubuntu packaging.)
Made numerous corrections suggestion by Saivann Carignan (thanks!),
including:

* Replaced GUI autostart instructions with using Bitcoin Core GUI's own
  autostart option.

* Described minimum upload speed requirements.

* Described metered bandwidth requirements. Also added a warning about
  exceeding periodic bandwidth limits.

* List items that ended with complete sentences (subject+predicate)
  received terminal punctuation. Did not terminally punctuate sentence
  fragments (sentences missing a subject or predicate).

Also suggested by Saivann, I added an extended section describing
setting up port forwarding on home routers and opening firewall ports to
allow inbound connections to port 8333.
* Added instructions for Windows 7, but only for Bitcoin Core GUI. I
  added a stub for anyone who wants to write instructions for using the
  daemon on Windows.

* Added instructions for Ubuntu 14.04 LTS Server, but only for Bitcoin
  core daemon. I assume most server users run headless.

* Added instructions for Other Linux Distributions, for both GUI and
  daemon. Hopefully the instructions are general enough to apply to most
  distributions but specific enough that they actually help readers.

* Added a stub for Windows 8.1 as I don't have access to a copy, and all
  the pay-per-hour Windows VPSes I can find run some version of Windows
  Server. (I have the same problem with OS X.)

* Hid some subsections in the table of contents: I found having
  subsections named "Bitcoin Core GUI" and "...Daemon" within multiple
  sections distracting, so I hid them in the TOC.

* Added basic PGP verification instructions: I didn't try to explain PGP
  to newbies, but I did provide instructions useful to people who have
  used PGP before.  These instructions are currently displayed in the
  Windows 7 and Other Linux Distributions sections (where users download
  from Bitcoin.org).

* Made sure the end of each install section points to the Network
  Configuration section so users open port 8333.

Closes #410
Thanks Jameson Lopp and Saivann Carignan!
Suggested by Saivann Carignan (thanks!)
Mention that many OSes enter a low-power mode that's bad for Bitcoin
when their screensavers activate.

Closes #698
@harding
Copy link
Contributor Author

harding commented Feb 20, 2015

Rebased and added commit f61f66d which adds a link to this guide from the Download page. Also updated the preview.

In the absence of critical feedback, this will be merged around 12:00 UTC Monday.

@harding harding merged commit f61f66d into master Feb 23, 2015
harding added a commit that referenced this pull request Feb 23, 2015
* Pull #711: Add Basic "How To Run A Full Node" Page
* Pull #752: Revert "Drop good tor privacy score for mycelium"
* Pull #758: Dev Docs: Add Inline Template Plugin And Use It For RPC/REST
@harding harding deleted the runfull branch February 26, 2015 10:50
@chepkasov
Copy link
Contributor

Hi, Harding and All!

Unfortunately, websites are still not published. Why is that? Can you help me?

We're needed to add bitcoin news website: http://www.coinfox.info (ENG), http://www.coinfox.ru (RU) and http://www.coinfox.es (ES) for https://bitcoin.org/ru/resources ("News" maybe)

Sincerely,

Igor Chepkasov
Cryptocurrency Foundation Russia, Founding chairman

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants