@@ -117,37 +117,94 @@ for normal IPv4/IPv6 communication, use:
117117
118118## 3. Automatically create a Bitcoin Core onion service
119119
120- Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
121- API, to create and destroy 'ephemeral' onion services programmatically.
122- Bitcoin Core has been updated to make use of this.
123-
124- This means that if Tor is running (and proper authentication has been configured),
125- Bitcoin Core automatically creates an onion service to listen on. This will positively
126- affect the number of available .onion nodes.
127-
128- This new feature is enabled by default if Bitcoin Core is listening (` -listen ` ), and
129- requires a Tor connection to work. It can be explicitly disabled with ` -listenonion=0 `
130- and, if not disabled, configured using the ` -torcontrol ` and ` -torpassword ` settings.
131- To show verbose debugging information, pass ` -debug=tor ` .
132-
133- Connecting to Tor's control socket API requires one of two authentication methods to be
134- configured. It also requires the control socket to be enabled, e.g. put ` ControlPort 9051 `
135- in ` torrc ` config file. For cookie authentication the user running bitcoind must have read
136- access to the ` CookieAuthFile ` specified in Tor configuration. In some cases this is
137- preconfigured and the creation of an onion service is automatic. If permission problems
138- are seen with ` -debug=tor ` they can be resolved by adding both the user running Tor and
139- the user running bitcoind to the same group and setting permissions appropriately. On
140- Debian-based systems the user running bitcoind can be added to the debian-tor group,
141- which has the appropriate permissions. Before starting bitcoind you will need to re-login
142- to allow debian-tor group to be applied. Otherwise you will see the following notice: "tor:
143- Authentication cookie /run/tor/control.authcookie could not be opened (check permissions)"
144- on debug.log.
145-
146- An alternative authentication method is the use
147- of the ` -torpassword=password ` option. The ` password ` is the clear text form that
148- was used when generating the hashed password for the ` HashedControlPassword ` option
149- in the tor configuration file. The hashed password can be obtained with the command
150- ` tor --hash-password password ` (read the tor manual for more details).
120+ Bitcoin Core makes use of Tor's control socket API to create and destroy
121+ ephemeral onion services programmatically. This means that if Tor is running and
122+ proper authentication has been configured, Bitcoin Core automatically creates an
123+ onion service to listen on. The goal is to increase the number of available
124+ onion nodes.
125+
126+ This feature is enabled by default if Bitcoin Core is listening (` -listen ` ) and
127+ it requires a Tor connection to work. It can be explicitly disabled with
128+ ` -listenonion=0 ` . If it is not disabled, it can be configured using the
129+ ` -torcontrol ` and ` -torpassword ` settings.
130+
131+ To see verbose Tor information in the bitcoind debug log, pass ` -debug=tor ` .
132+
133+ ### Control Port
134+
135+ You may need to set up the Tor Control Port. On Linux distributions there may be
136+ some or all of the following settings in ` /etc/tor/torrc ` , generally commented
137+ out by default (if not, add them):
138+
139+ ```
140+ ControlPort 9051
141+ CookieAuthentication 1
142+ CookieAuthFileGroupReadable 1
143+ ```
144+
145+ Add or uncomment those, save, and restart Tor (usually ` systemctl restart tor `
146+ or ` sudo systemctl restart tor ` on most systemd-based systems, including recent
147+ Debian and Ubuntu, or just restart the computer).
148+
149+ On some systems (such as Arch Linux), you may also need to add the following
150+ line:
151+
152+ ```
153+ DataDirectoryGroupReadable 1
154+ ```
155+
156+ ### Authentication
157+
158+ Connecting to Tor's control socket API requires one of two authentication
159+ methods to be configured: cookie authentication or bitcoind's ` -torpassword `
160+ configuration option.
161+
162+ #### Cookie authentication
163+
164+ For cookie authentication, the user running bitcoind must have read access to
165+ the ` CookieAuthFile ` specified in the Tor configuration. In some cases this is
166+ preconfigured and the creation of an onion service is automatic. Don't forget to
167+ use the ` -debug=tor ` bitcoind configuration option to enable Tor debug logging.
168+
169+ If a permissions problem is seen in the debug log, e.g. `tor: Authentication
170+ cookie /run/tor/control.authcookie could not be opened (check permissions)`, it
171+ can be resolved by adding both the user running Tor and the user running
172+ bitcoind to the same Tor group and setting permissions appropriately.
173+
174+ On Debian-derived systems, the Tor group will likely be ` debian-tor ` and one way
175+ to verify could be to list the groups and grep for a "tor" group name:
176+
177+ ```
178+ getent group | cut -d: -f1 | grep -i tor
179+ ```
180+
181+ You can also check the group of the cookie file. On most Linux systems, the Tor
182+ auth cookie will usually be ` /run/tor/control.authcookie ` :
183+
184+ ```
185+ stat -c '%G' /run/tor/control.authcookie
186+ ```
187+
188+ Once you have determined the ` ${TORGROUP} ` and selected the ` ${USER} ` that will
189+ run bitcoind, run this as root:
190+
191+ ```
192+ usermod -a -G ${TORGROUP} ${USER}
193+ ```
194+
195+ Then restart the computer (or log out) and log in as the ` ${USER} ` that will run
196+ bitcoind.
197+
198+ #### ` torpassword ` authentication
199+
200+ For the ` -torpassword=password ` option, the password is the clear text form that
201+ was used when generating the hashed password for the ` HashedControlPassword `
202+ option in the Tor configuration file.
203+
204+ The hashed password can be obtained with the command `tor --hash-password
205+ password` (refer to the [ Tor Dev
206+ Manual] ( https://2019.www.torproject.org/docs/tor-manual.html.en ) for more
207+ details).
151208
152209## 4. Privacy recommendations
153210
0 commit comments