[Proposal] Standardized Configuration Profiles and Interactive Setup Assistant for DigiByte Core #398
JohnnyLawDGB
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
DIP Draft: DigiByte Core Configuration Profiles & Setup Assistant
Abstract
This proposal defines a set of standardized DigiByte Core configuration profiles targeting common node operation use cases, along with an interactive setup assistant that generates a tailored
digibyte.conffile based on operator-provided hardware and purpose constraints. The profiles and assistant are initially distributed as community tooling alongside Core, with the possibility of future integration into the Core distribution.Motivation
DigiByte Core exposes more than 50 configuration options. Defaults are conservative and safe, but rarely optimal for any specific use case. Operators currently face several recurring problems:
dbcache, or an exchange service withmaxconnections=125).A standardized set of profiles backed by a guided setup tool reduces friction, reduces misconfiguration, and provides a single source of truth for "how to run Core for X".
Specification
Profile Definitions
Seven canonical profiles are defined. Each profile is a named configuration template with concrete values for the most impactful settings. Operators may start from any profile and customize further.
archivalpruned-standardpruned-lightminerexchange-serviceindexerdev-testnetProfile Parameters
Each profile SHALL specify concrete values for the following parameters (where applicable):
Storage & Pruning
prune— 0 (archival) or target MBdbcache— leveldb cache in MBmaxmempool— mempool cap in MBIndexing
txindex— 0 or 1addressindex— 0 or 1 (where applicable)timestampindex— 0 or 1 (where applicable)spentindex— 0 or 1 (where applicable)Networking
listen— 0 or 1maxconnections— integermaxuploadtarget— MB/day or 0 for unlimitedpeerbloomfilters— 0 or 1bantime— secondsRPC
server— 0 or 1rpcbind— interface addressrpcallowip— permitted source CIDRsrpcworkqueue— queue depthrpcthreads— worker thread countZeroMQ (service profiles)
zmqpubrawblock— publisher endpointzmqpubrawtx— publisher endpointzmqpubhashblock— publisher endpointReference Templates
Each profile SHALL have a corresponding reference template file named
digibyte-<profile>.conf.examplecontaining:Templates SHOULD be versioned alongside DigiByte Core releases to account for new parameters introduced in each Core version.
Setup Assistant
An interactive setup assistant SHALL be provided as a reference implementation. The assistant:
digibyte.confto the appropriate datadirRecommended question set:
addressindextxindexThe assistant SHOULD default to the most restrictive/secure settings when an answer is ambiguous. RPC MUST default to localhost-only binding unless the operator explicitly opts in to remote access, in which case the assistant SHOULD warn about the risks and require a generated strong password.
Distribution
Initial distribution is via a community-maintained repository containing:
profiles/— Reference.conf.exampletemplates for each profilesetup-assistant/— Reference implementation of the interactive tooldocs/— Detailed documentation of each profile and parameterThe repository is independent of DigiByte Core and tracks Core releases.
Rationale
Why profiles instead of per-parameter documentation?
Profiles capture the intent behind a configuration, not just the individual values. A user who wants to run a mining node benefits from having one canonical "miner" configuration rather than reading docs for 50 parameters and making judgment calls on each.
Why a separate tool instead of integrating into Core?
Ship and iterate faster. Community tooling can be refined without going through Core's release cycle. Once the profiles and assistant have been validated through real-world use, specific primitives (template files, profile flags) can be proposed for inclusion in Core in a later release.
Why the specific profile set?
The proposed profiles cover the dominant real-world use cases observed across the DigiByte ecosystem: wallets, mining operations, exchange backends, indexing services, and development environments. A smaller set is preferred over exhaustive coverage to reduce confusion.
Why an 8-question limit for the assistant?
Research on onboarding flows suggests completion rates drop sharply beyond ~10 questions. The 8-question limit keeps the assistant usable while collecting enough information to select a profile and the most impactful overrides.
Backwards Compatibility
This proposal introduces no changes to DigiByte Core. The profiles use existing configuration parameters and the assistant generates standard
digibyte.conffiles that Core already supports.Future work may propose:
contrib/directory-profile=<name>command-line flag todigibytedthat loads a named profileThese are explicitly out of scope for the initial proposal.
Reference Implementation
A reference implementation will be provided in a community-maintained repository containing:
.conf.examplefiles, one per profileThe reference implementation will target the current DigiByte Core release and be updated as new Core versions introduce configuration changes.
Security Considerations
Default-deny for network exposure. The assistant MUST NOT generate a configuration that exposes RPC beyond localhost without the operator explicitly opting in and understanding the implications. When remote RPC is enabled, the assistant SHALL:
rpcpasswordusing the operator's OS-native randomnessrpcbindto a specific interface rather than0.0.0.0rpcallowipProfile integrity. Reference templates SHOULD be distributed with accompanying SHA-256 hashes and ideally GPG signatures from the maintainer. The setup assistant SHOULD verify template integrity before use.
Parameter drift. As Core adds or changes parameters between releases, stale profile templates may produce invalid configurations. Profile templates MUST declare which Core version they target, and the setup assistant MUST warn if the target version differs from the installed Core binary.
No secret storage. The assistant MUST NOT persist generated passwords or credentials anywhere except the generated
digibyte.conf. Operators are responsible for securing the resulting file with appropriate filesystem permissions.Copyright
This proposal is placed in the public domain.
Beta Was this translation helpful? Give feedback.
All reactions