electrs: adapt to version 0.9.0
- `waitfornewblock` was previously not included in the public RPC whitelist because it's reserved for testing and marked as hidden in bitcoind. - electrs changed its verbosity settings. `-vv` is now the best choice for normal usage. - bitcoind option `dataDirReadableByGroup` is now unused. Because it can be valuable for other use cases and implementing it is intricate, we're keeping it for now. - test: keep `nc` connection open because otherwise the electrs RPC server would now close the connection before sending a response.
This commit is contained in:
parent
6f42fa8181
commit
75b89f3957
9 changed files with 60 additions and 31 deletions
|
|
@ -19,13 +19,6 @@ let
|
|||
default = "/var/lib/electrs";
|
||||
description = "The data directory for electrs.";
|
||||
};
|
||||
high-memory = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If enabled, the electrs service will sync faster on high-memory systems (≥ 8GB).
|
||||
'';
|
||||
};
|
||||
monitoringPort = mkOption {
|
||||
type = types.port;
|
||||
default = 4224;
|
||||
|
|
@ -63,7 +56,12 @@ in {
|
|||
}
|
||||
];
|
||||
|
||||
services.bitcoind.enable = true;
|
||||
services.bitcoind = {
|
||||
enable = true;
|
||||
# Enable p2p connections
|
||||
listen = true;
|
||||
extraConfig = "whitelist=download@${nbLib.address cfg.address}";
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group} - -"
|
||||
|
|
@ -80,37 +78,31 @@ in {
|
|||
serviceConfig = nbLib.defaultHardening // {
|
||||
RuntimeDirectory = "electrs";
|
||||
RuntimeDirectoryMode = "700";
|
||||
# electrs only uses the working directory for reading electrs.toml
|
||||
WorkingDirectory = "/run/electrs";
|
||||
ExecStart = ''
|
||||
${config.nix-bitcoin.pkgs.electrs}/bin/electrs -vvv \
|
||||
${if cfg.high-memory then
|
||||
traceIf (!bitcoind.dataDirReadableByGroup) ''
|
||||
Warning: For optimal electrs syncing performance, enable services.bitcoind.dataDirReadableByGroup.
|
||||
Note that this disables wallet support in bitcoind.
|
||||
'' ""
|
||||
else
|
||||
"--jsonrpc-import --index-batch-size=10"
|
||||
} \
|
||||
${config.nix-bitcoin.pkgs.electrs}/bin/electrs -vv \
|
||||
--network=${bitcoind.makeNetworkName "bitcoin" "regtest"} \
|
||||
--db-dir='${cfg.dataDir}' \
|
||||
--daemon-dir='${bitcoind.dataDir}' \
|
||||
--electrum-rpc-addr=${cfg.address}:${toString cfg.port} \
|
||||
--monitoring-addr=${cfg.address}:${toString cfg.monitoringPort} \
|
||||
--daemon-rpc-addr=${nbLib.addressWithPort bitcoind.rpc.address bitcoind.rpc.port} \
|
||||
--daemon-p2p-addr=${nbLib.addressWithPort bitcoind.address bitcoind.port} \
|
||||
${cfg.extraArgs}
|
||||
'';
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
Restart = "on-failure";
|
||||
RestartSec = "10s";
|
||||
ReadWritePaths = "${cfg.dataDir} ${if cfg.high-memory then "${bitcoind.dataDir}" else ""}";
|
||||
ReadWritePaths = cfg.dataDir;
|
||||
} // nbLib.allowedIPAddresses cfg.enforceTor;
|
||||
};
|
||||
|
||||
users.users.${cfg.user} = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
extraGroups = [ "bitcoinrpc-public" ] ++ optionals cfg.high-memory [ bitcoind.user ];
|
||||
extraGroups = [ "bitcoinrpc-public" ];
|
||||
};
|
||||
users.groups.${cfg.group} = {};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue