@@ -117,37 +117,94 @@ for normal IPv4/IPv6 communication, use:
117
117
118
118
## 3. Automatically create a Bitcoin Core onion service
119
119
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).
151
208
152
209
## 4. Privacy recommendations
153
210
0 commit comments