How to manually edit the conf file of DATUM on [Umbrel](https://umbrel.com). === 1. Login to your umbrel server. 2. Click on the settigs icon. 3. Go to advanced settings -> terminal -> umbrelOS. 4. Open the config file: ```bash sudo nano umbrel/app-data/datum/data/settings/datum_gateway_config.json ``` 5. Make your changes. 6. Go back to the main view 7. Right click on DATUM and click on restart. 8. Done! For instance, here is options that DATUM support: ``` { "bitcoind": { "rpccookiefile": ................. Path to file to read RPC cookie from, for communication with local bitcoind. (string, default: "") "rpcuser": ....................... RPC username for communication with local bitcoind. (string, default: "") "rpcpassword": ................... RPC password for communication with local bitcoind. (string, default: "") "rpcurl": ........................ RPC URL for communication with local bitcoind. (GBT Template Source) (string, REQUIRED) "work_update_seconds": ........... How many seconds between normal work updates? (5-120, 40 suggested) (integer, default: 40) "notify_fallback": ............... Fall back to less efficient methods for new block notifications. Can disable if you use blocknotify. (boolean, default: true) }, "stratum": { "listen_addr": ................... IP address to listen for Stratum Gateway connections (string, default: "") "listen_port": ................... Listening port for Stratum Gateway (integer, default: 23334) "max_clients_per_thread": ........ Maximum clients per Stratum server thread (integer, default: 128) "max_threads": ................... Maximum Stratum server threads (integer, default: 8) "max_clients": ................... Maximum total Stratum clients before rejecting connections (integer, default: 1024) "vardiff_min": ................... Work difficulty floor (integer, default: 16384) "vardiff_target_shares_min": ..... Adjust work difficulty to target this many shares per minute (integer, default: 8) "vardiff_quickdiff_count": ....... How many shares before considering a quick diff update (integer, default: 8) "vardiff_quickdiff_delta": ....... How many times faster than our target does the miner have to be before we enforce a quick diff bump (integer, default: 8) "share_stale_seconds": ........... How many seconds after a job is generated before a share submission is considered stale? (integer, default: 120) "fingerprint_miners": ............ Attempt to fingerprint miners for better use of coinbase space (boolean, default: true) "idle_timeout_no_subscribe": ..... Seconds we allow a connection to be idle without seeing a work subscription? (0 disables) (integer, default: 15) "idle_timeout_no_shares": ........ Seconds we allow a subscribed connection to be idle without seeing at least one accepted share? (0 disables) (integer, default: 7200) "idle_timeout_max_last_work": .... Seconds we allow a subscribed connection to be idle since its last accepted share? (0 disables) (integer, default: 0) }, "mining": { "pool_address": .................. Bitcoin address used for mining rewards. (string, REQUIRED) "coinbase_tag_primary": .......... Text to have in the primary coinbase tag when not using pool (overridden by DATUM Pool) (string, default: "DATUM Gateway") "coinbase_tag_secondary": ........ Text to have in the secondary coinbase tag (Short name/identifier) (string, default: "DATUM User") "coinbase_unique_id": ............ A unique ID between 1 and 65535. This is appended to the coinbase. Make unique per instance of datum with the same coinbase tags. (integer, default: 4242) "save_submitblocks_dir": ......... Directory to save all submitted blocks to as submitblock JSON files (string, default: "") }, "api": { "admin_password": ................ API password for actions/changes (username 'admin'; disabled if blank) (string, default: "") "listen_addr": ................... IP address to listen for API/dashboard requests (string, default: "") "listen_port": ................... Port to listen for API/dashboard requests (0=disabled) (integer, default: 0) "modify_conf": ................... Enable modifying the config file from API/dashboard (boolean, default: false) }, "extra_block_submissions": { "urls": .......................... Array of bitcoind RPC URLs to submit our blocks to directly. Include auth info: http://user:pass@IP (string_array) }, "logger": { "log_to_console": ................ Enable logging of messages to the console (boolean, default: true) "log_to_stderr": ................. Log console messages to stderr *instead* of stdout (boolean, default: false) "log_to_file": ................... Enable logging of messages to a file (boolean, default: false) "log_file": ...................... Path to file to write log messages, when enabled (string, default: "") "log_rotate_daily": .............. Rotate the message log file at midnight (boolean, default: true) "log_calling_function": .......... Log the name of the calling function when logging (boolean, default: true) "log_level_console": ............. Minimum log level for console messages (0=All, 1=Debug, 2=Info, 3=Warn, 4=Error, 5=Fatal) (integer, default: 2) "log_level_file": ................ Minimum log level for log file messages (0=All, 1=Debug, 2=Info, 3=Warn, 4=Error, 5=Fatal) (integer, default: 1) }, "datum": { "pool_host": ..................... Remote DATUM server host/ip to use for decentralized pooled mining (set to "" to disable pooled mining) (string, default: "datum-beta1.mine.ocean.xyz") "pool_port": ..................... Remote DATUM server port (integer, default: 28915) "pool_pubkey": ................... Public key of the DATUM server for initiating encrypted connection. Get from secure location, or set to empty to auto-fetch. (string, default: "f21f2f0ef0aa1970468f22bad9bb7f4535146f8e4a8f646bebc93da3d89b1406f40d032f09a417d94dc068055df654937922d2c89522e3e8f6f0e649de473003") "pool_pass_workers": ............. Pass stratum miner usernames as sub-worker names to the pool (pool_username.miner's username) (boolean, default: true) "pool_pass_full_users": .......... Pass stratum miner usernames as raw usernames to the pool (use if putting multiple payout addresses on miners behind this gateway) (boolean, default: true) "always_pay_self": ............... Always include my datum.pool_username payout in my blocks if possible (boolean, default: true) "pooled_mining_only": ............ If the DATUM pool server becomes unavailable, terminate miner connections (otherwise, 100% of any blocks you find pay mining.pool_address) (boolean, default: true) "protocol_global_timeout": ....... If no valid messages are received from the DATUM server in this many seconds, give up and try to reconnect (integer, default: 60) } } ``` > [!NOTE] > If you break DATUM with a wrong config file you just have to uninstall and reinstall DATUM to fix it.