This page uses DarkIRC examples. Other DarkFi daemons use the same P2P profile schema but have their own configuration files, seed endpoints, and ports.
For DarkIRC, the authoritative template is
bin/darkirc/darkirc_config.toml. The generated configuration is
~/.config/darkfi/darkirc_config.toml on Linux and
~/Library/Application Support/darkfi/darkirc_config.toml on macOS.
Run DarkIRC with additional verbosity:
% ./darkirc -vv
Or configure a file log:
log = "/tmp/darkirc.log"
verbose = 2
Do not publish the complete configuration or datastore: they can contain IRC passwords, channel secrets, contact keys, and NickServ/RLN account secrets.
DagSyncFailed during initial static or rotating sync commonly means there
are no usable peer channels, although incompatible or incomplete peer data can
also cause it. Check the log in this order:
[net].active_profiles are defined by matching
[net.profiles."..."] tables.seeds or peers entries.A manual peer belongs inside its transport profile, for example:
[net]
active_profiles = ["tcp+tls"]
[net.profiles."tcp+tls"]
seeds = ["tcp+tls://lilith0.dark.fi:9600", "tcp+tls://lilith1.dark.fi:9600"]
peers = ["tcp+tls://known-peer.example:9600"]
Use an endpoint supplied by an operator you trust; the example peer hostname above is only a placeholder.
DarkIRC's default hostlist is:
~/.local/share/darkfi/darkirc/p2p_hostlist.tsv
Its path is configured in [net]:
[net]
hostlist = "~/.local/share/darkfi/darkirc/p2p_hostlist.tsv"
An empty hostlist on a first start is expected until the node learns peers. If seeds are unreachable and the hostlist has no usable entries, add a known manual peer to the appropriate profile.
The repository includes a transport-level ping utility. From
script/ping, test a complete endpoint URL:
% cargo run --release --all-features -- tcp+tls://known-peer.example:9600
A successful transport handshake prints Connected! and version information.
Run the same test from a separate network when checking whether your advertised
inbound endpoint is reachable. For example:
% cargo run --release --all-features -- tor://youraddress.onion:9600
This tests reachability, not whether the remote node has compatible DarkIRC history.
An inbound listener and its advertised address must describe the same reachable service. They are configured under the same profile:
[net.profiles."tcp+tls"]
inbound = ["tcp+tls://0.0.0.0:9600"]
external_addrs = ["tcp+tls://chat.example:9600"]
Open or forward the port in the host firewall and router. Test the
external_addrs URL from another device. Do not advertise loopback or a
private LAN address to the public network.
For Tor static and ephemeral inbound configurations, see the Tor guide.
The generated DarkIRC configuration uses the built-in tor profile, which is
implemented with Arti and does not require a separately configured Tor SOCKS5
daemon. If using the explicit socks5 profile instead, the proxy in the URL
must be running.
When onion connections fail, distinguish between:
tor without a
[net.profiles."tor"] table.Preserve logs before removing any cache. If resetting Arti state is necessary, stop every process using it first and move the state directory aside instead of deleting it immediately.
Wait for this startup message before testing IRC history or sending chat:
Event DAG synced successfully (full mode, 24 dag(s))
If it never appears, investigate sync rather than the IRC client. If it does appear, confirm:
irc_listen address;fast_mode = true fetches headers without message bodies, so it is not
suitable when the local client needs complete history.
Do not immediately delete the DarkIRC datastore. Its default path is
~/.local/share/darkfi/darkirc/darkirc_db, and it can contain local account
secrets as well as public history.
Stop DarkIRC, preserve the entire datastore and configuration, and follow the Event Graph recovery guide. If a clean resync is appropriate, move the old directory aside and start with a new empty path. Never copy individual kvdb trees between datastores.
dnet displays inbound, outbound, manual, and seed sessions through the
daemon's JSON-RPC interface. See Using dnet.
The default DarkIRC RPC listener is tcp://127.0.0.1:9605; it is local-only
unless explicitly changed. The generated config disables p2p.get_info; remove
that method from rpc_disabled_methods and restart DarkIRC before using dnet.
When reporting an issue, include the DarkIRC version, selected profiles, redacted logs, operating system, and whether the endpoint ping succeeded.