├── .gitattributes ├── .gitbook └── assets │ ├── CDNSsave.png │ ├── DNS-records.png │ ├── DNSSECdisable.png │ ├── Fulcrum_logo │ ├── PostgreSQL-Logo-white.png │ ├── Starting_MiniBolt.gif │ ├── action_filter_relay_cloudflare.png │ ├── active-domain-cloudflare.png │ ├── add-record-DNS-records.png │ ├── add_new_cname_tunnel_mod.png │ ├── advice-private-key-imported.PNG │ ├── alby-account.png │ ├── alby-create.PNG │ ├── alby-login-create.PNG │ ├── android-nym-proxy.jpg │ ├── authorized-tunnel.png │ ├── bitbox-app-nym-proxy-check.PNG │ ├── bitcoin-testnet.PNG │ ├── bitcoin_god.jpg │ ├── bonus-logo.png │ ├── broadcast-relay.png │ ├── btc-pay-banner.png │ ├── btc-rpc-explorer-blacklisted.PNG │ ├── btc_rpc_explorer_logo.png │ ├── calendar.png │ ├── channel_backup_screen.png │ ├── cloudflare-nameservers.png │ ├── cloudflared-auth-1.PNG │ ├── cloudflared-auth-3.PNG │ ├── cloudflared-connection.PNG │ ├── configuration.jpg │ ├── core_logo.png │ ├── create-import-nostr-alby.PNG │ ├── demo-install-os.gif │ ├── dns-records-uuid.png │ ├── electrum-nym-proxy-nodes │ ├── electrum-nym-proxy-nodes.webp │ ├── electrum-nym-proxy.PNG │ ├── freemyip_available.png │ ├── freemyip_domain_added.png │ ├── freemyip_start.png │ ├── fulcrum-index-finished.PNG │ ├── fulcrum-index.PNG │ ├── golang.png │ ├── green-wallet-nym-proxy.PNG │ ├── host_filter_relay_cloudflare.png │ ├── i2pd_webconsole.png │ ├── keybase-nym-proxy.PNG │ ├── librewolf-socks5-nym-proxy.PNG │ ├── lightning.jpg │ ├── list.png │ ├── lnd-watchtower_log.PNG │ ├── login-onetime-alby.PNG │ ├── logo_bisq.png │ ├── minibolt-home-screen-og.png │ ├── network-diagram-cloudflared.png │ ├── networkmap_icon.png │ ├── nostr-arch.PNG │ ├── nostr-public-key-alby.PNG │ ├── nostr-relay-gif.gif │ ├── nostr_relay_allow_tor.png │ ├── nunckuk_nym.PNG │ ├── nunckuk_nym_settings.PNG │ ├── nym-build-structure.png │ ├── nym-connect.PNG │ ├── nym-mixnet.gif │ ├── nym-one-server-proxy-nym.PNG │ ├── nymtopology-NYM Networkmap socks5.drawio.png │ ├── operating-system.gif │ ├── pass-alby.PNG │ ├── password_strength.png │ ├── pimp-command-line-2.PNG │ ├── pimp-command-line.PNG │ ├── preparations.jpg │ ├── privacy.jpg │ ├── private-key-method-import-alby.PNG │ ├── private-key-nostr.PNG │ ├── proxy-server-nym │ ├── proxy-server-nym.png │ ├── pushed-backup-amboss.png │ ├── relay-connected-nostr-debug.PNG │ ├── relay-connection.PNG │ ├── relay-test-connected.PNG │ ├── remote-access.png │ ├── roadmap_icon.png │ ├── rust-logo.png │ ├── samplelogs_action_filter_relay_cloudflare.png │ ├── security.jpg │ ├── seed-saved-alby.PNG │ ├── seeds-nostr-keys-alby.PNG │ ├── select-nostr-alby.png │ ├── sparrow-private-server-proxy-nym.PNG │ ├── sparrow-server-nym-proxy │ ├── sparrow-server-public.PNG │ ├── sparrow_wallet_logo.png │ ├── start-alby.png │ ├── static-ip-custom-dns.PNG │ ├── static-ip-dns-gif.gif │ ├── static-ip-dns.PNG │ ├── storage-secondary-disk.gif │ ├── streams.png │ ├── system-PC.jpg │ ├── system_overview.png │ ├── telegram-app-nym-proxy-available.jpg │ ├── telegram-app-nym-proxy-connected.jpg │ ├── telegram-nym-proxy.PNG │ ├── tg-app-nym-proxy-qr.jpg │ ├── tgfoss-build-under-win.gif │ ├── thunderhub_logo.png │ ├── tor-proxy-browser.png │ ├── tor_bridge_midguard_relay_pan.png │ ├── tor_keyring_error.png │ ├── troubleshooting.png │ ├── websocket_allowInsecureFromHTTPS_nostr_relay.png │ ├── whitepaper_screen.png │ ├── wireguardVPN_windows.png │ ├── zeus.png │ └── zeus_logo.png ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── support.md └── pull_request_template.md ├── LICENSE ├── README.md ├── SUMMARY.md ├── bitcoin └── bitcoin │ ├── README.md │ ├── bitcoin-client.md │ ├── blockchain-explorer.md │ ├── desktop-signing-app-sparrow.md │ └── electrum-server.md ├── bonus-guides ├── bitcoin │ └── btcpay-server.md ├── networking │ ├── README.md │ ├── cloudflare-tunnel.md │ ├── tor-services.md │ └── wireguard-vpn.md ├── nostr │ ├── README.md │ └── nostr-relay.md ├── security │ ├── README.md │ └── ssh-keys.md └── system │ ├── go.md │ ├── postgresql.md │ ├── rustup-+-cargo.md │ ├── static-ip-and-custom-dns-servers.md │ └── system-overview.md ├── bonus ├── bitcoin │ ├── README.md │ ├── bisq.md │ ├── electrs.md │ ├── electrum-wallet-desktop.md │ ├── minibolt-on-testnet.md │ ├── ordisrespector.md │ ├── safu-ninja.md │ └── white-paper.md └── system │ ├── README.md │ ├── aliases.md │ ├── command-line.md │ ├── nodejs-npm.md │ └── store-data-secondary-disk.md ├── images ├── 30_mastering_bitcoin_book.jpg ├── SSH-keys.png ├── aliases-demo.PNG ├── bisq-update.png ├── bitcoin-core-logo-trans.png ├── bitcoin-network-small.png ├── bitcoin-ots-check.PNG ├── blockplate_crush.png ├── desec-account.png ├── desec_io0.png ├── desec_io1.png ├── desec_io10.png ├── desec_io2.png ├── desec_io3.png ├── desec_io7.PNG ├── desec_io8.png ├── diy-steel-mnemonic-backup.png ├── electrs-logo.png ├── electrum-wallet-local.PNG ├── electrum-wallet-tor-check.PNG ├── electrum-wallet-tor.png ├── electrum-win-shortcut-local.PNG ├── electrum-win-shortcut-tor.PNG ├── electrum_wallet_logo.png ├── fulcrum.png ├── get-bridge.PNG ├── i2p-troubleshoting.png ├── i2pd.png ├── lightning-network-daemon-logo.png ├── minibolt-home-screen-og.png ├── minibolt-home-screen.png ├── minibolt-logo.png ├── mnemonics-to-seed-to-private-key.png ├── nodejs-logo.png ├── npm-logo.png ├── nyx-tor-bridge.png ├── ordisrespector-btcrpcexplorer-notfound.png ├── ordisrespector-mempool-blocks.png ├── ordisrespector-mempool-cube-tx.png ├── ordisrespector-mempool-notfound.PNG ├── ordisrespector-mempool-space-tx.png ├── ordisrespector-thread.png ├── preparations_xkcd.png ├── remote-scb-backup.png ├── safu-ninja-stress-test-result.PNG ├── sparrow-electrum-no-proxy.png ├── sparrow-electrum-tor-no-proxy.png ├── sparrow-server-icon.png ├── sparrow-server-logo.png ├── sparrow-server-proxy-icons.png ├── sparrow-server-terminal.png ├── sparrow-server.png ├── sparrow-stages.png ├── sparrow-tor-proxy.png ├── store-data-secondary-disk.PNG ├── tor-bridge-running.png ├── tor-bridge.png ├── tor-censorship.png ├── tor-failing.jpg ├── tor-logo.png ├── ubuntu-profile-setup.PNG ├── update-action.PNG ├── white-paper-transac.png ├── wireguard-VPN.png ├── wireguard-windows.png └── wireguard.png ├── index-1 ├── configuration.md ├── operating-system.md ├── preparations.md ├── privacy.md ├── remote-access.md └── security.md ├── lightning ├── README.md ├── channel-backup.md ├── lightning-client.md ├── mobile-app.md └── web-app.md ├── resources ├── .bash_aliases ├── favicon.ico ├── favicons │ ├── favicon+B_ico.ico │ ├── favicon+B_png.png │ ├── favicon-B.ico │ └── favicon-L.ico ├── fulcrum-banner-testnet4.txt ├── fulcrum-banner.txt ├── home_screen │ ├── minibolt-home-screen-og.png │ └── minibolt-home-screen.png ├── logos │ ├── channels │ │ ├── photo_2022-12-23_17-54-26.jpg │ │ └── photo_2022-12-23_18-41-18.jpg │ ├── logo-quater.png │ ├── logo-quater_trans_png.png │ ├── logo-quater_trans_webp.webp │ ├── logo_circle+B.png │ ├── logo_circle-B.png │ ├── logo_circle_trans_png.png │ └── logo_quater_minibolt_text.png ├── networkmap.drawio.png └── ordisrespector.patch └── system └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.md linguist-detectable -------------------------------------------------------------------------------- /.gitbook/assets/CDNSsave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/CDNSsave.png -------------------------------------------------------------------------------- /.gitbook/assets/DNS-records.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/DNS-records.png -------------------------------------------------------------------------------- /.gitbook/assets/DNSSECdisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/DNSSECdisable.png -------------------------------------------------------------------------------- /.gitbook/assets/Fulcrum_logo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/Fulcrum_logo -------------------------------------------------------------------------------- /.gitbook/assets/PostgreSQL-Logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/PostgreSQL-Logo-white.png -------------------------------------------------------------------------------- /.gitbook/assets/Starting_MiniBolt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/Starting_MiniBolt.gif -------------------------------------------------------------------------------- /.gitbook/assets/action_filter_relay_cloudflare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/action_filter_relay_cloudflare.png -------------------------------------------------------------------------------- /.gitbook/assets/active-domain-cloudflare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/active-domain-cloudflare.png -------------------------------------------------------------------------------- /.gitbook/assets/add-record-DNS-records.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/add-record-DNS-records.png -------------------------------------------------------------------------------- /.gitbook/assets/add_new_cname_tunnel_mod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/add_new_cname_tunnel_mod.png -------------------------------------------------------------------------------- /.gitbook/assets/advice-private-key-imported.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/advice-private-key-imported.PNG -------------------------------------------------------------------------------- /.gitbook/assets/alby-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/alby-account.png -------------------------------------------------------------------------------- /.gitbook/assets/alby-create.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/alby-create.PNG -------------------------------------------------------------------------------- /.gitbook/assets/alby-login-create.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/alby-login-create.PNG -------------------------------------------------------------------------------- /.gitbook/assets/android-nym-proxy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/android-nym-proxy.jpg -------------------------------------------------------------------------------- /.gitbook/assets/authorized-tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/authorized-tunnel.png -------------------------------------------------------------------------------- /.gitbook/assets/bitbox-app-nym-proxy-check.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/bitbox-app-nym-proxy-check.PNG -------------------------------------------------------------------------------- /.gitbook/assets/bitcoin-testnet.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/bitcoin-testnet.PNG -------------------------------------------------------------------------------- /.gitbook/assets/bitcoin_god.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/bitcoin_god.jpg -------------------------------------------------------------------------------- /.gitbook/assets/bonus-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/bonus-logo.png -------------------------------------------------------------------------------- /.gitbook/assets/broadcast-relay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/broadcast-relay.png -------------------------------------------------------------------------------- /.gitbook/assets/btc-pay-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/btc-pay-banner.png -------------------------------------------------------------------------------- /.gitbook/assets/btc-rpc-explorer-blacklisted.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/btc-rpc-explorer-blacklisted.PNG -------------------------------------------------------------------------------- /.gitbook/assets/btc_rpc_explorer_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/btc_rpc_explorer_logo.png -------------------------------------------------------------------------------- /.gitbook/assets/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/calendar.png -------------------------------------------------------------------------------- /.gitbook/assets/channel_backup_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/channel_backup_screen.png -------------------------------------------------------------------------------- /.gitbook/assets/cloudflare-nameservers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/cloudflare-nameservers.png -------------------------------------------------------------------------------- /.gitbook/assets/cloudflared-auth-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/cloudflared-auth-1.PNG -------------------------------------------------------------------------------- /.gitbook/assets/cloudflared-auth-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/cloudflared-auth-3.PNG -------------------------------------------------------------------------------- /.gitbook/assets/cloudflared-connection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/cloudflared-connection.PNG -------------------------------------------------------------------------------- /.gitbook/assets/configuration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/configuration.jpg -------------------------------------------------------------------------------- /.gitbook/assets/core_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/core_logo.png -------------------------------------------------------------------------------- /.gitbook/assets/create-import-nostr-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/create-import-nostr-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/demo-install-os.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/demo-install-os.gif -------------------------------------------------------------------------------- /.gitbook/assets/dns-records-uuid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/dns-records-uuid.png -------------------------------------------------------------------------------- /.gitbook/assets/electrum-nym-proxy-nodes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/electrum-nym-proxy-nodes -------------------------------------------------------------------------------- /.gitbook/assets/electrum-nym-proxy-nodes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/electrum-nym-proxy-nodes.webp -------------------------------------------------------------------------------- /.gitbook/assets/electrum-nym-proxy.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/electrum-nym-proxy.PNG -------------------------------------------------------------------------------- /.gitbook/assets/freemyip_available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/freemyip_available.png -------------------------------------------------------------------------------- /.gitbook/assets/freemyip_domain_added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/freemyip_domain_added.png -------------------------------------------------------------------------------- /.gitbook/assets/freemyip_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/freemyip_start.png -------------------------------------------------------------------------------- /.gitbook/assets/fulcrum-index-finished.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/fulcrum-index-finished.PNG -------------------------------------------------------------------------------- /.gitbook/assets/fulcrum-index.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/fulcrum-index.PNG -------------------------------------------------------------------------------- /.gitbook/assets/golang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/golang.png -------------------------------------------------------------------------------- /.gitbook/assets/green-wallet-nym-proxy.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/green-wallet-nym-proxy.PNG -------------------------------------------------------------------------------- /.gitbook/assets/host_filter_relay_cloudflare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/host_filter_relay_cloudflare.png -------------------------------------------------------------------------------- /.gitbook/assets/i2pd_webconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/i2pd_webconsole.png -------------------------------------------------------------------------------- /.gitbook/assets/keybase-nym-proxy.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/keybase-nym-proxy.PNG -------------------------------------------------------------------------------- /.gitbook/assets/librewolf-socks5-nym-proxy.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/librewolf-socks5-nym-proxy.PNG -------------------------------------------------------------------------------- /.gitbook/assets/lightning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/lightning.jpg -------------------------------------------------------------------------------- /.gitbook/assets/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/list.png -------------------------------------------------------------------------------- /.gitbook/assets/lnd-watchtower_log.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/lnd-watchtower_log.PNG -------------------------------------------------------------------------------- /.gitbook/assets/login-onetime-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/login-onetime-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/logo_bisq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/logo_bisq.png -------------------------------------------------------------------------------- /.gitbook/assets/minibolt-home-screen-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/minibolt-home-screen-og.png -------------------------------------------------------------------------------- /.gitbook/assets/network-diagram-cloudflared.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/network-diagram-cloudflared.png -------------------------------------------------------------------------------- /.gitbook/assets/networkmap_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/networkmap_icon.png -------------------------------------------------------------------------------- /.gitbook/assets/nostr-arch.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nostr-arch.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nostr-public-key-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nostr-public-key-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nostr-relay-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nostr-relay-gif.gif -------------------------------------------------------------------------------- /.gitbook/assets/nostr_relay_allow_tor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nostr_relay_allow_tor.png -------------------------------------------------------------------------------- /.gitbook/assets/nunckuk_nym.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nunckuk_nym.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nunckuk_nym_settings.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nunckuk_nym_settings.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nym-build-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nym-build-structure.png -------------------------------------------------------------------------------- /.gitbook/assets/nym-connect.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nym-connect.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nym-mixnet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nym-mixnet.gif -------------------------------------------------------------------------------- /.gitbook/assets/nym-one-server-proxy-nym.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nym-one-server-proxy-nym.PNG -------------------------------------------------------------------------------- /.gitbook/assets/nymtopology-NYM Networkmap socks5.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/nymtopology-NYM Networkmap socks5.drawio.png -------------------------------------------------------------------------------- /.gitbook/assets/operating-system.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/operating-system.gif -------------------------------------------------------------------------------- /.gitbook/assets/pass-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/pass-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/password_strength.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/password_strength.png -------------------------------------------------------------------------------- /.gitbook/assets/pimp-command-line-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/pimp-command-line-2.PNG -------------------------------------------------------------------------------- /.gitbook/assets/pimp-command-line.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/pimp-command-line.PNG -------------------------------------------------------------------------------- /.gitbook/assets/preparations.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/preparations.jpg -------------------------------------------------------------------------------- /.gitbook/assets/privacy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/privacy.jpg -------------------------------------------------------------------------------- /.gitbook/assets/private-key-method-import-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/private-key-method-import-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/private-key-nostr.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/private-key-nostr.PNG -------------------------------------------------------------------------------- /.gitbook/assets/proxy-server-nym: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/proxy-server-nym -------------------------------------------------------------------------------- /.gitbook/assets/proxy-server-nym.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/proxy-server-nym.png -------------------------------------------------------------------------------- /.gitbook/assets/pushed-backup-amboss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/pushed-backup-amboss.png -------------------------------------------------------------------------------- /.gitbook/assets/relay-connected-nostr-debug.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/relay-connected-nostr-debug.PNG -------------------------------------------------------------------------------- /.gitbook/assets/relay-connection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/relay-connection.PNG -------------------------------------------------------------------------------- /.gitbook/assets/relay-test-connected.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/relay-test-connected.PNG -------------------------------------------------------------------------------- /.gitbook/assets/remote-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/remote-access.png -------------------------------------------------------------------------------- /.gitbook/assets/roadmap_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/roadmap_icon.png -------------------------------------------------------------------------------- /.gitbook/assets/rust-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/rust-logo.png -------------------------------------------------------------------------------- /.gitbook/assets/samplelogs_action_filter_relay_cloudflare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/samplelogs_action_filter_relay_cloudflare.png -------------------------------------------------------------------------------- /.gitbook/assets/security.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/security.jpg -------------------------------------------------------------------------------- /.gitbook/assets/seed-saved-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/seed-saved-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/seeds-nostr-keys-alby.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/seeds-nostr-keys-alby.PNG -------------------------------------------------------------------------------- /.gitbook/assets/select-nostr-alby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/select-nostr-alby.png -------------------------------------------------------------------------------- /.gitbook/assets/sparrow-private-server-proxy-nym.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/sparrow-private-server-proxy-nym.PNG -------------------------------------------------------------------------------- /.gitbook/assets/sparrow-server-nym-proxy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/sparrow-server-nym-proxy -------------------------------------------------------------------------------- /.gitbook/assets/sparrow-server-public.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/sparrow-server-public.PNG -------------------------------------------------------------------------------- /.gitbook/assets/sparrow_wallet_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/sparrow_wallet_logo.png -------------------------------------------------------------------------------- /.gitbook/assets/start-alby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/start-alby.png -------------------------------------------------------------------------------- /.gitbook/assets/static-ip-custom-dns.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/static-ip-custom-dns.PNG -------------------------------------------------------------------------------- /.gitbook/assets/static-ip-dns-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/static-ip-dns-gif.gif -------------------------------------------------------------------------------- /.gitbook/assets/static-ip-dns.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/static-ip-dns.PNG -------------------------------------------------------------------------------- /.gitbook/assets/storage-secondary-disk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/storage-secondary-disk.gif -------------------------------------------------------------------------------- /.gitbook/assets/streams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/streams.png -------------------------------------------------------------------------------- /.gitbook/assets/system-PC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/system-PC.jpg -------------------------------------------------------------------------------- /.gitbook/assets/system_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/system_overview.png -------------------------------------------------------------------------------- /.gitbook/assets/telegram-app-nym-proxy-available.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/telegram-app-nym-proxy-available.jpg -------------------------------------------------------------------------------- /.gitbook/assets/telegram-app-nym-proxy-connected.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/telegram-app-nym-proxy-connected.jpg -------------------------------------------------------------------------------- /.gitbook/assets/telegram-nym-proxy.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/telegram-nym-proxy.PNG -------------------------------------------------------------------------------- /.gitbook/assets/tg-app-nym-proxy-qr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/tg-app-nym-proxy-qr.jpg -------------------------------------------------------------------------------- /.gitbook/assets/tgfoss-build-under-win.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/tgfoss-build-under-win.gif -------------------------------------------------------------------------------- /.gitbook/assets/thunderhub_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/thunderhub_logo.png -------------------------------------------------------------------------------- /.gitbook/assets/tor-proxy-browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/tor-proxy-browser.png -------------------------------------------------------------------------------- /.gitbook/assets/tor_bridge_midguard_relay_pan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/tor_bridge_midguard_relay_pan.png -------------------------------------------------------------------------------- /.gitbook/assets/tor_keyring_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/tor_keyring_error.png -------------------------------------------------------------------------------- /.gitbook/assets/troubleshooting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/troubleshooting.png -------------------------------------------------------------------------------- /.gitbook/assets/websocket_allowInsecureFromHTTPS_nostr_relay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/websocket_allowInsecureFromHTTPS_nostr_relay.png -------------------------------------------------------------------------------- /.gitbook/assets/whitepaper_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/whitepaper_screen.png -------------------------------------------------------------------------------- /.gitbook/assets/wireguardVPN_windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/wireguardVPN_windows.png -------------------------------------------------------------------------------- /.gitbook/assets/zeus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/zeus.png -------------------------------------------------------------------------------- /.gitbook/assets/zeus_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/.gitbook/assets/zeus_logo.png -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG] " 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Describe the bug 11 | 12 | A clear and concise description of what the bug is. 13 | 14 | ### Location in guide 15 | 16 | Link to the corresponding page and section on 17 | 18 | ### Expected behavior 19 | 20 | A clear and concise description of what you expected to happen. 21 | 22 | ### Screenshots 23 | 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | ### Environment 27 | 28 | - Hardware platform: [e.g. Intel, AMD, ... ] 29 | - Operating system: [e.g, Ubuntu Server, Debian, Linux Mint ... ] 30 | - Version: [ output of `lsb_release -d` ] 31 | 32 | ### Additional context 33 | 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE REQ] " 5 | labels: feature request 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### What & why 11 | 12 | Is your feature request related to a problem, or a new addition to the guide? Provide a clear and concise description of what you'd like added to the MiniBolt guide. If possible, please phrase it as a user story: 13 | 14 | > As a [description of user], I want [functionality] so that [benefit]. 15 | 16 | ### How 17 | 18 | Describe the solution you're thinking of. Provide a clear and concise description of what you want to happen. Did you consider alternative options? 19 | 20 | ### Additional context 21 | 22 | Add any other context or screenshots about the feature request here. 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/support.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Support question 3 | about: Ask for help if you're stuck 4 | title: "[SUPPORT] " 5 | labels: support 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Describe the bug 11 | 12 | A clear and concise description of what the bug is. 13 | 14 | ### Location in guide 15 | 16 | Link to the corresponding page and section on 17 | 18 | ### Expected behavior 19 | 20 | A clear and concise description of what you expected to happen. 21 | 22 | ### Screenshots 23 | 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | ### Environment 27 | 28 | - Hardware platform: [e.g. Intel, AMD, ... ] 29 | - Operating system: [e.g, Ubuntu Server, Debian, Linux Mint ... ] 30 | - Version: [ output of `lsb_release -d` ] 31 | 32 | ### Additional context 33 | 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | #### What 2 | 3 | What is the reason for this change? 4 | 5 | #### Why 6 | 7 | Why is this change important? 8 | 9 | #### How 10 | 11 | How was this change accomplished? 12 | 13 | #### Scope 14 | 15 | - [ ] significant change to core configuration 16 | - [ ] independent bonus guide 17 | - [ ] simple bug fix 18 | 19 | Fixes # (link issue) 20 | 21 | #### Test & maintenance 22 | 23 | How can the changes be tested? Is there ongoing maintenance effort? If this is a bonus guide: are you willing to update it from time to time? 24 | 25 | #### Animated GIF (optional) 26 | 27 | Add some snazz if you feel like it :) 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2020 Stadicus 4 | Copyright (c) 2021-2022 RaspiBolt contributors 5 | Copyright (c) 2025 2FakTor 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | ## Home 4 | 5 | * [MiniBolt](README.md) 6 | 7 | ## 🖥️ System 8 | 9 | * [1. System](system/README.md) 10 | * [1.1 Preparations](index-1/preparations.md) 11 | * [1.2 Operating system](index-1/operating-system.md) 12 | * [1.3 Remote access](index-1/remote-access.md) 13 | * [1.4 Configuration](index-1/configuration.md) 14 | * [1.5 Security](index-1/security.md) 15 | * [1.6 Privacy](index-1/privacy.md) 16 | 17 | ## ₿itcoin 18 | 19 | * [2. ₿itcoin](bitcoin/bitcoin/README.md) 20 | * [2.1 Bitcoin client: Bitcoin Core](bitcoin/bitcoin/bitcoin-client.md) 21 | * [2.2 Electrum Server: Fulcrum](bitcoin/bitcoin/electrum-server.md) 22 | * [2.3 Blockchain explorer: BTC RPC Explorer](bitcoin/bitcoin/blockchain-explorer.md) 23 | * [2.4 Desktop signing app: Sparrow Wallet](bitcoin/bitcoin/desktop-signing-app-sparrow.md) 24 | 25 | ## ⚡ Lightning 26 | 27 | * [3. Lightning](lightning/README.md) 28 | * [3.1 Lightning client: LND](lightning/lightning-client.md) 29 | * [3.2 Channel backup for LND](lightning/channel-backup.md) 30 | * [3.3 Web app: ThunderHub](lightning/web-app.md) 31 | * [3.4 Mobile app: Zeus](lightning/mobile-app.md) 32 | 33 | ## ➕ Bonus guides 34 | 35 | * [🖥️ System](bonus/system/README.md) 36 | * [Pimp the command line](bonus/system/command-line.md) 37 | * [System Overview](bonus-guides/system/system-overview.md) 38 | * [Aliases](bonus/system/aliases.md) 39 | * [Static IP & custom DNS servers](bonus-guides/system/static-ip-and-custom-dns-servers.md) 40 | * [Node + NPM](bonus/system/nodejs-npm.md) 41 | * [Rustup + Cargo](bonus-guides/system/rustup-+-cargo.md) 42 | * [Go](bonus-guides/system/go.md) 43 | * [PostgreSQL](bonus-guides/system/postgresql.md) 44 | * [Store data in a secondary disk](bonus/system/store-data-secondary-disk.md) 45 | * [₿itcoin](bonus/bitcoin/README.md) 46 | * [Electrs](bonus/bitcoin/electrs.md) 47 | * [Electrum Wallet Desktop](bonus/bitcoin/electrum-wallet-desktop.md) 48 | * [Bisq](bonus/bitcoin/bisq.md) 49 | * [Safu Ninja, a DIY steel mnemonic backup](bonus/bitcoin/safu-ninja.md) 50 | * [Ordisrespector spam filter](bonus/bitcoin/ordisrespector.md) 51 | * [Download the bitcoin whitepaper](bonus/bitcoin/white-paper.md) 52 | * [BTCPay Server](bonus-guides/bitcoin/btcpay-server.md) 53 | * [MiniBolt on Testnet](bonus/bitcoin/minibolt-on-testnet.md) 54 | * [🦩 Nostr](bonus-guides/nostr/README.md) 55 | * [Nostr relay in Rust](bonus-guides/nostr/nostr-relay.md) 56 | * [🛡️ Security](bonus-guides/security/README.md) 57 | * [Login with SSH keys](bonus-guides/security/ssh-keys.md) 58 | * [🌐 Networking](bonus-guides/networking/README.md) 59 | * [WireGuard VPN](bonus-guides/networking/wireguard-vpn.md) 60 | * [Tor services: bridges & relays](bonus-guides/networking/tor-services.md) 61 | * [Cloudflare tunnel](bonus-guides/networking/cloudflare-tunnel.md) 62 | -------------------------------------------------------------------------------- /bitcoin/bitcoin/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bitcoin 3 | nav_order: 30 4 | has_children: true 5 | layout: 6 | title: 7 | visible: true 8 | description: 9 | visible: false 10 | tableOfContents: 11 | visible: true 12 | outline: 13 | visible: true 14 | pagination: 15 | visible: true 16 | --- 17 | 18 | # 2. ₿itcoin 19 | 20 |
21 | 22 | The base of a sovereign Bitcoin node is a fully validating [Bitcoin client](bitcoin-client.md). It will download the whole blockchain and validate every single transaction that ever happened. After this verification, the client can check the validity of all future transactions. 23 | 24 | Your [Bitcoin client](bitcoin-client.md) also acts as a data source for other applications, like the [Electrum server](electrum-server.md) (to use with your software and hardware wallets), blockchain explorer, or Lightning client. 25 | 26 | We first install [Bitcoin Core](bitcoin-client.md) and [Fulcrum](electrum-server.md) on the node. We then set up the powerful Sparrow desktop wallet on your computer and connect it to your Fulcrum server for secure and private base layer operations, such as sending and receiving payments from and to your hardware wallet. Finally, we install [BTC RPC Explorer](blockchain-explorer.md) on the node, a lite blockchain explorer with a clean web UI for privately checking your transactions and the mempool. 27 | -------------------------------------------------------------------------------- /bitcoin/bitcoin/desktop-signing-app-sparrow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Desktop wallet 3 | nav_order: 30 4 | parent: Bitcoin 5 | layout: 6 | title: 7 | visible: true 8 | description: 9 | visible: false 10 | tableOfContents: 11 | visible: true 12 | outline: 13 | visible: true 14 | pagination: 15 | visible: true 16 | --- 17 | 18 | # 2.4 Desktop signing app: Sparrow Wallet 19 | 20 | We install [Sparrow Wallet](https://github.com/sparrowwallet/sparrow) on a computer and connect it to your Electrum server on your node for private Bitcoin on-chain transactions. 21 | 22 |
23 | 24 | ## Requirements 25 | 26 | * [Bitcoin Core](bitcoin-client.md) 27 | * Electrum server: [Fulcrum](electrum-server.md) or [Electrs](../../bonus/bitcoin/electrs.md) 28 | 29 | ## Introduction 30 | 31 | Sparrow wallet is an excellent software wallet to use with your MiniBolt: it's reliable and transparently shows what it's doing under the hood. 32 | 33 | You can also use the following alternatives instead of Sparrow Wallet, according to your preferences and needs: 34 | 35 | * BitBoxApp: wallet for users of BitBox hardware wallets 36 | * [Electrum Wallet Desktop](../../bonus/bitcoin/electrum-wallet-desktop.md): a well-established power user wallet 37 | * [Ledger Live](https://support.ledger.com/hc/en-us/articles/360017551659-Setting-up-your-Bitcoin-full-node?docs=true): wallet for users of Ledger hardware wallets (this wallet connects directly to Bitcoin Core) 38 | * [Trezor Suite](https://blog.trezor.io/connecting-your-wallet-to-a-full-node-edf56693b545?gi=d1e285f3d3c5): wallet for users of Trezor hardware wallets 39 | 40 | We will connect the Sparrow wallet to our own Electrum server as it is the most private option. For more information about the privacy and security trade-offs of the various server connection options, read the following [article](https://www.sparrowwallet.com/docs/best-practices.html) by Craig Raw, the author of the wallet. 41 | 42 | ![](../../images/sparrow-stages.png) 43 | 44 | We will set up Sparrow to connect to Fulcrum within your local network. There is also an optional section at the end that explains how to connect Sparrow to Fulcrum using Tor for when you're on the move. 45 | 46 | Sparrow also connects to a couple of external services to get the Bitcoin price and communicate with the Whirlpool server during CoinJoin operations. By default, it uses clearnet, which leaks your computer IP address to these services and degrades your privacy. However, Sparrow can also connect to them using a Tor proxy. There is an optional section at the end that explains how to set this proxy up. 47 | 48 | ## Installation 49 | 50 | On your local computer, download, verify, and install the Sparrow wallet. 51 | 52 | * [Using the instructions on this page](https://www.sparrowwallet.com/download/) 53 | * Download the required version for your OS 54 | * Download the manifest and manifest signature files 55 | * Verify the release 56 | * Install the Sparrow wallet 57 | 58 | ## Local connection 59 | 60 | We now configure Sparrow to connect to your node within your local network. 61 | 62 | ### Launch Sparrow 63 | 64 | * Launch Sparrow 65 | * Read carefully the introductory messages and click on "Next" several times 66 | * When you reach the "Connecting to a Private Electrum Server" message, click on "Configure Server" 67 | 68 | ### Connect to Fulcrum 69 | 70 | * Click on the "Private Electrum" tab 71 | * On the "URL" line, paste `minibolt.local` or your node IP (e.g., `192.168.X.XXX`) in the first box and `50002` in the second box 72 | * Enable SSL by clicking on the slider 73 | * Click on "Test Connection". A green tick should appear on the button, and you should see something similar to the following output: 74 | 75 | ``` 76 | Connected to Fulcrum x.x.x on protocol version... 77 | [...] 78 | ``` 79 | 80 | ![](../../images/sparrow-electrum-no-proxy.png) 81 | 82 | If there is a connection error message, try the following troubleshooting: 83 | 84 | * Make sure that your computer is not connected to any "guest" WiFi network at home. A "guest" WiFi network prevents the computer from connecting to any other devices on the local network, such as your node. 85 | * If you have used the Sparrow wallet before on this computer, try to connect again after deleting the existing certificates that are stored within the `certs` folder: 86 | * On Windows: `C:\Users\\AppData\Roaming\Sparrow\certs` 87 | * On macOS: `~/.sparrow/certs` 88 | * On Linux: `~/.sparrow/certs` 89 | 90 | Let's go back to the wallet and check that it is connected to our own Electrum server. 91 | 92 | * Close the server configuration window 93 | * Check the icon in the bottom right corner of the wallet window ![status icon](../../images/sparrow-server-icon.png) 94 | * The icon should be a blue slider button, and a mouse over should display "Connected to \[...] at height \[...]" 95 | 96 | You're set! Sparrow is now configured to connect to your Electrum server from within your local network. 97 | 98 | For maximal privacy, we highly recommend that you set up the Tor proxy when using Sparrow within your local network over clearnet. Check the [optional section](desktop-signing-app-sparrow.md#optional-set-up-a-tor-proxy-for-external-services) at the end of this guide. 99 | 100 | ## Sparrow in action 101 | 102 | Congratulations, you now have a Bitcoin desktop wallet, capable of securing your Bitcoin, running with your own trustless Bitcoin full node! Sparrow is a powerful wallet that allows you to use the most advanced features for securing your bitcoins and preserving your privacy. 103 | 104 | With Sparrow, you can: 105 | 106 | * Connect any hardware wallet 107 | * Send and receive bitcoins 108 | * Have full control throughout the transaction creation and signing process: coin control, PSBT, labeling, byte-level transaction viewer... 109 | * Create batched transactions to save on miner fees 110 | * Create multisig wallets for improved security 111 | * Coinjoin your coins for improved privacy 112 | * Analyze your transactions with the built-in blockchain explorer 113 | 114 | For more information, tutorials, and support, visit the [Sparrow documentation webpage](https://sparrowwallet.com/docs/) and their [Telegram group](https://t.me/sparrowwallet). 115 | 116 | ### (Optional) Remote connection over Tor 117 | 118 | If you want to use Sparrow outside your home network, when you're on the go, you can use a connection over Tor. 119 | 120 | ### Server Tor address 121 | 122 | To connect via Tor to Fulcrum, the server must have a Tor hidden service connection address. Make sure you have set up a Tor hidden service as explained in the ["Electrum server" guide](electrum-server.md#remote-access-over-tor). 123 | 124 | If you've already set up the hidden service but lost the connection address, you can obtain it again by running the following command with "admin" on your node: 125 | 126 | ```sh 127 | sudo cat /var/lib/tor/hidden_service_fulcrum_tcp_ssl/hostname 128 | ``` 129 | 130 | Expected output: 131 | 132 | ``` 133 | abcd...1234.onion 134 | ``` 135 | 136 | ### Sparrow configuration 137 | 138 | * Open Sparrow 139 | * Navigate to the server configuration page by hitting `Ctrl`+`P`, or `Cmd`+`,` on OSX, then click on "Server" 140 | * Click on the "Private Electrum" tab. If you already have an existing Clearnet connection, click on "Edit Existing Connection." 141 | * On the "URL" line, paste your Tor hidden service connection address (e.g. "abcd...1234.onion") in the first box and `50002` in the second box 142 | * Enable SSL by clicking on the slider 143 | * Click on "Test Connection". A green tick should appear on the button, and you should see something similar to the following output: 144 | 145 | ``` 146 | Connected to Fulcrum x.x.x on protocol version ... 147 | [...] 148 | ``` 149 | 150 | ![](../../images/sparrow-electrum-tor-no-proxy.png) 151 | 152 | {% hint style="success" %} 153 | You're set! Sparrow is now configured to connect to your node over Tor, and you can use it wherever you are 154 | {% endhint %} 155 | 156 | ### (Optional) Set up a Tor proxy for external services 157 | 158 | If a Tor proxy is configured in Sparrow, all external connections use Tor. This includes rate fetching, coinjoin, etc. Even transaction broadcasting is done via an external service (like blockstream.info) over Tor for additional privacy. Wherever possible, the onion URLs of these services are used. 159 | 160 | Sparrow can be configured to use an internal (bundled) or external Tor proxy. To use the internal proxy, an onion Electrum server URL must be specified, and the 'Use Proxy' toggle must be off. Therefore, the following section only applies if you connect to your Electrum server using the local IP address within your local network (e.g., `minibolt.local` or `192.168.X.XXX`). If you're using a Tor onion address to connect to your node, then Sparrow is already using the internal proxy, and there is nothing else to be done! 161 | 162 | If you're using a local connection, we recommend that you set up this external Tor proxy as described below for maximal privacy. 163 | 164 | ### Preparations on your computer 165 | 166 | For Sparrow Wallet to connect to the external services via Tor, Tor has to be running on your computer. You can run the Tor Browser and use port 9150 on localhost, or else run Tor as a background service and use port 9050. 167 | 168 | By OS: 169 | 170 | * **Windows**: download, install, and run [Tor Browser](https://www.torproject.org) 171 | * The application must be started manually and run in the background when you want to connect over Tor. 172 | * By default, when you have Tor Browser running, the Tor proxy is available on port `9150`, but if you want to have `9050` available too, you can run a background service on port `9050`, executing `"tor.exe"` file on the installation path route you chose during Tor Browser installation, and following the next subpath `...\Tor Browser\Browser\TorBrowser\Tor\tor.exe"` 173 | * **Linux**: only needs to execute (`sudo apt install tor`) on the command line and ensure that the Tor service is working and listening at the default port `9050` 174 | 175 | ```sh 176 | sudo ss -tulpn | grep tor 177 | ``` 178 | 179 | Expected output: 180 | 181 |
tcp   LISTEN 0  4096   127.0.0.1:9050   0.0.0.0:*    users:(("tor",pid=1847,fd=6))
182 | 
183 | 184 | * **macOS**: download, verify, install, and run [Tor Browser](https://www.torproject.org/) 185 | * The application must be started manually when you want to connect over Tor 186 | * By default, when you have Tor Browser running, the Tor proxy is available on port 9150, use this port instead of `9050` port 187 | 188 | ### Server configuration 189 | 190 | * Open Sparrow 191 | * Navigate to the server configuration page by hitting `Ctrl`+`P`, or `Cmd`+`,` on OSX, then click on "Server" 192 | * Click on the "Private Electrum" tab. If you already have an existing clearnet connection, click on "Edit Existing Connection". 193 | * Enable the Tor proxy by clicking on the "Use proxy" slider 194 | * On the "Proxy URL" line, enter `localhost` or `127.0.0.1` in the first box and either `9150` or `9050` in the second box, depending on whether you run the Tor Browser or Tor as a background service. 195 | * Click on "Test Connection". A green tick should appear on the button, and you should see something similar to the following output 196 | 197 | ``` 198 | Connected to Fulcrum x.x.x on protocol version ... 199 | [...] 200 | ``` 201 | 202 | ![](../../images/sparrow-tor-proxy.png) 203 | 204 | {% hint style="info" %} 205 | If you followed the [**Use the Tor proxy from another device**](../../index-1/privacy.md#use-the-tor-proxy-from-another-device) section, you can use the Tor instance of your node instead of the instance of your regular computer, simply put on the "Proxy URL" box, your node IP local address (i.e 192.168.1.60) instead of localhost (127.0.0.1) 206 | {% endhint %} 207 | 208 | Now, let's go back to the wallet and check that the proxy is working properly. 209 | 210 | * Close the server configuration window 211 | * Check the two icons in the bottom right corner of the wallet window ![status icons](../../images/sparrow-server-proxy-icons.png) 212 | * The first icon should be grey, not red, and a mouse hover should display "External Tor proxy enabled" 213 | 214 | {% hint style="success" %} 215 | You're set! Sparrow Wallet is now configured to use the Tor proxy when fetching the Bitcoin price and Paynym 216 | {% endhint %} 217 | 218 | {% hint style="danger" %} 219 | **Troubleshooting note:** For those who already had Sparrow installed on their systems with old server connections, it is needed to clear the pre-existing cert from the certs folder. Follow these instructions: 220 | {% endhint %} 221 | 222 | 1. Shut down Sparrow if it's running 223 | 2. Go to C:\Users\\AppData/Roaming\Sparrow\certs (or \~/.Sparrow/certs on Linux afaik) 224 | 3. Delete the certificate that corresponds to your node IP address 225 | 4. Start Sparrow again 226 | 227 | ## Upgrade 228 | 229 | Sparrow will automatically notify you when an update is available. Simply install the updates using the usual method for your OS. 230 | -------------------------------------------------------------------------------- /bonus-guides/networking/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 🌐 Networking 16 | 17 | ## Bonus Section: Networking guides 18 | 19 | ### VPN & Tunneling 20 | 21 | * [**WireGuard VPN**](wireguard-vpn.md) - set up a WireGuard Virtual Private Network to securely access your node services remotely 22 | * [**Cloudflare Tunnel**](cloudflare-tunnel.md) - provides you with a secure way to connect your resources to Cloudflare without a publicly routable IP address 23 | 24 | ### Resilience 25 | 26 | * [**Tor services: bridges & relays**](tor-services.md) - collaborate to provide anonymous, censorship-resistant internet access by routing traffic through decentralized nodes 27 | 28 | -------------------------------------------------------------------------------- /bonus-guides/nostr/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 🦩 Nostr 16 | 17 | ## Bonus Section: Nostr guides 18 | 19 | ### Relays 20 | 21 | * [**Nostr relay in Rust**](nostr-relay.md) - a nostr relay written in Rust with support for the entire relay protocol and data persistence using PostgreSQL or SQLite 22 | -------------------------------------------------------------------------------- /bonus-guides/security/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 🛡️ Security 16 | 17 | ## Bonus Section: Security guides 18 | 19 | ### Authentication and Access Control 20 | 21 | * [**SSH Keys**](ssh-keys.md) - a safe way to SSH authentication in your system 22 | -------------------------------------------------------------------------------- /bonus-guides/security/ssh-keys.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Login with SSH keys 3 | parent: + System 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Login with SSH keys 21 | 22 | One of the best options to secure the sensitive SSH login is to disable passwords altogether and require an SSH key certificate. Only someone with physical possession of the private certificate key can log in. 23 | 24 | {% hint style="warning" %} 25 | Difficulty: Medium 26 | {% endhint %} 27 | 28 | ![](../../images/SSH-keys.png) 29 | 30 | ## Preparations 31 | 32 | ### Generate SSH keys on Windows 33 | 34 | * On your regular computer, download Puttygen [64-bit x86](https://the.earth.li/~sgtatham/putty/latest/w64/puttygen.exe) or [32-bit x86](https://the.earth.li/~sgtatham/putty/latest/w32/puttygen.exe) version depending on your OS architecture, and start it. Also, you can download [MobaXterm](https://mobaxterm.mobatek.net/download-home-edition.html) start it, and use the "MobaKeyGen (SSH key generator)" integrated tool in the "Tools" submenu 35 | * Click on the "Generate" button and move the mouse over the window until the progress is finished 36 | * Assign a key passphrase (recommended), to encrypt the private key locally, use `password [A]` for example 37 | * Click on: 38 | * "Save public key", and give it a name, eg. `minibolt_SSH_pubkey.txt` 39 | * "Save private key", and give it a name, eg. `minibolt_SSH_privkey` (Keep this safe!) 40 | 41 | ### Generate SSH keys on Linux or macOS 42 | 43 | * In the terminal on your regular computer, first, check if the keys already exist 44 | 45 | ```sh 46 | ls -la ~/.ssh/*.pub 47 | ``` 48 | 49 | * If files are listed, your public key should be named something like `id_rsa.pub`. If one of these files already exists, skip the next step 50 | * If none of those files exist, or you get a "No such file or directory" error, create a new public/private key pair 51 | 52 | ```sh 53 | ssh-keygen -t rsa -b 2048 54 | ``` 55 | 56 | When you're prompted to "Enter a file in which to save the key", press Enter to use the default file location. Optionally, for maximum security, enter a key passphrase to protect your key, and use `password [A]` 57 | 58 | * The public key now needs to be copied to the PC 59 | 60 | Use the command `ssh-copy-id`, which stores your public key on the remote machine (and creates files and directories, if needed). You will be prompted for your SSH login password once. If fails you can try `admin@192.168.x.xxx` instead 61 | 62 | ```sh 63 | ssh-copy-id admin@minibolt 64 | ``` 65 | 66 | {% hint style="info" %} 67 | If you are on macOS and encounter an error, you might need to install `ssh-copy-id` first by running the following command on your Mac's command line 68 | {% endhint %} 69 | 70 | ```sh 71 | brew install ssh-copy-id 72 | ``` 73 | 74 | ## Import SSH pubkey to MiniBolt node 75 | 76 | ### From your regular Windows PC 77 | 78 | * Login with the `admin` user on MiniBolt and create a new folder at home called ".ssh". If already exists, skip the next step 79 | 80 | ```sh 81 | mkdir .ssh 82 | ``` 83 | 84 | * Limit permissions for reading, writing, and executing only to the user admin 85 | 86 | ```sh 87 | chmod 700 .ssh 88 | ``` 89 | 90 | * Create a file called "authorized\_keys" and paste the content information of the "minibolt\_SSH\_pubkey.txt" file generated in the [Windows step before](ssh-keys.md#generate-ssh-keys-on-windows) 91 | 92 | ```sh 93 | nano .ssh/authorized_keys 94 | ``` 95 | 96 | e.g: 97 | 98 | ```sh 99 | ssh-rsa AAAAB3N........ 100 | ``` 101 | 102 | * Limit permissions for reading and writing only to the user admin 103 | 104 | ```sh 105 | chmod 600 .ssh/authorized_keys 106 | ``` 107 | 108 | ### From your regular Linux PC 109 | 110 | * Login with the user `admin`and create a new folder at home called `".ssh"`. If already exists, skip the next step 111 | 112 | ```sh 113 | mkdir .ssh 114 | ``` 115 | 116 | * Limit permissions for reading, writing, and executing only to the user admin 117 | 118 | ```sh 119 | chmod 700 .ssh 120 | ``` 121 | 122 | * Create a file called "authorized\_keys" on it and paste the content information of the "id\_rsa.pub" file generated in the [Linux or macOS step before](ssh-keys.md#generate-ssh-keys-on-linux-or-macos) 123 | 124 | ```sh 125 | nano .ssh/authorized_keys 126 | ``` 127 | 128 | e.g: 129 | 130 | ```sh 131 | ssh-rsa AAAAB3N........ 132 | ``` 133 | 134 | * Limit permissions for reading and writing only to the user admin 135 | 136 | ```sh 137 | chmod 600 .ssh/authorized_keys 138 | ``` 139 | 140 | ### From GitHub keyserver 141 | 142 | * On your regular computer, access to "GPG and SSH keys" section of your [GitHub account](https://github.com/settings/keys), if you don't have an account [create one](https://github.com/signup) 143 | * Click on the "new SSH key" button, type a title e.g SSH\_keys\_MiniBolt, select Key type "Authentication key", and paste on the "Key" section the SSH pub key generated in the preparations [section](ssh-keys.md#preparations) depending on the regular computer OS 144 | * Login with the `admin` user on MiniBolt and create a new folder at home called ".ssh". If already exists, skip the next step 145 | 146 | ```sh 147 | mkdir .ssh 148 | ``` 149 | 150 | * Limit permissions for reading, writing, and executing only to the user admin 151 | 152 | ```sh 153 | chmod 700 .ssh 154 | ``` 155 | 156 | * Import your SSH GitHub keys replacing `` with the GitHub username (that appears in your profile section) 157 | 158 | ```sh 159 | curl https://github.com/.keys >> .ssh/authorized_keys 160 | ``` 161 | 162 | Expected output: 163 | 164 | ``` 165 | % Total % Received % Xferd Average Speed Time Time Time Current 166 | Dload Upload Total Spent Left Speed 167 | 100 725 100 725 0 0 1984 0 --:--:-- --:--:-- --:--:-- 1986 168 | ``` 169 | 170 | * Ensure that your SSH keys have been imported correctly in "authorized\_keys" file, and press `Ctrl-X` to exit 171 | 172 | ```sh 173 | nano .ssh/authorized_keys 174 | ``` 175 | 176 | * Limit permissions for read and write only to the user admin 177 | 178 | ```sh 179 | chmod 600 .ssh/authorized_keys 180 | ``` 181 | 182 | ## Connect to MiniBolt through SSH keys 183 | 184 | ### Linux or macOS command line 185 | 186 | * From the Terminal, use the native command 187 | 188 | ```sh 189 | ssh -i /home//.ssh/id_rsa admin@minibolt.local 190 | ``` 191 | 192 | {% hint style="warning" %} 193 | Attention: This command only works if you generated the SSH keys [on Linux or macOS](ssh-keys.md#generate-ssh-keys-on-linux-or-macos) with the OpenSSH terminal method, not Putty or MobaXterm generation methods 194 | {% endhint %} 195 | 196 | ### Putty Linux/Windows 197 | 198 | * On your regular computer, download Putty [64-bit x86](https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe) or [32-bit x86](https://the.earth.li/~sgtatham/putty/latest/w32/putty.exe) version depending on your OS architecture, and start it 199 | * To automatically connect and log in to your server you need to add the Private Key to the Putty client. Then go to the left Category menu, select SSH –> Auth -> Credentials, on "Private key file for authentication" hit the "Browse" button, search, and add your Private Key file 200 | * To the left tree, select "session", in the "Hostname (or IP address)" box, and type `admin@minibolt.local` or `admin@192.168.x.xx`, left port `22` to the right box. Click on `Open`. If you selected a key passphrase in the [preparations](ssh-keys.md#preparations) section, enter it. That’s it! Now you can automatically securely connect to your remote SSH server with Putty client by hitting the Open button without the need to enter passwords 201 | 202 | ### MobaXterm Windows 203 | 204 | * On your regular computer, download MobaXterm [Portable edition](https://download.mobatek.net/2232022120824733/MobaXterm_Portable_v22.3.zip) or [Installer edition](https://download.mobatek.net/2232022120824733/MobaXterm_Installer_v22.3.zip) version depending on whether you want to install it permanently or not 205 | * Start MobaXterm, on the top menu, click on Session -> New session -> Select SSH 206 | * Enter in remote host, "minibolt.local" or your MiniBolt IP address (192.168.x.xx), check to "specify username" and enter to the right "admin", keep port "22" selected to the right 207 | * To automatically connect and log in to your server you need to add the Private Key to the MobaXterm client, select the "Advanced SSH settings" tab, check "Use private key" and click on the icon to the right form shaped like a document and select your Private Key file 208 | * Click on the "OK" button and that’s it! Now you can automatically securely connect to your remote SSH server with Putty client by hitting the "Open" button without the need to enter passwords 209 | 210 | {% hint style="success" %} 211 | You can follow the guide where you left it by clicking [HERE](../../index-1/configuration.md#system-update) 212 | {% endhint %} 213 | 214 | ## Extras (optional) 215 | 216 | ### Disable password login 217 | 218 | * Log in to the MiniBolt as `admin` using SSH with your SSH key (you shouldn't be prompted for the admin's password anymore) 219 | * Add a custom config file to the drop-in config 220 | 221 | ```bash 222 | sudo nano /etc/ssh/sshd_config.d/custom.conf 223 | ``` 224 | 225 | * Add the next content 226 | 227 | ``` 228 | PermitRootLogin no 229 | UsePAM no 230 | PasswordAuthentication no 231 | ``` 232 | 233 | * Test this barebone SSH configuration 234 | 235 | ```sh 236 | sudo sshd -t 237 | ``` 238 | 239 | {% hint style="info" %} 240 | If you see no output to the next command, that is OK. If you see something like `/etc/ssh/sshd_config line XX: unsupported option "XXX"` that means something is incorrect 241 | {% endhint %} 242 | 243 | * Restart the SSH daemon to apply changes 244 | 245 | ```sh 246 | sudo systemctl restart sshd 247 | ``` 248 | 249 | * Type `exit` or `logout` to finish the session 250 | * Log in again with the user `admin` 251 | 252 | {% hint style="info" %} 253 | You can no longer log in with a password. User "admin" is the only user who has the necessary SSH keys, there won't be any way to do it with another user or ways to log in remotely 254 | {% endhint %} 255 | 256 | {% hint style="danger" %} 257 | **Back up your SSH keys!!** You will need to attach a screen and keyboard to your PC if you lose them 258 | {% endhint %} 259 | 260 | {% hint style="success" %} 261 | You can follow the guide where you left it by clicking [HERE](../../index-1/configuration.md#system-update) 262 | {% endhint %} 263 | 264 | ### Disable admin password request (caution!) 265 | 266 | {% hint style="danger" %} 267 | **Attention:** This could be a security risk, is not recommended to disable the admin password to avoid a possible and hypothetical attacker could gain complete control of the node in case of intrusion, if you do it, act at your own risk. 268 | {% endhint %} 269 | 270 | * Ensure you are logged in with user admin, edit the next file 271 | 272 | ```sh 273 | sudo visudo 274 | ``` 275 | 276 | * Add the next line at the end of the file. Save and exit 277 | 278 | ``` 279 | admin ALL=(ALL) NOPASSWD:ALL 280 | ``` 281 | -------------------------------------------------------------------------------- /bonus-guides/system/go.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # Go 16 | 17 | [Go](https://github.com/golang/go) is an agent-based programming language in the tradition of logic-based programming languages like Prolog designed at Google. 18 | 19 | {% hint style="success" %} 20 | Difficulty: Easy 21 | {% endhint %} 22 | 23 |
24 | 25 | ## Installation 26 | 27 | * With user `admin`, go to the temporary folder 28 | 29 | ```bash 30 | cd /tmp 31 | ``` 32 | 33 | * Set a temporary version environment variable to the installation 34 | 35 | ```bash 36 | VERSION=1.24.1 37 | ``` 38 | 39 | * Set a temporary SHA256 environment variable to the installation 40 | 41 | ```bash 42 | SHA256=cb2396bae64183cdccf81a9a6df0aea3bce9511fc21469fb89a0c00470088073 43 | ``` 44 | 45 | * Get the latest binary of the [official repository](https://go.dev/dl/) 46 | 47 | ```bash 48 | wget https://go.dev/dl/go$VERSION.linux-amd64.tar.gz 49 | ``` 50 | 51 | * Check the checksum of the file 52 | 53 | ```bash 54 | echo "$SHA256 go$VERSION.linux-amd64.tar.gz" | sha256sum --check 55 | ``` 56 | 57 | **Example** of expected output: 58 | 59 |
go1.21.10.linux-amd64.tar.gz: OK
 60 | 
61 | 62 | * Extract and install Go in the `/usr/local` directory 63 | 64 | ```bash 65 | sudo tar -C /usr/local -xzvf go$VERSION.linux-amd64.tar.gz 66 | ``` 67 | 68 | * Add the next line at the end of the `/etc/profile` file 69 | 70 | ```bash 71 | echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee -a /etc/profile 72 | ``` 73 | 74 | Expected output: 75 | 76 | ``` 77 | export PATH=$PATH:/usr/local/go/bin 78 | ``` 79 | 80 | * Apply the changes immediately to the current session 81 | 82 | ```bash 83 | source /etc/profile 84 | ``` 85 | 86 | * Verify that you've installed Go by typing the following command 87 | 88 | ```bash 89 | go version 90 | ``` 91 | 92 | **Example** of expected output: 93 | 94 | ``` 95 | go version go1.21.10 linux/amd64 96 | ``` 97 | 98 | * **(Optional)** Delete the file of the temporary folder to be immediately ready for the next update 99 | 100 | ```bash 101 | rm go$VERSION.linux-amd64.tar.gz 102 | ``` 103 | 104 | ## Upgrade 105 | 106 | * With user `admin`, remove any previous Go installation 107 | 108 | ```bash 109 | sudo rm -rf /usr/local/go 110 | ``` 111 | 112 | * Go to the temporary folder 113 | 114 | ```bash 115 | cd /tmp 116 | ``` 117 | 118 | * Set a temporary version environment variable with the new value, to the installation 119 | 120 | ```bash 121 | VERSION=1.24.1 122 | ``` 123 | 124 | * Set the new temporary SHA256 environment variable to the installation 125 | 126 | ```bash 127 | SHA256=cb2396bae64183cdccf81a9a6df0aea3bce9511fc21469fb89a0c00470088073 128 | ``` 129 | 130 | * Get the latest binary of the [official repository](https://go.dev/dl/) 131 | 132 | ```bash 133 | wget https://go.dev/dl/go$VERSION.linux-amd64.tar.gz 134 | ``` 135 | 136 | * Check the checksum of the file 137 | 138 | ```bash 139 | echo "$SHA256 go$VERSION.linux-amd64.tar.gz" | sha256sum --check 140 | ``` 141 | 142 | **Example** of expected output: 143 | 144 | ``` 145 | go1.22.3.linux-amd64.tar.gz: OK 146 | ``` 147 | 148 | * Extract and install Go in the `/usr/local` directory 149 | 150 | ```bash 151 | sudo tar -C /usr/local -xzvf go$VERSION.linux-amd64.tar.gz 152 | ``` 153 | 154 | * Verify that you've updated Go by typing the following command 155 | 156 | ``` 157 | go version 158 | ``` 159 | 160 | **Example** of expected output: 161 | 162 | ``` 163 | go version go1.22.3 linux/amd64 164 | ``` 165 | 166 | * **(Optional)** Delete the file of the temporary folder to be immediately ready for the next update 167 | 168 | ```bash 169 | rm go$VERSION.linux-amd64.tar.gz 170 | ``` 171 | 172 | ## Uninstall 173 | 174 | * Delete go folder 175 | 176 | ```bash 177 | sudo rm -rf /usr/local/go 178 | ``` 179 | 180 | * Edit `/etc/profile` file and delete the complete `export PATH=$PATH:/usr/local/go/bin` line at the end of the file. Save and exit 181 | 182 | ```bash 183 | sudo nano /etc/profile 184 | ``` 185 | 186 | * Apply the changes immediately to the current session 187 | 188 | ```bash 189 | source /etc/profile 190 | ``` 191 | 192 | * Ensure you are uninstalled Go definitely 193 | 194 | ```bash 195 | go version 196 | ``` 197 | 198 | Expected output: 199 | 200 | ``` 201 | -bash: /usr/local/go/bin/go: No such file or directory 202 | ``` 203 | 204 | Next new session you will obtain this command when you try `go version` command: 205 | 206 | ``` 207 | Command 'go' not found.. 208 | ``` 209 | -------------------------------------------------------------------------------- /bonus-guides/system/rustup-+-cargo.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # Rustup + Cargo 16 | 17 | Rustup is a tool that allows you to easily install, update, and uninstall Rust, and it also includes Cargo, the Rust build tool, and package manage. With Rustup, you can manage your Rust toolchain and dependencies efficiently, making it a convenient choice for Rust developers. 18 | 19 | {% hint style="success" %} 20 | Difficulty: Easy 21 | {% endhint %} 22 | 23 |
24 | 25 | ## Installation 26 | 27 | Rustup is an installer for the systems programming language [Rust](https://www.rust-lang.org) 28 | 29 | * With user `admin`, run the following in your terminal, then follow the on-screen instructions to install Rust 30 | 31 | ```bash 32 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 33 | ``` 34 | 35 |
36 | 37 | Expected output 🔽 38 | 39 |
info: downloading installer
 40 | 
 41 | Welcome to Rust!
 42 | 
 43 | This will download and install the official compiler for the Rust
 44 | programming language, and its package manager, Cargo.
 45 | 
 46 | Rustup metadata and toolchains will be installed into the Rustup
 47 | home directory, located at:
 48 | 
 49 |   /home/admin/.rustup
 50 | 
 51 | This can be modified with the RUSTUP_HOME environment variable.
 52 | 
 53 | The Cargo home directory is located at:
 54 | 
 55 |   /home/admin/.cargo
 56 | 
 57 | This can be modified with the CARGO_HOME environment variable.
 58 | 
 59 | The cargo, rustc, rustup and other commands will be added to
 60 | Cargo's bin directory, located at:
 61 | 
 62 |   /home/admin/.cargo/bin
 63 | 
 64 | This path will then be added to your PATH environment variable by
 65 | modifying the profile files located at:
 66 | 
 67 |   /home/admin/.profile
 68 |   /home/admin/.bashrc
 69 | 
 70 | You can uninstall at any time with rustup self uninstall and
 71 | these changes will be reverted.
 72 | 
 73 | Current installation options:
 74 | 
 75 | 
 76 |    default host triple: x86_64-unknown-linux-gnu
 77 |      default toolchain: stable (default)
 78 |                profile: default
 79 |   modify PATH variable: yes
 80 | 
 81 | 1) Proceed with installation (default)
 82 | 2) Customize installation
 83 | 3) Cancel installation
 84 | >1
 85 | 
86 | 87 |
88 | 89 | {% hint style="warning" %} 90 | When the prompt asks you to choose an option, type **"`1`"** and press **enter** or press **enter** directly to "**Proceed with installation**" 91 | {% endhint %} 92 | 93 |
94 | 95 | Example of installation expected output 🔽 96 | 97 | ``` 98 | info: profile set to 'default' 99 | info: default host triple is x86_64-unknown-linux-gnu 100 | info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' 101 | info: latest update on 2023-07-13, rust version 1.71.0 (8ede3aae2 2023-07-12) 102 | info: downloading component 'cargo' 103 | 7.0 MiB / 7.0 MiB (100 %) 4.5 MiB/s in 1s ETA: 0s 104 | info: downloading component 'clippy' 105 | info: downloading component 'rust-docs' 106 | 13.6 MiB / 13.6 MiB (100 %) 4.3 MiB/s in 3s ETA: 0s 107 | info: downloading component 'rust-std' 108 | 25.4 MiB / 25.4 MiB (100 %) 4.2 MiB/s in 6s ETA: 0s 109 | info: downloading component 'rustc' 110 | 64.0 MiB / 64.0 MiB (100 %) 4.4 MiB/s in 15s ETA: 0s 111 | info: downloading component 'rustfmt' 112 | info: installing component 'cargo' 113 | info: installing component 'clippy' 114 | info: installing component 'rust-docs' 115 | 13.6 MiB / 13.6 MiB (100 %) 2.8 MiB/s in 4s ETA: 0s 116 | info: installing component 'rust-std' 117 | 25.4 MiB / 25.4 MiB (100 %) 12.7 MiB/s in 1s ETA: 0s 118 | info: installing component 'rustc' 119 | 64.0 MiB / 64.0 MiB (100 %) 13.9 MiB/s in 4s ETA: 0s 120 | info: installing component 'rustfmt' 121 | info: default toolchain set to 'stable-x86_64-unknown-linux-gnu' 122 | 123 | stable-x86_64-unknown-linux-gnu installed - rustc 1.71.0 (8ede3aae2 2023-07-12) 124 | 125 | 126 | Rust is installed now. Great! 127 | 128 | To get started you may need to restart your current shell. 129 | This would reload your PATH environment variable to include 130 | Cargo's bin directory ($HOME/.cargo/bin). 131 | 132 | To configure your current shell, run: 133 | source "$HOME/.cargo/env" 134 | ``` 135 | 136 |
137 | 138 | {% hint style="info" %} 139 | This process can take quite **a long time**, 10-15 minutes or more, depending on the performance of your device. Please be patient until the prompt shows again 140 | {% endhint %} 141 | 142 | * Configure your current shell to reload your PATH environment variable to include Cargo's bin directory (`$HOME/.cargo/bin`) 143 | 144 | ```bash 145 | source "$HOME/.cargo/env" 146 | ``` 147 | 148 | * Now check the correct installation of Rustup 149 | 150 | ```bash 151 | rustc --version 152 | ``` 153 | 154 | **Example** of expected output: 155 | 156 | ``` 157 | rustc 1.71.0 (8ede3aae2 2023-07-12) 158 | ``` 159 | 160 | * And cargo 161 | 162 | ```bash 163 | cargo -V 164 | ``` 165 | 166 | **Example** of expected output: 167 | 168 | ``` 169 | cargo 1.71.0 (cfd3bbd8f 2023-06-08) 170 | ``` 171 | 172 | ## Upgrade 173 | 174 | * With user `admin` type the appropriate command to get that 175 | 176 | ```bash 177 | rustup update 178 | ``` 179 | 180 | Expected output: 181 | 182 | ``` 183 | info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' 184 | info: checking for self-update 185 | [...] 186 | ``` 187 | 188 | ## Uninstall 189 | 190 | * With user `admin` type the appropriate command to get that 191 | 192 | ```bash 193 | rustup self uninstall 194 | ``` 195 | 196 | Expected output: 197 | 198 | ``` 199 | Thanks for hacking in Rust! 200 | 201 | This will uninstall all Rust toolchains and data, and remove 202 | $HOME/.cargo/bin from your PATH environment variable. 203 | Continue? (y/N) 204 | ``` 205 | 206 | {% hint style="info" %} 207 | Press "`y"` and enter 208 | {% endhint %} 209 | 210 | Expected output: 211 | 212 | ``` 213 | info: removing rustup home 214 | info: removing cargo home 215 | info: removing rustup binaries 216 | info: rustup is uninstalled 217 | ``` 218 | 219 | [^1]: Type "`1`" and press enter 220 | -------------------------------------------------------------------------------- /bonus-guides/system/system-overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # System Overview 16 | 17 | To get a quick overview of the system status, you can use [a shell script](https://github.com/minibolt-guide/system_overview) that gathers the most relevant data about the service on the main guide. 18 | 19 | {% hint style="success" %} 20 | Difficulty: Easy 21 | {% endhint %} 22 | 23 |
24 | 25 | ### Acknowledgments 26 | 27 | This is a fork of the [minibolt\_info](https://github.com/rmnscb/minibolt_info) repository, the main developer of this project is [rmnscb](https://github.com/rmnscb), a member of the MiniBolt community, all the merits go to him. Thank you for your contribution 🧡🫂 28 | 29 | ## Installation 30 | 31 | ### Install dependencies 32 | 33 | * With user `admin`, install the necessary dependencies using the apt package manager 34 | 35 | ```bash 36 | sudo apt install jq net-tools netcat 37 | ``` 38 | 39 | ### Install script 40 | 41 | * Go to the temporary folder 42 | 43 | ```bash 44 | cd /tmp 45 | ``` 46 | 47 | * Clone the GitHub repository and enter it 48 | 49 | {% code overflow="wrap" %} 50 | ```bash 51 | git clone https://github.com/minibolt-guide/system_overview && cd system_overview 52 | ``` 53 | {% endcode %} 54 | 55 | {% hint style="info" %} 56 | You can inspect the scripts to make sure it does not do bad things, by going to the [GitHub repository](https://github.com/minibolt-guide/system_overview) 57 | {% endhint %} 58 | 59 | * Install it to the system 60 | 61 | ```bash 62 | sudo install -m 0755 -o root -g root -t /usr/local/bin *.sh 63 | ``` 64 | 65 | **(Optional)** Delete the folder of the temporary folder to be ready for the upgrade 66 | 67 | ```bash 68 | sudo rm -r /tmp/system_overview 69 | ``` 70 | 71 | ## Run 72 | 73 | * Exec the script by typing the next command 74 | 75 | ```bash 76 | minibolt.sh 77 | ``` 78 | 79 | {% hint style="info" %} 80 | > You should see a loading process, and if you have an `admin` user password set, the prompt should ask you for this. Enter the `password [A]` and enter 81 | 82 | > To avoid the prompt asking you to enter the user admin password before the script load, follow [this section](../security/ssh-keys.md#disable-admin-password-request-caution). ⚠️**Taking into account that it carries a security risk** ⚠️ 83 | 84 | > ✅ Finally, the terminal shows you something like [the cover photo of this bonus guide](system-overview.md) 🎨 85 | {% endhint %} 86 | 87 | ## Extras (optional) 88 | 89 | ### Show on login 90 | 91 | > Run the welcome script automatically every time you log in 92 | 93 | * With user `admin`, add `minibolt.sh` to the end of your `.bashrc` file 94 | 95 | ```bash 96 | echo "minibolt.sh" >> ~/.bashrc 97 | ``` 98 | 99 | {% hint style="info" %} 100 | Now log in again as a user `admin` [opening a new SSH session](../../index-1/remote-access.md#access-with-secure-shell) you can see the process of exec script before the prompt shows you. 101 | 102 | > To avoid the prompt asking you to enter the user admin password before the script load, follow [this section](../security/ssh-keys.md#disable-admin-password-request-caution). ⚠️**Taking into account that it carries a security risk** ⚠️ 103 | 104 | > If you’re in a hurry, you can always press `Ctrl`-`C` to skip the script 105 | {% endhint %} 106 | 107 | {% hint style="info" %} 108 | To uninstall the show on login feature, type the next command: 109 | 110 | ```bash 111 | sed -i '/minibolt.sh/d' ~/.bashrc 112 | ``` 113 | 114 | Now log in again as a user `admin` [opening a new SSH session](../../index-1/remote-access.md#access-with-secure-shell) to see that it doesn't appear anymore 115 | {% endhint %} 116 | 117 | ### Get the `channel.db` size of an old LND bbolt database backend 118 | 119 | * With user `admin`, go to the temporary folder 120 | 121 | ```bash 122 | cd /tmp 123 | ``` 124 | 125 | * Clone the dedicated branch of the GitHub repository and enter it 126 | 127 | {% code overflow="wrap" %} 128 | ```bash 129 | git clone --branch LND_bboltdb https://github.com/minibolt-guide/system_overview && cd system_overview 130 | ``` 131 | {% endcode %} 132 | 133 | * Check out again the correct branch 134 | 135 | ```bash 136 | git checkout LND_bboltdb 137 | ``` 138 | 139 | Expected output: 140 | 141 | ``` 142 | Already on 'LND_bboltdb' 143 | Your branch is up to date with 'origin/LND_bboltdb'. 144 | ``` 145 | 146 | * Install it to the system 147 | 148 | ```bash 149 | sudo install -m 0755 -o root -g root -t /usr/local/bin *.sh 150 | ``` 151 | 152 | * Run following the properly [Run section](system-overview.md#run) 153 | 154 | **(Optional)** Delete the folder of the temporary folder to be ready for the upgrade 155 | 156 | ```bash 157 | sudo rm -r /tmp/system_overview 158 | ``` 159 | 160 | ### Use the MobaXterm compatibility version 161 | 162 | MobaXterm is not compatible with special characters like "₿", by default. So we should replace it with the simple character "B". 163 | 164 | * With user `admin`, go to the temporary folder 165 | 166 | ```bash 167 | cd /tmp 168 | ``` 169 | 170 | * Clone the dedicated branch of the GitHub repository and enter it 171 | 172 | {% code overflow="wrap" %} 173 | ```bash 174 | git clone --branch LND_postgres_mobaX https://github.com/minibolt-guide/system_overview && cd system_overview 175 | ``` 176 | {% endcode %} 177 | 178 | * Check out again the correct branch 179 | 180 | ```bash 181 | git checkout LND_postgres_mobaX 182 | ``` 183 | 184 | Expected output: 185 | 186 | ``` 187 | Already on 'LND_postgres_mobaX' 188 | Your branch is up to date with 'origin/LND_postgres_mobaX'. 189 | ``` 190 | 191 | * Install it to the system 192 | 193 | ```bash 194 | sudo install -m 0755 -o root -g root -t /usr/local/bin *.sh 195 | ``` 196 | 197 | * Run following the properly [Run section](system-overview.md#run) 198 | 199 | **(Optional)** Delete the folder of the temporary folder to be ready for the upgrade 200 | 201 | ```bash 202 | sudo rm -r /tmp/system_overview 203 | ``` 204 | 205 | ## Upgrade 206 | 207 | To upgrade, follow the complete [Install](system-overview.md#install)[ script](system-overview.md#install-script) and [Run](system-overview.md#run) sections again 208 | 209 | ## Uninstall 210 | 211 | * With user `admin`, type the next command to uninstall 212 | 213 | {% code overflow="wrap" %} 214 | ```bash 215 | sudo rm /usr/local/bin/minibolt.sh && sudo rm /usr/local/bin/get_LND_data.sh && sudo rm /usr/local/bin/get_CLN_data.sh 216 | ``` 217 | {% endcode %} 218 | -------------------------------------------------------------------------------- /bonus/bitcoin/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: + Bitcoin 3 | nav_order: 2000 4 | parent: Bonus Section 5 | has_children: false 6 | has_toc: false 7 | icon: bitcoin-sign 8 | layout: 9 | title: 10 | visible: true 11 | description: 12 | visible: false 13 | tableOfContents: 14 | visible: true 15 | outline: 16 | visible: true 17 | pagination: 18 | visible: true 19 | --- 20 | 21 | # ₿itcoin 22 | 23 | ## Bonus Section: ₿itcoin guides 24 | 25 | ### Electrum servers 26 | 27 | * [**Electrs**](electrs.md) - an efficient re-implementation of Electrum Server in Rust 28 | 29 | ### Signing apps 30 | 31 | #### Desktop 32 | 33 | * [**Electrum Wallet Desktop**](electrum-wallet-desktop.md) - a feature-rich desktop wallet for power-users 34 | 35 | ### Decentralized exchange 36 | 37 | * [**Bisq**](bisq.md) - a decentralized exchange desktop app connected to your node to privately buy and sell non-KYC bitcoins 38 | 39 | ### Resilience 40 | 41 | * [**Safu Ninja**](safu-ninja.md) - create resilient DIY metal backups of your seed phrases 42 | * [**Ordirespector**](ordisrespector.md) - an Ordinals NFTs spam filter for mempool politics of Bitcoin Core 43 | 44 | ### Fun 45 | 46 | * [**Download the white paper**](white-paper.md) - download the Bitcoin white paper directly from your blockchain data 47 | 48 | ### Payment processors 49 | 50 | * [**BTCPay Server**](../../bonus-guides/bitcoin/btcpay-server.md) - a free and open-source Bitcoin payment processor that allows you to accept Bitcoin without fees or intermediaries 51 | 52 | ### Testnet 53 | 54 | * [**Running a Testnet MiniBolt node**](minibolt-on-testnet.md) - configure your MiniBolt for use on testnet 55 | -------------------------------------------------------------------------------- /bonus/bitcoin/bisq.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bisq 3 | parent: + Bitcoin 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_children: false 7 | has_toc: false 8 | layout: 9 | title: 10 | visible: true 11 | description: 12 | visible: false 13 | tableOfContents: 14 | visible: true 15 | outline: 16 | visible: true 17 | pagination: 18 | visible: true 19 | --- 20 | 21 | # Bisq 22 | 23 | [Bisq](https://bisq.network/) is a decentralized bitcoin exchange. It is a desktop application that aims at providing a secure, private, and censorship-resistant way of exchanging bitcoin for national currencies and other cryptocurrencies over the internet. 24 | 25 | {% hint style="success" %} 26 | Difficulty: Easy 27 | {% endhint %} 28 | 29 | {% hint style="warning" %} 30 | Attention: This guide is only valid for Bisq v1.x.x, Bisq v2.x.x radically changes its operation in terms of the network and many steps in the guide may not match, not be valid, or necessary 31 | {% endhint %} 32 | 33 |
34 | 35 | ## Requirements 36 | 37 | * [Bitcoin Core](../../bitcoin/bitcoin/bitcoin-client.md) 38 | 39 | ## Introduction 40 | 41 | The guide will show you how to: 42 | 43 | 1. Configure BTC Core to allow Bisq to run its SPV wallet 44 | 2. Install Bisq on your personal computer 45 | 3. Connect Bisq to your Bitcoin Core node in your local network or via remote Tor, and depending on your OS and personal computer 46 | 4. Securely set up Bisq 47 | 48 | ## Preparations 49 | 50 | ### Configure Bitcoin Core 51 | 52 | * To connect Bisq from your personal computer in your local network, with the user `admin`, edit the `bitcoin.conf` file 53 | 54 | ```bash 55 | sudo nano /data/bitcoin/bitcoin.conf 56 | ``` 57 | 58 | * Replace the `bind=127.0.0.1` line with the next to allow connections from anywhere 59 | 60 |
bind=0.0.0.0
 61 | 
62 | 63 | Or add under `bind=127.0.0.1` line this line, to allow connections only from devices in the same local network (**recommended option** to improve the security) 64 | 65 |
bind=192.168.x.x
 66 | 
67 | 68 | {% hint style="info" %} 69 | Remember to replace `192.168.x.x` with your MiniBolt local IP, i.e `192.168.1.43` 70 | {% endhint %} 71 | 72 | * Add `peerbloomfilters=1` to activate the bloom filters and whitelist our P2P connection. Save and exit 73 | 74 | ``` 75 | # Support filtering of blocks and transactions with bloom filters 76 | peerbloomfilters=1 77 | 78 | # Whitelist our local network & Wireguard VPN P2P connections 79 | whitelist=bloomfilter@192.168.0.0/16 80 | whitelist=bloomfilter@10.0.0.0/16 81 | ``` 82 | 83 | * Restart Bitcoin Core to apply changes 84 | 85 | ```bash 86 | sudo systemctl restart bitcoind 87 | ``` 88 | 89 | ### Obtain your Bitcoin Core `onion` address 90 | 91 | * With the `admin` or `bitcoin` user, run the following command and make a copy of the .onion address and port (e.g. here, `123...abc.onion:8333`) 92 | 93 | ```sh 94 | bitcoin-cli getnetworkinfo | grep address.*onion 95 | ``` 96 | 97 | **Example** of expected output: 98 | 99 | ``` 100 | "address": "123...abc.onion:8333" 101 | ``` 102 | 103 | ### Configure Firewall 104 | 105 | * Configure the firewall to allow incoming requests to Bitcoin Core from anywhere 106 | 107 | ```sh 108 | sudo ufw allow 8333/tcp comment 'allow Bitcoin Core from anywhere' 109 | ``` 110 | 111 | ## Installation 112 | 113 | * [Download ](https://bisq.network/downloads/)Bisq on your personal computer using the appropriate binary for your OS 114 | * Verify the downloaded binary following [Bisq guidelines](https://bisq.wiki/Downloading_and_installing) 115 | * Once you've verified the integrity of the downloaded Bisq binary, install it on your personal computer but do NOT launch Bisq yet! 116 | 117 | ## Connect Bisq to your node 118 | 119 | For Linux and MacOS, we will start Bisq for the first time using the command line to force it to connect to your Bitcoin node only. 120 | 121 | On your personal computer where you installed Bisq, depending on your OS 122 | 123 | **For Linux:** 124 | 125 | * Open a command line terminal, we will start Bisq with two flags that will force it to connect to our node only. Bisq should connect to your node on the startup 126 | 127 | From the local network connection, replace `192.168.X.X:8333` it with your node IP address. 128 | 129 | ```sh 130 | /opt/bisq/bin/Bisq -btcNodes=192.168.X.X:8333 -useTorForBtc=false 131 | ``` 132 | 133 | From the remote connection, replace `123...abc.onion:8333` with your Bitcoin Core .onion address you obtained above 134 | 135 | ```sh 136 | /opt/bisq/bin/Bisq -btcNodes=123...abc.onion:8333 -useTorForBtc=true 137 | ``` 138 | 139 | * Wait a few minutes until Bisq is up to date with the current state of the blockchain and go back to "Settings" > "Network info" to check that only your own node local IP address or onion address is listed in the first table 140 | * Check that the "Bitcoin network peers" counter at the bottom right of the window is equal to 1 141 | 142 | **For MacOS:** 143 | 144 | * Open a command line terminal, we will start Bisq with two flags that will force it to connect to our node only 145 | * From the local network connection, replace `192.168.X.X:8333` with your node IP address 146 | 147 | ```sh 148 | Bisq -btcNodes=192.168.X.X:8333 -useTorForBtc=false 149 | ``` 150 | 151 | * From the remote connection, replace `123...abc.onion:8333` with your own Bitcoin Core .onion address that you obtained above 152 | 153 | ```sh 154 | Bisq -btcNodes=123...abc.onion:8333 -useTorForBtc=true 155 | ``` 156 | 157 | * Wait a few minutes until Bisq is up to date with the current state of the blockchain and go back to "Settings" > "Network info" to check that only your own node local IP address or onion address is listed in the first table 158 | * Check that the "Bitcoin network peers" counter at the bottom right of the window is equal to 1 159 | 160 | **For Windows**, Bisq is automatically opened using the GUI, we can't start Bisq the first time using the command line to force it to connect to your Bitcoin node only, so it will connect to several remote Bitcoin nodes via Tor, don't worry, we are going to change fastly this configuration: 161 | 162 | * Start Bisq using the GUI icon 163 | * Click on the "Settings" > "Network info" tab 164 | * In the "Bitcoin Network" section, click on "Use custom Bitcoin Core nodes" 165 | * In the box just below, paste your node IP address (`192.168.X.X`) or Bitcoin Core node `.onion` address `(e.g: 123...abc.onion:8333)` that you obtained above, depending if you are connecting locally or remotely via Tor 166 | * Check/uncheck "Use Tor for Bitcoin network" under Settings > Network, depending if you are connecting locally or remotely via Tor 167 | * Click on any other tab at the top. Bisq will ask you to shutdown the program to make your change effective 168 | * Click "Shutdown" 169 | * Start Bisq again using the GUI icon 170 | * Wait a few minutes until Bisq is up to date with the current state of the blockchain and go back to "Settings" > "Network info" to check that only your own node local IP address or onion address is listed in the first table 171 | * Check that the "Bitcoin network peers" counter at the bottom right of the window is equal to 1 172 | 173 | {% hint style="success" %} 174 | Congrats! Bisq is now connected to your node 175 | {% endhint %} 176 | 177 | ## Configuration 178 | 179 | This section will highlight key configuration options focusing on privacy and security only. 180 | 181 | For the national currency account and trading configuration options, please refer to the Bisq [website](https://bisq.network/getting-started/) and [wiki](https://bisq.wiki/Main_Page) 182 | 183 | ### Bitcoin Explorer 184 | 185 | * Click on "Settings" > "Preferences" 186 | * Click on the three dots in the "Bitcoin Explorer" section 187 | * Use the following information: 188 | * Name: Choose a name (e.g., `MiniBolt`) 189 | * Transaction URL: `https://minibolt.local:4000/tx/` (replace minibolt.local with your node IP address if required) 190 | * Address URL: `https://minibolt.local:4000/address/` (replace minibolt.local with your node IP address if required) 191 | * Click "Save" 192 | 193 | ### Wallet seed 194 | 195 | * Click on the "Account" tab 196 | * Click on "Wallet seed" 197 | * Read the pop-up message carefully. Once read, click on "I understand" 198 | * Read carefully the new warning window that appears and click on "Yes and don't ask me again' 199 | * Carefully copy the seed words and wallet date on a paper backup (NOT on any computer) 200 | * Read the "Information" section to understand the importance of the seed words and wallet date 201 | 202 | ### Backup 203 | 204 | * Still in the "Account" tab, now click on "Backup" 205 | * Click on "Select a backup location" and select a folder where your Bisq data will be backed up 206 | * Click on "Backup now (backup is not encrypted)" 207 | 208 | ### Wallet password 209 | 210 | * Still in the "Account" tab, click on "Wallet password" 211 | * Set a strong unique password (e.g., using your password manager) and click on "Set password" 212 | * In the pop-up window that just appeared, read the information and then click "Set password, I already made a backup". Once done, close the confirmation window 213 | 214 | {% hint style="success" %} 215 | Congrats! You're now ready to start buying and selling Bitcoin on Bisq securely and privately 216 | {% endhint %} 217 | 218 | ## Upgrade 219 | 220 | Bisq will let you know when a new update is available. Follow the instructions on their announcement to download, verify, and install the update. 221 | 222 | ![](../../images/bisq-update.png) 223 | 224 | ## Uninstall 225 | 226 | ### Uninstall FW configuration 227 | 228 | * Delete the firewall rules with the comment 'allow BTC Core from anywhere' identifying the number of the rule 229 | 230 | ```sh 231 | sudo ufw status numbered 232 | ``` 233 | 234 | ```sh 235 | [X] 8333 ALLOW IN Anywhere # allow BTC Core from anywhere 236 | ``` 237 | 238 | * Delete the rule with the correct number and confirm with "yes" 239 | 240 | ```sh 241 | sudo ufw delete X 242 | ``` 243 | 244 | [^1]: Replace with your IP 245 | -------------------------------------------------------------------------------- /bonus/bitcoin/electrum-wallet-desktop.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Electrum Wallet Desktop 3 | parent: + Bitcoin 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Electrum Wallet Desktop 21 | 22 | [Electrum wallet Desktop](https://electrum.org) is a well-established, feature-rich Bitcoin wallet for power users that supports most hardware wallets. 23 | 24 | {% hint style="success" %} 25 | Difficulty: Easy 26 | {% endhint %} 27 | 28 | ![](../../images/electrum\_wallet\_logo.png) 29 | 30 | ## Requirements 31 | 32 | * [Bitcoin Core](../../bitcoin/bitcoin/bitcoin-client.md) 33 | * Electrum server: [Fulcrum](../../bitcoin/bitcoin/electrum-server.md) or [Electrs](electrs.md) 34 | 35 | ## Installation 36 | 37 | On your local computer, download, verify, and install Electrum Wallet. 38 | 39 | Using the instructions on [this page](https://electrum.org/#download): 40 | 41 | * Download the required version for your OS 42 | * Download the signature file 43 | * Verify the signature following the instructions on the page depending on your OS 44 | * Install Electrum Wallet Desktop 45 | 46 | ## Configuration 47 | 48 | ### Force single server Electrum connection to only your node 49 | 50 | To preserve privacy, we will constrain Electrum to only connect to a single server (your MiniBolt). How to do this depends on whether you are connecting via Local Area Network or via Tor and the operating system that you use on your regular computer. 51 | 52 | #### Local connection 53 | 54 | If you plan to use Electrum from only within your own secured local area network, you can use the local connection details. 55 | 56 | * **Linux** 57 | * Execute this command in your Linux terminal to -1 (connect to single server only) -s (server address) 58 | 59 |
./electrum -1 -s minibolt.local:50002:s
 60 | 
61 | 62 | {% hint style="info" %} 63 | You can also use the local IP address of your node, i.e: 192.168.1.10:50002:s 64 | {% endhint %} 65 | 66 | * **Windows** 67 | * Find the new Electrum desktop shortcut, right-click it, go to "Properties", and click the shortcut tab at the top bar, in the box named target, put "`-1 -s minibolt.local:50002:s`" after "electrum.exe" 68 | 69 | ```sh 70 | "C:\Program Files (x86)\Electrum\electrum.exe" -1 -s minibolt.local:50002:s 71 | ``` 72 | 73 | {% hint style="info" %} 74 | You can use the local IP address of your node, i.e: 192.168.1.10:50002:s 75 | {% endhint %} 76 | 77 | * Apply, accept, and execute by double-clicking on the new shortcut 78 | 79 | ![](../../images/electrum-win-shortcut-local.PNG) 80 | 81 | * **macOS** 82 | * Execute this command in the Terminal application to -1 (connect to single server only) -s (server address) 83 | 84 | {% code overflow="wrap" %} 85 | ```sh 86 | /Applications/Electrum.app/Contents/MacOS/run_electrum -1 -s minibolt.local:50002:s 87 | ``` 88 | {% endcode %} 89 | 90 | {% hint style="info" %} 91 | You can use the local IP address of your node, i.e: 192.168.1.10:50002:s 92 | {% endhint %} 93 | 94 | * After using this command for the first run, close Electrum, and open the Electrum config file with the following customized command 95 | 96 | ```sh 97 | nano /Users//.electrum/config 98 | ``` 99 | 100 | * Modify the file to include the following lines 101 | 102 | ```sh 103 | "auto_connect": false, 104 | "oneserver": true, 105 | "server": "minibolt.local:50002:s", 106 | ``` 107 | 108 | {% hint style="info" %} 109 | You can use the local IP address of your node, i.e: 192.168.1.10:50002:s 110 | {% endhint %} 111 | 112 | {% hint style="info" %} 113 | After opening a wallet or creating a new one, Electrum will indicate an active connection to a local server with a green dot in the bottom right corner of the screen 114 | {% endhint %} 115 | 116 | ![](../../images/electrum-wallet-local.PNG) 117 | 118 | ### Remote connection over Tor 119 | 120 | To connect over Tor, you will need to have Tor installed on the client computer running Electrum. 121 | 122 | By OS: 123 | 124 | * **Windows**: download, install, and run [Tor Browser](https://www.torproject.org) 125 | * The application must be started manually and run in the background when you want to connect over Tor. 126 | * By default, when you have Tor Browser running, Tor proxy is available on port `9150`, but if you want to have `9050` available too, you can run background service on port `9050`, executing `"tor.exe"` file on the installation path route you chose during Tor Browser installation and following the next subpath `...\Tor Browser\Browser\TorBrowser\Tor\tor.exe"` 127 | * **Linux**: only need to execute (`sudo apt install tor`) on the command line and ensure that the Tor service is working and listening at the default ports `9050` and `9150` 128 | 129 | ```sh 130 | sudo ss -tulpn | grep tor 131 | ``` 132 | 133 | Expected output: 134 | 135 | ``` 136 | tcp LISTEN 0 4096 127.0.0.1:9050 0.0.0.0:* users:(("tor",pid=1847,fd=6)) 137 | tcp LISTEN 0 4096 127.0.0.1:9051 0.0.0.0:* users:(("tor",pid=1847,fd=7)) 138 | ``` 139 | 140 | * **macOS**: download, verify, install, and run [Tor Browser](https://www.torproject.org/) 141 | * The application must be started manually when you want to connect over Tor 142 | * By default, when you have Tor Browser running, Tor proxy is available on port 9150, use this port instead of `9050` port 143 | 144 | Now we need to specify the Tor address for the Electrum Server and the local Tor proxy port in the Electrum Wallet configuration. 145 | 146 | First, get the onion address of your Electrum server directly on the MiniBolt, depending on whether you chose the Electrs or Fulcrum service 147 | 148 | * For Electrs 149 | 150 | ```sh 151 | sudo cat /var/lib/tor/hidden_service_electrs/hostname 152 | ``` 153 | 154 | **Example** of expected output: 155 | 156 | ``` 157 | ab...yz.onion 158 | ``` 159 | 160 | * For Fulcrum 161 | 162 | ```sh 163 | sudo cat /var/lib/tor/hidden_service_fulcrum/hostname 164 | ``` 165 | 166 | **Example** of expected output: 167 | 168 | ``` 169 | ab...yz.onion.onion 170 | ``` 171 | 172 | Now, execute Electrum Wallet choosing the correct way depending on your OS (replace "9050" with "9150" if you choose to run the Tor Browser) 173 | 174 | * **Linux** 175 | * Execute this command in your Linux terminal to -1 (connect to single server only) -s (server address) 176 | 177 | ```sh 178 | ./electrum -1 -s ab...yz.onion:50002:s -p socks5:localhost:9050 179 | ``` 180 | 181 | * **Windows** 182 | * With your new shortcut created after installation in Desktop, right-click it and go to properties, click the shortcut tab at the top bar, and in the box named target put `"-1 -s ab...yz.onion:50002:s -p socks5:localhost:9050"` after `"electrum.exe"`, apply, accept, and execute by double-clicking on our new shortcut 183 | 184 | {% code overflow="wrap" %} 185 | ```sh 186 | C:\Program Files (x86)\Electrum\electrum.exe -1 -s ab...yz.onion:50002:s -p socks5:localhost:9050 187 | ``` 188 | {% endcode %} 189 | 190 | ![](../../images/electrum-win-shortcut-tor.PNG) 191 | 192 | * **macOS** 193 | * Open the Tor browser 194 | * In the Terminal application, run the following command 195 | 196 | {% code overflow="wrap" %} 197 | ```sh 198 | /Applications/Electrum.app/Contents/MacOS/run_electrum -1 -s ab...yz.onion:50002:s -p socks5:localhost:9050 199 | ``` 200 | {% endcode %} 201 | 202 | After opening a wallet or creating a new one, Electrum will indicate an active connection to a Tor server with a blue dot in the bottom right corner of the screen. 203 | 204 | ![](../../images/electrum-wallet-tor.png) 205 | 206 | {% hint style="danger" %} 207 | Try to check `"Use Tor proxy at port 9050"` or `"Use Tor proxy at port 9150"` in `"Proxy"` settings tab if not connected for you 208 | {% endhint %} 209 | 210 | ![](../../images/electrum-wallet-tor-check.PNG) 211 | 212 | {% hint style="danger" %} 213 | **Troubleshooting note:** for those who already had Electrum installed on their systems with old server connections, it is needed to clear the pre-existing cert of the certs folder. Follow these instructions: 214 | 215 | 1. Shutdown Electrum if it's running 216 | 2. Go to `C:\Users\\AppData\Roaming\Electrum\certs` (or `~/.electrum/certs` on Linux afaik) 217 | 3. Delete the certificate that corresponds to your node IP address 218 | 4. Start Electrum again 219 | {% endhint %} 220 | -------------------------------------------------------------------------------- /bonus/bitcoin/safu-ninja.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Safu Ninja 3 | parent: + Bitcoin 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_children: false 7 | has_toc: false 8 | layout: 9 | title: 10 | visible: true 11 | description: 12 | visible: false 13 | tableOfContents: 14 | visible: true 15 | outline: 16 | visible: true 17 | pagination: 18 | visible: true 19 | --- 20 | 21 | # Safu Ninja, a DIY steel mnemonic backup 22 | 23 | [Safu Ninja](https://jlopp.github.io/metal-bitcoin-storage-reviews/reviews/safu-ninja/) is a DIY way to make resilient mnemonic word backups with off-the-shelf components for complete privacy. 24 | 25 | {% hint style="success" %} 26 | Difficulty: Easy 27 | {% endhint %} 28 | 29 | ![](../../images/diy-steel-mnemonic-backup.png) 30 | 31 | ## Introduction 32 | 33 | Practically, most onchain bitcoin wallets will ask you to save a list of 12 or 24 words as a backup to recover your funds in case you lose the wallet password or your hardware wallet. 34 | 35 | Technically, these words are known as "mnemonic words" and are used together with a salt to generate a "seed". The seed itself is hashed to derive your "master private key" and the "master chain code" which is used for the various accounts in your HD wallet. You can read more about this process in [Chapter 5 of "Mastering Bitcoin"](https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05\_wallets.adoc#creating-an-hd-wallet-from-the-seed). 36 | 37 | ![](../../images/mnemonics-to-seed-to-private-key.png) 38 | 39 | Now, because these words allow you to reconstruct your wallet and recover your funds, they have to be kept very secure and never typed or saved on any computer or online device. That's why wallet providers usually advise users to write them down on a piece of paper, which is great from a security point of view. 40 | 41 | But paper is easily destroyed by water, fire, or even a pet that loves chewing things. Hence it is much better to store them in a much more resilient physical medium: e.g., steel. Various steel backup solutions have been created in the last few years. You can find a comprehensive list of them and how they performed under stress tests on [Jameson Lopp's website](https://jlopp.github.io/metal-bitcoin-storage-reviews/). 42 | 43 | ![](../../images/blockplate\_crush.png) 44 | 45 | While great, most of these techniques have one major downside... they require you to buy from a company a ready-made item whose sole use case is as a bitcoin mnemonics backup. This means that the seller will know that you probably have some bitcoin... and worst, if their customer database gets hacked, anyone could quickly know that you probably have some bitcoins. 46 | 47 | Instead, it is more private and ultimately secure to build this steel mnemonics backup from off-the-shelf components that have not been designed for Bitcoin usage. Like you did with the MiniBolt node vs buying a plug-and-play node! 48 | 49 | For example, a popular DIY method relies on standard steel washers stacked and locked on a bolt. The mnemonic words and ordering numbers are punched on the washers using a metal stamp set. All the components can be found easily in a hardware shop or online and none are associated with Bitcoin usage. Simple and private. 50 | 51 | As far as I know, Safu Ninja was the first one to come up with [this idea](https://www.reddit.com/r/Bitcoin/comments/h0j136/cheap\_and\_easy\_diy\_metal\_bitcoin\_seed\_storage/) back in June 2020. You can check their [website](https://jlopp.github.io/metal-bitcoin-storage-reviews/reviews/safu-ninja/). 52 | 53 | This metal backup has been stress tested by Jameson Lopp. Check his full review [here](https://blog.lopp.net/metal-bitcoin-seed-storage-stress-test-iv/) and below is a summary: 54 | 55 | ![](../../images/safu-ninja-stress-test-result.PNG) 56 | 57 | Let's get started! 58 | 59 | ## Hardware requirements 60 | 61 | You will need the following hardware components: 62 | 63 | * Stainless steel fender washers (e.g. M8) 64 | * Stainless steel bolts and wingnuts (e.g. M8) 65 | * Letter and number metal stamp set (e.g. 3 mm height) 66 | * Hammer 67 | 68 | Quantities are dependent on how many backups you plan to make and how many words there are in each backup (12 or 24 usually). One backup of 24 mnemonic words will require only one bolt and wingnut and 24 washers. Although, a few more would be useful for practice or if you make mistakes while stamping. 69 | 70 | The key thing is to make sure that all the sizes are compatible with each other: 71 | 72 | * The washers must have the same inner diameter as the bolt 73 | * The length of the bolt must be longer than the length of the stacked washers 74 | * The metal stamp width must be smaller than the width of the washer metallic band 75 | 76 | Also, if you want to punch more than one backup, make sure you get a stamp set that is hard enough to punch repeatedly into metal. 77 | 78 | Note: Punching into the washers can be quite difficult at times. Because of this, some guides recommend using a [Blockmit washer jig](https://www.cryptocloaks.com/product/blockmitjig/) to make it easier to hold the punch and create a tidier result. However, buying such an item makes us go back to square one as it is not an off-the-shelf component! However, if you have a 3D printer, you could print it yourself by downloading the free [3D model](https://www.tinkercad.com/things/6LnKVMshm6o). 79 | 80 | ## Instructions 81 | 82 | * Make sure that you're punching your words in a private location without any cameras that could see the words (including your phone). 83 | * Step 1: Punch the first word on a washer. It is better to punch the entire word, rather than just the first 4 letters. While the 4 first letters are sufficient to identify the unique word from the BIP 39 list of words... it removes some of the redundancy provided by the remaining letters. If the washer is damaged and the first two letters are not readable, you'll have more chance to identify the word if all the remaining letters of the word are present than if only the following 2 letters are present. 84 | * Step 2: Punch the number corresponding to the position of the word on the list. This will help in case the washers get loose and mixed. 85 | * Repeat steps 1 and 2 above for all the remaining words 86 | * (Optional) Punch the name of the wallet on a washer (e.g. "WALLET XY"). It might come in handy in a few years to remember what wallet was associated with this backup and also because some wallets might use uncommon derivation paths. Check this [list of derivation paths](https://walletsrecovery.org/) supported by each wallet maintained by @NVK and @J9Roem. 87 | * (Optional) Punch the date of creation of your wallet, known as the "birth date". This could help you quicken the search for your UTXOs when reconstructing the wallet in a few years. The wallet software used for recovery will not need to scan the entire blockchain but will start at the birth date. This does not apply to LND onchain wallets which use the azeed cipher scheme that includes the birth date in the mnemonic words. 88 | * Stack all the washers on the bolt 89 | * Screw and tighten the wingnut 90 | 91 | You're set! You now have a DIY steel metal backup that will be resistant to fire, flood, shocks, and other kinds of environmental damage. 92 | 93 | ## Recovery 94 | 95 | Below are a few pointers in case you need to use your backup to recover funds from one of your wallets. 96 | 97 | A best practice is to NEVER enter your 24 recovery words on an online software or website unless it's just a very small amount that you don't mind putting at risk. 98 | 99 | Instead, it is best to enter your mnemonic words into a dedicated and secure hardware wallet. Most hardware wallets have information on how to do just this on their website, make sure you have a look at these instructions BEFORE you have an emergency scenery! 100 | -------------------------------------------------------------------------------- /bonus/bitcoin/white-paper.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Download the White Paper 3 | parent: + Bitcoin 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_children: false 7 | has_toc: false 8 | layout: 9 | title: 10 | visible: true 11 | description: 12 | visible: false 13 | tableOfContents: 14 | visible: true 15 | outline: 16 | visible: true 17 | pagination: 18 | visible: true 19 | --- 20 | 21 | # Download the bitcoin whitepaper 22 | 23 | Download the Bitcoin white paper PDF directly from the blockchain data on your node and witness the power of a decentralized network to fight censorship. 24 | 25 | {% hint style="success" %} 26 | Difficulty: Easy 27 | {% endhint %} 28 | 29 |
30 | 31 | ## Introduction 32 | 33 | The Bitcoin whitepaper PDF was encoded in the blockchain in April 2013, in the transaction `54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713` of block `230009.` 34 | 35 | The transaction contains 947 outputs and the sender spent almost 60 million sats as miner fee! Some explanations of how the paper is encoded in the transaction are given in a [Bitcoin StackExchange post](https://bitcoin.stackexchange.com/questions/35959/how-is-the-whitepaper-decoded-from-the-blockchain-tx-with-1000x-m-of-n-multisi/35970#35970) from 2015. 36 | 37 | This guide explains how to reconstruct the Bitcoin white paper PDF using your verified blockchain data. No matter how censored the white paper could become (see [this article about white paper copyright claims](https://bitcoinmagazine.com/business/copa-suing-craig-wright-over-bitcoin-white-paper-claims)), you will know how to recreate and share the foundational document of Bitcoin. 38 | 39 | ## Preparations 40 | 41 | * Update the OS 42 | 43 | ```sh 44 | sudo apt update && sudo apt full-upgrade 45 | ``` 46 | 47 | * Install `jq`, JSON processor that will be used to parse the transaction data 48 | 49 | ```bash 50 | sudo apt install jq 51 | ``` 52 | 53 | ## Extract the whitepaper directly from Bitcoin Core 54 | 55 | * With the `admin` user, go to the temporary folder 56 | 57 | ```sh 58 | cd /tmp 59 | ``` 60 | 61 | * Use `bitcoin-cli` to download and create the PDF 62 | 63 |
bitcoin-cli getrawtransaction 54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713 true | jq -r '.vout[].scriptPubKey.asm' | cut -c3- | xxd -p -r | tail +9c | head -c 184292 > bitcoin.pdf
 64 | 
65 | 66 | * Check PDF was correctly created 67 | 68 | ```bash 69 | ls -la bitcoin.pdf 70 | ``` 71 | 72 | Expected output: 73 | 74 |
-rw-rw-r-- 1 admin admin 184292 Jul 25 21:08 bitcoin.pdf
 75 | 
76 | 77 | ### How does this work? 78 | 79 | Here's how the long command from above actually works: 80 | 81 | * With `bitcoin-cli getrawtransaction`, you get the raw data of the transaction with this specific transaction id. This command returns the result as a JSON object. 82 | 83 | You can run `bitcoin-cli help getrawtransaction` to learn more. 84 | * The result is handed over ("piped") to the next command: `jq -r '.vout[].scriptPubKey.asm'`. This instruction extracts the assembly data from the "scriptPubKey" for all transaction outputs, where the Bitcoin whitepaper data is stored. 85 | 86 | Run `jq --help` for more information. 87 | * The result is then piped into the `cut -c3-` command, which cuts off the first two characters on every line. 88 | 89 | Check out `cut --help` to learn more. 90 | * The command `xxd -p -r` takes the previous result as input and converts everything from hex into binary encoding. 91 | 92 | Run `xxd --help` for more about this command. 93 | * Then, `tail +9c` output the data starting with the 9th byte 94 | 95 | Use `tail --help` it to learn more. 96 | * Finally, the data is piped into `head -c 184292`. This command sends the first 184292 bytes onwards. 97 | 98 | Run `head --help` for more information. 99 | * The argument `> bitcoin.pdf` then takes the whole data input stream and stores it in the file "bitcoin.pdf". 100 | 101 | This concatenation of simple commands is a shining example of one of the core principles of Linux. The character `|` allows us to string them together to create powerful yet efficient data processing. 102 | 103 | ### Send the PDF to your computer 104 | 105 | To be read, the PDF can now be sent from the remote node to your local computer using the [scp](https://www.man7.org/linux/man-pages/man1/scp.1.html) utility. 106 | 107 | * **macOS or Linux** 108 | 109 | On your local computer, open a terminal window and type the following command. Replace YourNodeIP with the MiniBolt IP address (or `minibolt.local` if it works) and do not forget the dot at the end of the line (representing the destination of the file, here the 'Home' folder of your local computer) 110 | 111 | ```sh 112 | scp admin@YourNodeIP:/tmp/bitcoin.pdf . 113 | ``` 114 | 115 | * **Windows** 116 | 117 | This also works with the PSCP tool from PuTTY that you can run from the command line. See [How to Use Putty pscp to Copy Files](https://tonyteaches.tech/putty-pscp-tutorial/) for more information 118 | 119 | ```sh 120 | pscp admin@YourNodeIP:/tmp/bitcoin.pdf . 121 | ``` 122 | 123 | * The file should now be located in the Home folder of your local computer. 124 | 125 | ## Get the whitepaper from BTC RPC Explorer 126 | 127 | The BTC RPC Explorer has also a functionality to extract the data from the node and display the PDF in the web browser. 128 | 129 | ![](../../images/white-paper-transac.png) 130 | 131 | * Open your Explorer at [https://minibolt.local:4000](https://miniboltt.local:4000/) or replace "minibolt.local" with your node IP address if needed) 132 | * Look up the transaction ID in explorer: `54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713` 133 | * Click on the link "bitcoin whitepaper" in the top box, this will generate the PDF from the node blockchain and display it as a PDF file in the browser 134 | * Alternatively, use the following direct URL: [https://minibolt.local:4000/bitcoin-whitepaper](https://minibolt.local:4000/bitcoin-whitepaper) 135 | -------------------------------------------------------------------------------- /bonus/system/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: + System 3 | nav_order: 1000 4 | parent: Bonus Section 5 | has_children: false 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # 🖥️ System 21 | 22 | ## Bonus Section: System guides 23 | 24 | ### Dashboards & Appearance 25 | 26 | * [**Pimp the command line**](command-line.md) - make your command line prompt shine with a golden ฿ and use more colors overall 27 | * [**System Overview**](../../bonus-guides/system/system-overview.md) - your MiniBolt will greet you with a quick system summary 28 | 29 | ### System Administration 30 | 31 | * [**Aliases**](aliases.md) - set up CLI command shortcuts to simplify your node management experienc**e** 32 | * [**Static IP & custom DNS servers**](../../bonus-guides/system/static-ip-and-custom-dns-servers.md) - set a static IP local address and customize the DNS servers 33 | 34 | ### Common programming languages 35 | 36 | * [**Node + NPM**](nodejs-npm.md) - Install / Update / Uninstall Node + NPM 37 | * [**Rustup + Cargo**](../../bonus-guides/system/rustup-+-cargo.md) - Install / Update / Uninstall Rustup + Cargo 38 | * [**Go**](../../bonus-guides/system/go.md) - Install / Update / Uninstall Go 39 | 40 | ### Databases 41 | 42 | * [**PostgreSQL**](../../bonus-guides/system/postgresql.md) - Install / Update / Uninstall PostgreSQL database 43 | 44 | ### Hardware 45 | 46 | * [**Store data in a secondary disk**](store-data-secondary-disk.md) - use a different disk to store data (blockchain and other databases) independently of the system's disk 47 | -------------------------------------------------------------------------------- /bonus/system/aliases.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Aliases 3 | parent: + System 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Aliases 21 | 22 | Aliases are shortcuts for commands that can save time and make it easier to execute common and frequent commands. The following aliases do not display information in a fancy way, but they make it easier to execute commands. 23 | 24 | {% hint style="success" %} 25 | Difficulty: Easy 26 | {% endhint %} 27 | 28 | ![](../../images/aliases-demo.PNG) 29 | 30 | ## Introduction 31 | 32 | The following list of aliases was derived from contributions by [RobClark56](https://github.com/robclark56). 33 | 34 | ## Installation 35 | 36 | * With user `admin`, ensure you are on `home` folder and download the aliases list provided for a MiniBolt environment 37 | 38 | {% code overflow="wrap" %} 39 | ```bash 40 | cd /home/admin 41 | ``` 42 | {% endcode %} 43 | 44 | {% code overflow="wrap" %} 45 | ```bash 46 | wget https://raw.githubusercontent.com/minibolt-guide/minibolt/main/resources/.bash_aliases -O .bash_aliases 47 | ``` 48 | {% endcode %} 49 | 50 | If you want, inspect the list of aliases to make sure it does not do bad things, and modify it with your personal aliases. Exit with `Ctrl-X` 51 | 52 | ```sh 53 | nano .bash_aliases 54 | ``` 55 | 56 | * Execute a `source` command to register changes of the `.bash_aliases` file in the `.bashrc` file 57 | 58 | ```sh 59 | source /home/admin/.bashrc 60 | ``` 61 | 62 | ## Run 63 | 64 | * Simply type "alias" to display all available aliases 65 | 66 | ```sh 67 | [...] 68 | alias enableallmain='sudo systemctl enable bitcoind electrs btcrpcexplorer lnd rtl scb-backup' 69 | alias enablebitcoind='sudo systemctl enable bitcoind' 70 | alias enablebtcrpcexplorer='sudo systemctl enable btcrpcexplorer' 71 | alias enablecircuitbreaker='sudo systemctl enable circuitbreaker' 72 | alias enablecln='sudo systemctl enable cln' 73 | alias enablefulcrum='sudo systemctl enable fulcrum' 74 | [...] 75 | ``` 76 | 77 | * Test some of the aliases to see if it has been installed properly 78 | 79 | ```sh 80 | showmainversion 81 | ``` 82 | 83 |
84 | 85 | Example of expected output ⬇️ 86 | 87 | ``` 88 | The installed versions of the services are as follows: 89 | Bitcoin Core version v23.0.0 90 | lnd version 0.15.3-beta commit=v0.15.3-beta 91 | BTC RPC Explorer: "version": "3.3.0", 92 | Electrs: v0.9.9 93 | RTL: "version": "0.12.3", 94 | Tor version 0.4.7.10. 95 | NPM: v8.15.0 96 | NodeJS: v16.17.1 97 | htop 3.0.5 98 | nginx version: nginx/1.18.0 (Ubuntu) 99 | ``` 100 | 101 |
102 | 103 | ## Upgrade 104 | 105 | Follow again the [Set up Aliases](aliases.md#set-up-aliases) section again to overwrite aliases. 106 | 107 | {% hint style="info" %} 108 | You can see if the aliases have a recent update by entering [here](https://github.com/minibolt-guide/minibolt/commits/main/resources/.bash_aliases) 109 | {% endhint %} 110 | 111 | ## Uninstall 112 | 113 | * To remove these special aliases, with the user `admin`, simply deletes the `.bash_aliases` and executes a source command to register changes. The aliases will be gone with the next login 114 | 115 | ```sh 116 | rm ~/.bash_aliases 117 | ``` 118 | 119 | * Execute a source command to register changes to the `.bashrc` file 120 | 121 | ```sh 122 | source /home/admin/.bashrc 123 | ``` 124 | -------------------------------------------------------------------------------- /bonus/system/command-line.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pimp the CLI 3 | parent: + System 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Pimp the command line 21 | 22 | In this section, we are going to do instructions for changing the prompt "$" symbol to the Bitcoin symbol "₿" and color and install bash completion scripts for Bitcoin Core and Lightning projects command CLI instructions. 23 | 24 | {% hint style="success" %} 25 | Difficulty: Easy 26 | {% endhint %} 27 | 28 | ### Command prompt 29 | 30 | You can prettify your command prompt for each user by enabling color output and setting a custom prompt 31 | 32 | * With user `admin`, open and edit `.bashrc` as shown below. Save and exit 33 | 34 | ```sh 35 | nano /home/admin/.bashrc --linenumbers 36 | ``` 37 | 38 | * Uncomment line 46 39 | 40 | ``` 41 | force_color_prompt=yes 42 | ``` 43 | 44 | * Comment the existing line 60 (backup) 45 | 46 | ``` 47 | #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 48 | ``` 49 | 50 | * Add the next line (in line 61) 51 | 52 | ``` 53 | PS1="${debian_chroot:+($debian_chroot)}\[\e[33m\]\u@\h\[\033[01;34m\]\w\[\e[33m\] ₿\[\e[m\] " 54 | ``` 55 | 56 | * Insert the following at the end of the file 57 | 58 | ``` 59 | alias ls='ls -la --color=always' 60 | ``` 61 | 62 |
63 | 64 | * Apply changes 65 | 66 | ```sh 67 | source /home/admin/.bashrc 68 | ``` 69 | 70 |
71 | 72 | ### Bash completion 73 | 74 | * As user `admin`, install bash completion scripts for Bitcoin Core and LND. You then can complete partial commands by pressing the Tab key (e.g. bitcoin-cli getblockch \[Tab] → bitcoin-cli getblockchaininfo) 75 | 76 | ```bash 77 | cd /tmp/ 78 | ``` 79 | 80 |
wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/completions/bash/bitcoind.bash
 81 | 
82 | 83 | {% code overflow="wrap" %} 84 | ```bash 85 | wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/completions/bash/bitcoin-cli.bash 86 | ``` 87 | {% endcode %} 88 | 89 | {% code overflow="wrap" %} 90 | ```bash 91 | wget https://raw.githubusercontent.com/lightningnetwork/lnd/master/contrib/lncli.bash-completion 92 | ``` 93 | {% endcode %} 94 | 95 | {% code overflow="wrap" %} 96 | ```bash 97 | sudo mv bitcoind.bash bitcoin-cli.bash lncli.bash-completion /etc/bash_completion.d/ 98 | ``` 99 | {% endcode %} 100 | 101 | {% hint style="info" %} 102 | Bash completion will be enabled after your next login 103 | {% endhint %} 104 | -------------------------------------------------------------------------------- /bonus/system/nodejs-npm.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install / Update / Uninstall Node.js + NPM 3 | parent: + System 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Node + NPM 21 | 22 | [Node.js](https://nodejs.org) is an open-source, cross-platform JavaScript runtime environment. Node.js includes NPM in the installation package as well. 23 | 24 | {% hint style="success" %} 25 | Difficulty: Easy 26 | {% endhint %} 27 | 28 | ![](../../images/nodejs-logo.png) ![](../../images/npm-logo.png) 29 | 30 | ## Installation 31 | 32 | * With user `admin`, update the packages and upgrade to keep up to date with the OS, press "**y**" and "**enter**" when needed 33 | 34 | ```bash 35 | sudo apt update && sudo apt full-upgrade 36 | ``` 37 | 38 | * Change to a temporary directory that is cleared on reboot 39 | 40 | ```bash 41 | cd /tmp 42 | ``` 43 | 44 | * Set the environment variable for the version 45 | 46 | ```bash 47 | VERSION=22 48 | ``` 49 | 50 | * We will use the NodeSource Node.js Binary Distributions [repository](https://github.com/nodesource/distributions) instructions. Download the setup script 51 | 52 | {% code overflow="wrap" %} 53 | ```sh 54 | curl -fsSL https://deb.nodesource.com/setup_$VERSION.x -o nodesource_setup.sh 55 | ``` 56 | {% endcode %} 57 | 58 | * Run the setup script 59 | 60 | ```bash 61 | sudo -E bash nodesource_setup.sh 62 | ``` 63 | 64 | * Update the package manager and install Node.js + NPM. Press "**y**" and `enter` or directly `enter` if the prompt asks you 65 | 66 | ```sh 67 | sudo apt update && sudo apt install nodejs 68 | ``` 69 | 70 | * Check the correct installation of Node.js 71 | 72 | ```sh 73 | node -v 74 | ``` 75 | 76 | **Example** of expected output: 77 | 78 | ``` 79 | v18.16.0 80 | ``` 81 | 82 | * Check the correct installation of NPM 83 | 84 | ```sh 85 | npm -v 86 | ``` 87 | 88 | **Example** of expected output: 89 | 90 | ``` 91 | 9.5.1 92 | ``` 93 | 94 | * **(Optional)** Delete the setup script 95 | 96 | ```bash 97 | rm nodesource_setup.sh 98 | ``` 99 | 100 | ## Upgrade 101 | 102 | * With user `admin`, stop the current dependencies services of the Node + NPM, that are actually BTC RPC Explorer + Thunderhub 103 | 104 | ```bash 105 | sudo systemctl stop btcrpcexplorer && sudo systemctl stop thunderhub 106 | ``` 107 | 108 | * To upgrade, type this command 109 | 110 | ```sh 111 | sudo apt update && sudo apt full-upgrade 112 | ``` 113 | 114 | * Check the correct installation of the latest release 115 | 116 | ```bash 117 | node -v && npm -v 118 | ``` 119 | 120 | * Start BTC RPC Explorer & Thunderhub again 121 | 122 | ```bash 123 | sudo systemctl start btcrpcexplorer && sudo systemctl start thunderhub 124 | ``` 125 | 126 | ### Upgrade to major version 127 | 128 | * With user `admin`, stop the current dependencies services of the Node + NPM, that are actually BTC RPC Explorer + Thunderhub 129 | 130 | ```bash 131 | sudo systemctl stop btcrpcexplorer && sudo systemctl stop thunderhub 132 | ``` 133 | 134 | * Change to a temporary directory that is cleared on reboot 135 | 136 | ```bash 137 | cd /tmp 138 | ``` 139 | 140 | * Set the environment variable for the version 141 | 142 | ```bash 143 | VERSION=22 144 | ``` 145 | 146 | {% hint style="info" %} 147 | Here is important that you change the environment variable to the immediately higher LTS version, for example: `20 > 22` 148 | {% endhint %} 149 | 150 | * We will use the NodeSource Node.js Binary Distributions [repository](https://github.com/nodesource/distributions) instructions. Download the setup script 151 | 152 | {% code overflow="wrap" %} 153 | ```sh 154 | curl -fsSL https://deb.nodesource.com/setup_$VERSION.x -o nodesource_setup.sh 155 | ``` 156 | {% endcode %} 157 | 158 | * Run the setup script 159 | 160 | ```bash 161 | sudo -E bash nodesource_setup.sh 162 | ``` 163 | 164 | * Update the package manager and install Node.js + NPM. Press "**y**" and `enter` or directly `enter` if the prompt asks you 165 | 166 | ```sh 167 | sudo apt update && sudo apt install nodejs 168 | ``` 169 | 170 | * Check the correct installation of the latest release 171 | 172 | ```bash 173 | node -v && npm -v 174 | ``` 175 | 176 | * Start BTC RPC Explorer & Thunderhub again 177 | 178 | ```bash 179 | sudo systemctl start btcrpcexplorer && sudo systemctl start thunderhub 180 | ``` 181 | 182 | ## Uninstall 183 | 184 | * To uninstall, type this command and press "**y**" and "**enter**" when needed 185 | 186 | {% code overflow="wrap" %} 187 | ```sh 188 | sudo apt autoremove nodejs --purge && sudo rm /etc/apt/sources.list.d/nodesource.list 189 | ``` 190 | {% endcode %} 191 | -------------------------------------------------------------------------------- /bonus/system/store-data-secondary-disk.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Store data in a secondary disk 3 | parent: + System 4 | grand_parent: Bonus Section 5 | nav_exclude: true 6 | has_toc: false 7 | layout: 8 | title: 9 | visible: true 10 | description: 11 | visible: false 12 | tableOfContents: 13 | visible: true 14 | outline: 15 | visible: true 16 | pagination: 17 | visible: true 18 | --- 19 | 20 | # Store data in a secondary disk 21 | 22 | If you want to use a different disk to store data (blockchain and other databases) independently of the system's disk, you can follow these instructions. 23 | 24 | {% hint style="success" %} 25 | Difficulty: Easy 26 | {% endhint %} 27 | 28 | ![](../../images/store-data-secondary-disk.PNG) 29 | 30 | ## Case 1: during the Ubuntu server guided installation 31 | 32 | When you arrive at the **"Guided storage configuration"** **(step 8)** on the [Ubuntu server installation](broken-reference/), follow the next steps: 33 | 34 | **8.2.** Pay attention to checking **"Custom storage layout"** instead of ~~Use an entire disk~~, select **\[Done]** and press **ENTER** 35 | 36 | 📝 Under **AVAILABLE DEVICES** you will see both drives you installed on the PC, identify each one by **drive model name** and **storage** 37 | 38 | {% hint style="info" %} 39 | It is recommended to choose the **smallest size drive** for the system and the **bigger size drive** for the data storage **`/data`** (blockchain, databases, etc) 40 | {% endhint %} 41 | 42 | > **8.2.1.** Select the section where appeared the **MODEL** of the **primary disk** between `"[]"` and press **enter** -> Select **"Use As Boot Device"** and press **ENTER** again 43 | 44 | {% hint style="info" %} 45 | This will select this storage as the boot disk and automatically create a new partition for the **"BIOS grub spacer"** on it. 46 | {% endhint %} 47 | 48 | > **8.2.2.** Select the **"free space"** section of the same device, and select **"Add GPT Partition"**. Ensure the format is selected as **`"ext4"`**, select **`"/"`** in the dropdown as mount point, select **"Create"** and press **enter** 49 | 50 | > **8.2.3.** Now select the **"free space"** of the **secondary disk** on "AVAILABLE DEVICES" section -> **Add GPT partition**. Ensure the format is selected as `"ext4"`, select **"Other"** in the dropdown, type `/data` to assign to the new **"/data"** folder, select **\[Create]** and press enter 51 | 52 | **9.** Select **\[Done]** and press enter. Confirm destructive action warning banner hitting **\[Continue]** 53 | 54 | {% hint style="danger" %} 55 | **This will delete all existing data on the disks, including existing partitions!** 56 | {% endhint %} 57 | 58 |
59 | 60 | {% hint style="info" %} 61 | The GIF above is a recreation of a scenario made with a virtual machine **->** **VBOX\_HARDDISK\_**_VB4_... would be the **primary disk**, and **->** **VBOX\_HARDDISK\_**_VB5_... would be the **secondary disk**. In your case, this probably **will not match exactly** 62 | {% endhint %} 63 | 64 | ### Continue with the guide 65 | 66 | {% hint style="success" %} 67 | That's it: when you finish the [Operating system](../../index-1/operating-system.md) section, your PC will boot the system from the primary disk while the data directory **`/data`** will be located on the secondary disk. 68 | {% endhint %} 69 | 70 | **->** Now you can continue with **step 10** of the [Ubuntu Server installation](../../index-1/operating-system.md#ubuntu-server-installation) 71 | 72 | ## **Case 2: build it after system installation (by command line)** 73 | 74 | Attach the secondary disk to the MiniBolt node 75 | 76 | ### **Format secondary disk** 77 | 78 | * List all block devices with additional information 79 | 80 | ```sh 81 | lsblk -o NAME,MOUNTPOINT,UUID,FSTYPE,SIZE,LABEL,MODEL 82 | ``` 83 | 84 | **Example** of expected output without existing partitions: 85 | 86 | ``` 87 | NAME MOUNTPOINT UUID FSTYPE SIZE LABEL MODEL 88 | sdb 931.5G Secondary_SSD 89 | ``` 90 | 91 | **Example** of expected output with existing partitions: 92 | 93 | ``` 94 | NAME MOUNTPOINT UUID FSTYPE SIZE LABEL MODEL 95 | sdb 931.5G Secondary_SSD 96 | └─sdb1 2219-782E ext4 931.5G 97 | ``` 98 | 99 | {% hint style="info" %} 100 | Here we will see if the system has detected the new disk and what unit name has been assigned to it. Normally `sda` is the name assigned for the primary disk and `sdb` for the secondary disk, but your case could be different, pay attention to the "MODEL" column to identify each one, e.g: Samsung SSD 870" 101 | {% endhint %} 102 | 103 | ### **Delete the existing partition & create a new one** 104 | 105 | * Type this command to use the `"fdisk"` utility and manage the secondary disk 106 | 107 | ```sh 108 | sudo fdisk /dev/sdb 109 | ``` 110 | 111 | -> **2 cases**, depending on whether your drive contains partitions or not: 112 | 113 | {% tabs %} 114 | {% tab title="Case 1: doesn't contain existing partitions" %} 115 | If you don't see any "sdb**X**" partition in the previous step, i.e `sdb1`: 116 | 117 | * Press **`"n"`** to create a new partition and then press ENTER until the prompt shows you: 118 | 119 | ``` 120 | Created a new partition X of type 'Linux filesystem' 121 | (Command (m for help)) again 122 | ``` 123 | {% endtab %} 124 | 125 | {% tab title="Case 2: contain existing partitions" %} 126 | If you have an existing partition "sdb**X**" in the previous step, i.e `sdb1`: 127 | 128 | * Press **`"d"`** to delete the existing partitions and then press ENTER until the prompt shows you: 129 | 130 | ``` 131 | Partition X has been deleted 132 | (Command (m for help)) again 133 | ``` 134 | 135 | {% hint style="info" %} 136 | If you have more than one partition, repeat the before step until there are none left 137 | {% endhint %} 138 | 139 | * Press **`"n"`** to create a new partition and then press ENTER until the prompt shows: 140 | 141 | ``` 142 | Created a new partition X of type 'Linux filesystem' 143 | (Command (m for help)) again 144 | ``` 145 | {% endtab %} 146 | {% endtabs %} 147 | 148 | -> Finally, don't forget, to type **`w`** and **ENTER** to write table to disk and exit 149 | 150 | {% hint style="info" %} 151 | This will create a new partition called probably **`"sdb1"`** 152 | {% endhint %} 153 | 154 | * Format the partition with the **Ext4** system file (replace`[NAME]` to your partition name, e.g. `sdb1`) 155 | 156 | ```sh 157 | sudo mkfs.ext4 /dev/[NAME] 158 | ``` 159 | 160 | {% hint style="danger" %} 161 | **Attention: this will delete all existing data on the external drive!** 162 | {% endhint %} 163 | 164 | **Example** of command: 165 | 166 | ```bash 167 | sudo mkfs.ext4 /dev/sdb1 168 | ``` 169 | 170 | **Example** of expected output: 171 | 172 |
mke2fs 1.46.5 (30-Dec-2021)
173 | Creating filesystem with 1572608 4k blocks and 393216 inodes
174 | Filesystem UUID: dafc3c67-c6e5-4eaa-8840-adaf604c85db
175 | Superblock backups stored on blocks:
176 |         32768, 98304, 163840, 229376, 294912, 819200, 884736
177 | 
178 | 179 | {% hint style="info" %} 180 | Take note of the `Filesystem UUID` -> i.e: _dafc3c67-c6e5-4eaa-8840-adaf604c85db_, you will need this more later 181 | {% endhint %} 182 | 183 | ### **Mount the secondary disk** 184 | 185 | The secondary disk is then attached to the file system and becomes available as a regular folder (this is called “mounting”). 186 | 187 | * List the block devices one more time to ensure that UUID has been assigned 188 | 189 | ```sh 190 | lsblk -o NAME,MOUNTPOINT,UUID,FSTYPE,SIZE,LABEL,MODEL 191 | ``` 192 | 193 | **Example** of expected output: 194 | 195 |
NAME        MOUNTPOINT UUID                                        FSTYPE      SIZE LABEL  MODEL
196 | sda                                                                          126.8G        Primary_SSD
197 | └─sda1                      3aab0952-3ed4-4652-b203-d994c4fdff20     ext4    126.8G
198 | sdb                                                                          931.5G        Secondary_SSD
199 | └─sdb1                 dafc3c67-c6e5-4eaa-8840-adaf604c85db     ext4    931.5G
200 | 
201 | 202 | {% hint style="info" %} 203 | Copy the new partition `UUID` into a text editor on your regular machine 204 | {% endhint %} 205 | 206 | * Edit the `fstab` file 207 | 208 | ```sh 209 | sudo nano /etc/fstab 210 | ``` 211 | 212 | * Add the following as a new line **at the end of the file** 213 | 214 |
UUID=<yourUUID> /data ext4 defaults 0 2
215 | 
216 | 217 | {% hint style="info" %} 218 | Replace `` with your `UUID` obtained before 219 | {% endhint %} 220 | 221 | * Create the data directory as a mount point 222 | 223 | ```sh 224 | sudo mkdir /data 225 | ``` 226 | 227 | * Assing to the `admin` user as the owner of the **`/data`** folder 228 | 229 | ```sh 230 | sudo chown admin:admin /data 231 | ``` 232 | 233 | * Mount all drives 234 | 235 | ```sh 236 | sudo mount -a 237 | ``` 238 | 239 | * Check the file system. Is `/data` listed? 240 | 241 | ```sh 242 | df -h /data 243 | ``` 244 | 245 | **Example** expected output: 246 | 247 | ``` 248 | Filesystem Size Used Avail Use% Mounted on 249 | /dev/sdb1 931G 77M 891G 1% /data 250 | ``` 251 | 252 | Or check the mount point using `lsblk` 253 | 254 | ``` 255 | lsblk -o NAME,MOUNTPOINT,UUID,FSTYPE,SIZE,LABEL,MODEL 256 | ``` 257 | 258 | Example of expected output: 259 | 260 |
NAME        MOUNTPOINT     UUID                                 FSTYPE   SIZE LABEL  MODEL
261 | sda                                                                    126.8G        Primary_SSD
262 | └─sda1      /              15af9b1d-ca7c-441f-b101-c1a0cf76a062 ext4   126.8G
263 | sdb                                                                    931.5G        Secondary_SSD
264 | └─sdb1      /data          15af9b1d-ca7c-441f-b101-c1a0cf76a062 ext4   931.5G
265 | 
266 | 267 | * Check measure the speed of your secondary drive with 268 | 269 | ```sh 270 | sudo hdparm -t --direct /dev/sdb 271 | ``` 272 | 273 | {% hint style="success" %} 274 | If the measured speeds are more than 150 MB/s, you're good 275 | {% endhint %} 276 | 277 | {% hint style="info" %} 278 | Now you can continue with the Security section of the guide, press [here](../../index-1/security.md) 279 | {% endhint %} 280 | 281 | [^1]: Note this 282 | 283 | [^2]: Take note of this 284 | 285 | [^3]: Replace this 286 | -------------------------------------------------------------------------------- /images/30_mastering_bitcoin_book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/30_mastering_bitcoin_book.jpg -------------------------------------------------------------------------------- /images/SSH-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/SSH-keys.png -------------------------------------------------------------------------------- /images/aliases-demo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/aliases-demo.PNG -------------------------------------------------------------------------------- /images/bisq-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/bisq-update.png -------------------------------------------------------------------------------- /images/bitcoin-core-logo-trans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/bitcoin-core-logo-trans.png -------------------------------------------------------------------------------- /images/bitcoin-network-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/bitcoin-network-small.png -------------------------------------------------------------------------------- /images/bitcoin-ots-check.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/bitcoin-ots-check.PNG -------------------------------------------------------------------------------- /images/blockplate_crush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/blockplate_crush.png -------------------------------------------------------------------------------- /images/desec-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec-account.png -------------------------------------------------------------------------------- /images/desec_io0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io0.png -------------------------------------------------------------------------------- /images/desec_io1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io1.png -------------------------------------------------------------------------------- /images/desec_io10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io10.png -------------------------------------------------------------------------------- /images/desec_io2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io2.png -------------------------------------------------------------------------------- /images/desec_io3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io3.png -------------------------------------------------------------------------------- /images/desec_io7.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io7.PNG -------------------------------------------------------------------------------- /images/desec_io8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/desec_io8.png -------------------------------------------------------------------------------- /images/diy-steel-mnemonic-backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/diy-steel-mnemonic-backup.png -------------------------------------------------------------------------------- /images/electrs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrs-logo.png -------------------------------------------------------------------------------- /images/electrum-wallet-local.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum-wallet-local.PNG -------------------------------------------------------------------------------- /images/electrum-wallet-tor-check.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum-wallet-tor-check.PNG -------------------------------------------------------------------------------- /images/electrum-wallet-tor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum-wallet-tor.png -------------------------------------------------------------------------------- /images/electrum-win-shortcut-local.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum-win-shortcut-local.PNG -------------------------------------------------------------------------------- /images/electrum-win-shortcut-tor.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum-win-shortcut-tor.PNG -------------------------------------------------------------------------------- /images/electrum_wallet_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/electrum_wallet_logo.png -------------------------------------------------------------------------------- /images/fulcrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/fulcrum.png -------------------------------------------------------------------------------- /images/get-bridge.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/get-bridge.PNG -------------------------------------------------------------------------------- /images/i2p-troubleshoting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/i2p-troubleshoting.png -------------------------------------------------------------------------------- /images/i2pd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/i2pd.png -------------------------------------------------------------------------------- /images/lightning-network-daemon-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/lightning-network-daemon-logo.png -------------------------------------------------------------------------------- /images/minibolt-home-screen-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/minibolt-home-screen-og.png -------------------------------------------------------------------------------- /images/minibolt-home-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/minibolt-home-screen.png -------------------------------------------------------------------------------- /images/minibolt-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/minibolt-logo.png -------------------------------------------------------------------------------- /images/mnemonics-to-seed-to-private-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/mnemonics-to-seed-to-private-key.png -------------------------------------------------------------------------------- /images/nodejs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/nodejs-logo.png -------------------------------------------------------------------------------- /images/npm-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/npm-logo.png -------------------------------------------------------------------------------- /images/nyx-tor-bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/nyx-tor-bridge.png -------------------------------------------------------------------------------- /images/ordisrespector-btcrpcexplorer-notfound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-btcrpcexplorer-notfound.png -------------------------------------------------------------------------------- /images/ordisrespector-mempool-blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-mempool-blocks.png -------------------------------------------------------------------------------- /images/ordisrespector-mempool-cube-tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-mempool-cube-tx.png -------------------------------------------------------------------------------- /images/ordisrespector-mempool-notfound.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-mempool-notfound.PNG -------------------------------------------------------------------------------- /images/ordisrespector-mempool-space-tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-mempool-space-tx.png -------------------------------------------------------------------------------- /images/ordisrespector-thread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ordisrespector-thread.png -------------------------------------------------------------------------------- /images/preparations_xkcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/preparations_xkcd.png -------------------------------------------------------------------------------- /images/remote-scb-backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/remote-scb-backup.png -------------------------------------------------------------------------------- /images/safu-ninja-stress-test-result.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/safu-ninja-stress-test-result.PNG -------------------------------------------------------------------------------- /images/sparrow-electrum-no-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-electrum-no-proxy.png -------------------------------------------------------------------------------- /images/sparrow-electrum-tor-no-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-electrum-tor-no-proxy.png -------------------------------------------------------------------------------- /images/sparrow-server-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-server-icon.png -------------------------------------------------------------------------------- /images/sparrow-server-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-server-logo.png -------------------------------------------------------------------------------- /images/sparrow-server-proxy-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-server-proxy-icons.png -------------------------------------------------------------------------------- /images/sparrow-server-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-server-terminal.png -------------------------------------------------------------------------------- /images/sparrow-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-server.png -------------------------------------------------------------------------------- /images/sparrow-stages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-stages.png -------------------------------------------------------------------------------- /images/sparrow-tor-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/sparrow-tor-proxy.png -------------------------------------------------------------------------------- /images/store-data-secondary-disk.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/store-data-secondary-disk.PNG -------------------------------------------------------------------------------- /images/tor-bridge-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/tor-bridge-running.png -------------------------------------------------------------------------------- /images/tor-bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/tor-bridge.png -------------------------------------------------------------------------------- /images/tor-censorship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/tor-censorship.png -------------------------------------------------------------------------------- /images/tor-failing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/tor-failing.jpg -------------------------------------------------------------------------------- /images/tor-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/tor-logo.png -------------------------------------------------------------------------------- /images/ubuntu-profile-setup.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/ubuntu-profile-setup.PNG -------------------------------------------------------------------------------- /images/update-action.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/update-action.PNG -------------------------------------------------------------------------------- /images/white-paper-transac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/white-paper-transac.png -------------------------------------------------------------------------------- /images/wireguard-VPN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/wireguard-VPN.png -------------------------------------------------------------------------------- /images/wireguard-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/wireguard-windows.png -------------------------------------------------------------------------------- /images/wireguard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/images/wireguard.png -------------------------------------------------------------------------------- /index-1/configuration.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 1.4 Configuration 16 | 17 | You are now on the command line of your own Bitcoin node. Let's start with the configuration. 18 | 19 |
20 | 21 | ## Add the admin user (and log in with it) 22 | 23 | We will use the primary user `admin` instead of `temp` to make this guide more universal. 24 | 25 | * Create a new user called `admin` with your `password [A]` when password ask you 26 | 27 | ```sh 28 | sudo adduser --gecos "" admin 29 | ``` 30 | 31 | **Example** of expected output: 32 | 33 | ``` 34 | Adding user `admin' ... 35 | Adding new group `admin' (1001) ... 36 | Adding new user `admin' (1001) with group `admin' ... 37 | Creating home directory `/home/admin' ... 38 | Copying files from `/etc/skel' ... 39 | ``` 40 | 41 | * Make this new user a superuser by adding it to the `sudo` and old `temp` user groups 42 | 43 | ```sh 44 | sudo usermod -a -G sudo,adm,cdrom,dip,plugdev,lxd admin 45 | ``` 46 | 47 | * Logout the existing `temp` user 48 | 49 | ```sh 50 | logout 51 | ``` 52 | 53 | * Repeat [Access with Secure Shell](remote-access.md#access-with-secure-shell) but this time login with `admin` and your `password [A]` 54 | * Delete the `temp` user. Do not worry about the `userdel: temp mail spool (/var/mail/temp) not found` message 55 | 56 | ```sh 57 | sudo userdel -rf temp 58 | ``` 59 | 60 | Expected output: 61 | 62 | ``` 63 | userdel: temp mail spool (/var/mail/temp) not found 64 | ``` 65 | 66 | {% hint style="info" %} 67 | To change the system configuration and files that don't belong to the user "admin", you have to prefix commands with `sudo`. You will be prompted to enter your admin `password [A]` from time to time for increased security 68 | {% endhint %} 69 | 70 | ## Login with SSH keys (optional) 71 | 72 | {% hint style="info" %} 73 | Now, you can start to access it without a password by following the [SSH keys bonus guide](../bonus-guides/security/ssh-keys.md) 74 | {% endhint %} 75 | 76 | ## Uninstall Snap (optional) 77 | 78 | Ubuntu Server comes with snap preinstalled by default. However, since we don't plan to use it, it can be safely removed without impacting system functionality. Uninstalling Snap is a straightforward process that will help keep our MiniBolt clean and optimized for the applications you need. 79 | 80 | * Delete the existing Snap packages 81 | 82 | ```bash 83 | sudo snap remove lxd && sudo snap remove core20 && sudo snap remove snapd 84 | ``` 85 | 86 | Expected output: 87 | 88 | ``` 89 | lxd removed 90 | core20 removed 91 | snapd removed 92 | ``` 93 | 94 | * Ensure packages have been deleted successfully 95 | 96 | ```bash 97 | snap list 98 | ``` 99 | 100 | Expected output: 101 | 102 | ``` 103 | No snaps are installed yet. Try 'snap install hello-world'. 104 | ``` 105 | 106 | * Stop and disable the `snapd.service` & `snapd.socket` processes 107 | 108 | ```bash 109 | sudo systemctl stop snapd snapd.socket && sudo systemctl disable snapd snapd.socket 110 | ``` 111 | 112 | Expected output: 113 | 114 | ``` 115 | Removed /etc/systemd/system/multi-user.target.wants/snapd.service. 116 | Removed /etc/systemd/system/sockets.target.wants/snapd.socket. 117 | ``` 118 | 119 | * To uninstall, use the package manager by typing this command. Press "**y**" and `enter` or directly `enter` when the prompt asks you 120 | 121 | ```bash 122 | sudo apt autoremove snapd --purge 123 | ``` 124 | 125 | Expected output: 126 | 127 | ``` 128 | Reading package lists... Done 129 | Building dependency tree... Done 130 | Reading state information... Done 131 | The following packages will be REMOVED: 132 | snapd* squashfs-tools* ubuntu-server-minimal* 133 | 0 upgraded, 0 newly installed, 3 to remove and 7 not upgraded. 134 | After this operation, 110 MB disk space will be freed. 135 | Do you want to continue? [Y/n] 136 | ``` 137 | 138 | * Delete the residual folders 139 | 140 | ```bash 141 | sudo rm -r /root/snap 142 | ``` 143 | 144 | ## System update 145 | 146 | * Update the operating system and all installed software packages 147 | 148 | ```sh 149 | sudo apt update && sudo apt full-upgrade 150 | ``` 151 | 152 | {% hint style="info" %} 153 | -> Do this regularly for security-related updates 154 | 155 | -> If during the update process, a banner appears asking you, "Which services should be restarted?" you can press ENTER and take note of the services that will be restarted, marked with `[*]`. Example 🔽 156 | {% endhint %} 157 | 158 | ![](../images/update-action.PNG) 159 | 160 | {% hint style="info" %} 161 | It is recommended to keep the default selection and restart all marked items. However, if you want to unmark any of them, select the item and press the **spacebar to toggle the mark**. Finally, press `ENTER` to confirm 162 | {% endhint %} 163 | 164 | * To be able to use the `minibolt` hostname instead of the IP address, we must install this necessary software package. Press "**y**" and `enter` or directly `enter` when the prompt asks you 165 | 166 | ```sh 167 | sudo apt install avahi-daemon 168 | ``` 169 | 170 | ## Check drive performance 171 | 172 | Performant unit storage is essential for your node. 173 | 174 | Let's check if your drive works well as-is. 175 | 176 | * Your disk should be detected as `/dev/sda`. Check if this is the case by listing the names of connected block devices 177 | 178 | ```sh 179 | lsblk -pli 180 | ``` 181 | 182 | * Measure the speed of your drive 183 | 184 | ```sh 185 | sudo hdparm -t --direct /dev/sda 186 | ``` 187 | 188 | **Example** of expected output: 189 | 190 | ``` 191 | Timing O_DIRECT disk reads: 932 MB in 3.00 seconds = 310.23 MB/sec 192 | ``` 193 | 194 | * If you installed a **secondary disk**, check and measure the speed with the next command, if not, skip it 195 | 196 | ```sh 197 | sudo hdparm -t --direct /dev/sdb 198 | ``` 199 | 200 | **Example** of expected output: 201 | 202 | ``` 203 | Timing O_DIRECT disk reads: 932 MB in 3.00 seconds = 310.23 MB/sec 204 | ``` 205 | 206 | {% hint style="success" %} 207 | If the measured speeds are more than 150 MB/s, you're good but it is recommended more for a better experience 208 | {% endhint %} 209 | 210 | ## Data directory 211 | 212 | We'll store all application data in the dedicated directory `/data`. This allows for better security because it's not inside any user's home directory. Additionally, it's easier to move that directory somewhere else, for instance to a separate drive, as you can just mount any storage option to `/data` 213 | 214 | * Create the data folder 215 | 216 | ```sh 217 | sudo mkdir /data 218 | ``` 219 | 220 | {% hint style="info" %} 221 | Remember that the before command is unnecessary if you previously followed [Case 1](../bonus/system/store-data-secondary-disk.md#case-1-during-the-ubuntu-server-guided-installation) of [Store data in a secondary disk](../bonus/system/store-data-secondary-disk.md) bonus guide, which involves storing the data in a secondary disk. This is because the **("data")** folder has already been created. If the prompt shows you: `mkdir: cannot create directory '/data': File exists` probably is that. Then ignore it and follow with the next command 🔽 222 | {% endhint %} 223 | 224 | * Assing to the `admin` user as the owner of the **`/data`** folder 225 | 226 | ```sh 227 | sudo chown admin:admin /data 228 | ``` 229 | -------------------------------------------------------------------------------- /index-1/operating-system.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 1.2 Operating system 16 | 17 | We configure the PC and install the Ubuntu Server operating system. 18 | 19 |
20 | 21 | ## Which operating system to use? 22 | 23 | We use Ubuntu Server LTS (Long Term Support) OS, without a graphical user interface. This provides the best stability for the PC and makes the initial setup a breeze. 24 | 25 | [Ubuntu Server](https://ubuntu.com/server) is based on the [Debian](https://www.debian.org/) Linux distribution, which is available for most hardware platforms. To make this guide as universal as possible, it uses only standard Debian based commands. As a result, it should work smoothly with a personal computer while still being compatible with most other hardware platforms running Debian. 26 | 27 | ## Balena Etcher and Ubuntu Server 28 | 29 | To flash the operating system **(.iso file)** to the pen drive, we will use the [Balena Etcher](https://www.balena.io/etcher/) application: 30 | 31 | * Go to the website and [download](https://etcher.balena.io/#download-etcher) the correct binary according to your OS. 32 | * Direct download Ubuntu Server **22.04.5 LTS** by clicking [here](https://releases.ubuntu.com/22.04.5/ubuntu-22.04.5-live-server-amd64.iso). 33 | 34 | {% hint style="warning" %} 35 | **Attention!!** MiniBolt has currently been tested using Ubuntu Server **22.04.5 LTS** (**Jammy** Jellyfish), it has not been tested on other distributions or versions and there is no guarantee that it will work well on them. The steps may differ from the guide, and **support won’t be facilitated in the provided groups.** 36 | {% endhint %} 37 | 38 | * **Start** the **Balena Etcher.** 39 | * Select **"Flash from file"** -> Select the Ubuntu Server LTS **(.iso)** file previously downloaded. 40 | 41 | ## Write the operating system to the pen drive 42 | 43 | * Connect the pen drive to your regular computer. 44 | * Click on **"Select target".** 45 | * Select your pen drive unit. 46 | * Click on **"Flash!**". 47 | 48 | {% hint style="info" %} 49 | Balena Etcher will now flash the operating system to your drive and validate it 50 | {% endhint %} 51 | 52 | {% hint style="success" %} 53 | It should display a **"Flash Complete!"** message after 54 | {% endhint %} 55 | 56 | ## Start your PC 57 | 58 | 1. **Safely eject** the pen drive from your regular computer. 59 | 2. **Connect the pen drive to your selected PC** for the MiniBolt node. 60 | 3. **Attach a screen**, a **keyboard,** and the **Ethernet** wire of the Internet (not the case for Wi-Fi connection) to the **PC** and start it. 61 | 4. Press the key quickly to **enter THE BIOS setup** or directly to the **boot menu** to select the **pen drive as the 1st boot priority device** (normally, F9, Esc, F12, or Supr keys). 62 | 63 | {% hint style="info" %} 64 | In this step, you might want to activate the **Restore on AC** / **After power failure** or similar in the BIOS setup. 65 | 66 | Normally found in **Advanced** -> **Power** / **ACPI Configuration**, switching to **Last State / Memory** or similar (System power on depends on the status before AC lost) or **Power ON / Full on** or similar (Always power on the system when AC back) depends on your preference. 67 | 68 | With this, you can get the PC to start automatically after a power loss, ensuring services are back available in your absence. 69 | {% endhint %} 70 | 71 | 5. If you configured boot options in BIOS, **save changes and exit**. This starts automatically with the Ubuntu Server guided installation. You will keep selecting **\[Try or Install Ubuntu Server]** and press **ENTER**, or wait 20 seconds for it to start automatically. 72 | 73 | ## Ubuntu Server installation 74 | 75 | Use your keyboard's UP, DOWN, and ENTER keys to navigate to the options. Follow the next instructions: 76 | 77 | **1.** On the first screen, select the language of your choice **(English recommended).** 78 | 79 | **2.** If there is an installer update available, select **"Update to the new installer"**, press **ENTER,** and wait. 80 | 81 | **3.** Select your keyboard layout and variant **(Spanish recommended to Spanish native speakers)** and press **\[done].** 82 | 83 | **4.** Keep selecting **"Ubuntu Server"** as the base for the installation, down to **\[done],** and press **ENTER.** 84 | 85 | **5.** Select the interface network connection you use **(Ethernet recommended)** and **take note of your IP** obtained automatically through DHCP. (Normally 192.168.x.xx). Press **\[done].** 86 | 87 | {% hint style="info" %} 88 | The router reserves the IP address of the device for a time after going out (i.e. after power failure), but if the device goes out some time, the next time that the device starts, the router could assign a different IP. You could lose access to your node temporarily. To avoid this, you need to set a static IP on your node, avoiding the delivery decision of the DHCP server of the router. Go to the [Static IP & custom DNS servers](../bonus-guides/system/static-ip-and-custom-dns-servers.md) bonus guide for further instructions on [how to do this](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-1-at-the-beginning-during-the-ubuntu-server-installation-gui). 89 | 90 | \ 91 | 🚨 **Be careful by setting the static IP!** If you change the router, the new one may not work in the same IP address range as the old one, the MiniBolt will not register and will be **completely offline**. To avoid this, previously to the change, follow the [Set the DCHP (automatic) configuration section](../bonus-guides/system/static-ip-and-custom-dns-servers.md#set-the-automatic-dhcp-mode-configuration-by-command-line) of the bonus guide to ensure that the DHCP server auto assigns an IP to the node in the range you are working on, and if you want, after the change of the router, reconfigure the static IP address again following the [Option 2](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-2-after-ubuntu-server-installation-by-command-line) section. 92 | {% endhint %} 93 | 94 | **6.** Leave the empty next option if you don't want to use an HTTP proxy to access it. Press **\[done].** 95 | 96 | **7.** If you don't want to use an alternative mirror for Ubuntu (more common), leave it empty and press **\[done]** directly. 97 | 98 | **8.** Configure a **guided storage layout**, with 2 options: 99 | 100 | > **8.1.** Check **"Use an entire disk"**, if you have **only one primary unit storage (2+ TB)**. In this case, ensure that you **uncheck "Set up this disk as an LVM group"** before select **\[done]** and press **ENTER**. Then, continue with **step 9**. 101 | 102 | > **8.2.** Check **"Custom storage layout"**, if you want to use one **secondary** disk, e.g. primary for the system and secondary disk for data (blockchain, indexes, etc) (2+ TB). For this case, go to -> the [Case 1](../bonus/system/store-data-secondary-disk.md#case-1-during-the-ubuntu-server-guided-installation) of [Store data in a secondary disk](../bonus/system/store-data-secondary-disk.md) bonus guide, to get instructions about how to follow, and then continue with **step 10**. 103 | 104 | **9.** Confirm destructive action by selecting the **\[Continue]** option. Press **ENTER.** 105 | 106 | {% hint style="danger" %} 107 | **This will delete all existing data on the disks, including existing partitions!** 108 | {% endhint %} 109 | 110 | **10.** Keep selecting **\[Skip for now],** when the **\[Upgrade to Ubuntu Pro]** section appears you press **ENTER** on the **done** button. 111 | 112 | **11.** The username **`admin`** is reserved for use by the system, to use in the first place, so we are going to create a **temporary user** called "`temp`" which we will **delete later**. Complete the profile configuration form with the following: 113 | 114 | {% hint style="danger" %} 115 | Very IMPORTANT step! 116 | {% endhint %} 117 | 118 | {% code fullWidth="false" %} 119 | ``` 120 | > name: temp 121 | > user: temp 122 | > server name: minibolt 123 | > password: PASSWORD [A] 124 | ``` 125 | {% endcode %} 126 | 127 | **12.** Press **ENTER** to check **"Install OpenSSH server"**, down to select the **\[done]** box, and press **ENTER** again. 128 | 129 | {% hint style="danger" %} 130 | Very IMPORTANT step! 131 | {% endhint %} 132 | 133 | **13.** If you want to preinstall some additional software **(not recommended)**, select them, if not, press **\[done]** directly to jump to the next step. 134 | 135 | **14.** Now all before configurations will be applied and the system installed. This would be a few minutes depending on the hardware used. You can show extended logs by pressing **\[View full log]**. 136 | 137 | {% hint style="info" %} 138 | ⌛ Wait until the installation finishes, when it happens, **\[Reboot now]** will appear. Select it and press **ENTER** 139 | {% endhint %} 140 | 141 | **15.** When the prompt shows you **"Please remove the installation medium, then press ENTER"**, extract the pen drive of the PC and press **ENTER.** 142 | 143 | {% hint style="success" %} 144 | Now the PC should reboot and show you the prompt to log in. You can disconnect the keyboard and the screen of the MiniBolt node, and proceed to connect remotely from your regular computer to continue with the installation 145 | {% endhint %} 146 | 147 |

GIF showing an example of Ubuntu installation using automatic (DHCP)

148 | 149 | {% hint style="info" %} 150 | The GIF before is only a recreation of a scenario made with a virtual machine, (**VBOX\_HARDDISK\_**...) is the **example name** for the disk's name. In your case, this probably will not match exactly 151 | {% endhint %} 152 | -------------------------------------------------------------------------------- /index-1/preparations.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 1.1 Preparations 16 | 17 | Let's get all the necessary hardware parts and prepare some passwords. 18 | 19 |
20 | 21 | ## Personal computer 22 | 23 | This guide builds on the readily available personal computer. 24 | 25 | While a personal computer is the best choice, this guide works with other computing platforms, cloud servers, or virtual machines. 26 | 27 | ## Hardware requirements 28 | 29 | You need the following hardware: 30 | 31 | * CPU Intel/AMD processor (2010+ gen). 32 | * 2+ GB RAM (only Bitcoin), 4+ GB RAM is recommended (Bitcoin + Lightning + bonus). 33 | * Internal storage: SSD SATA/NVMe **2+ TB** is recommended. 34 | * Pen drive USB/SD drive: **4+ GB.** 35 | * Temporary monitor screen or TV. 36 | * Temporary keyboard USB/PS2. 37 | 38 | You might also want to get this optional hardware: 39 | 40 | * UPS (uninterruptible power supply). 41 | * Suggestions: 42 | * For router + node (same room): [Salicru SPS 500 ONE](https://www.salicru.com/gb-en/sps-one-1.html) \~ 50-60€ 43 | * Only for the router (separate rooms): [SPS NET2](https://www.salicru.com/gb-en/sps-net2-1.html) \~ 50€ 44 | * A small USB thumb drive or microSD card (**1+ GB**) to create regular local backups of your Lightning channels. 45 | 46 | ## Write down your passwords 47 | 48 | You will need several passwords, and it's easiest to write them all down in the beginning, instead of bumping into them throughout the guide. They should be unique and secure, at least 12 characters. Do **not use uncommon special characters**, spaces, or quotes (‘ or “). 49 | 50 | ``` 51 | [ A ] Master admin user password 52 | [ B ] Bitcoin RPC password 53 | [ C ] LND wallet password 54 | [ D ] BTC-RPC-Explorer password (optional) 55 | [ E ] ThunderHub password 56 | [ F ] i2pd webconsole password (optional) 57 | ``` 58 | 59 | ![](../.gitbook/assets/password_strength.png) 60 | 61 | If you need inspiration for creating your passwords: the [xkcd: Password Strength](https://xkcd.com/936/) comic is funny and contains a lot of truth. Store a copy of your passwords somewhere safe (preferably in an open-source password manager like [KeePassXC](https://keepassxc.org/)), or whatever password manager you're already using, and keep your original notes out of sight once your system is up and running. 62 | 63 | ## Secure your home network and devices 64 | 65 | While the guide will show you how to secure your node, you will interact with it from your computer and mobile phone and use your home internet network. Before building your MiniBolt, it is recommended to secure your home network and devices. Follow Parts 1 and 2 of this ["How to Secure Your Home Network Against Threats"](https://restoreprivacy.com/secure-home-network/) tutorial by Heinrich Long, and try to implement as many points as possible (some might not apply to your router/device). 66 | -------------------------------------------------------------------------------- /index-1/remote-access.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 1.3 Remote access 16 | 17 | We connect to your personal computer by using the Secure Shell. 18 | 19 |
20 | 21 | ## Find your PC 22 | 23 | Your personal computer is starting and gets a new address from your home network. Give it a few minutes to come to life. 24 | 25 | * On your regular computer, open the Terminal (also known as "command line") 26 | * On Linux/macOS with a graphical interface, search on the application list, "Terminal" or press the keyboard shortcut `Ctrl + Alt + T` 27 | * On Windows, search on the application list `cmd` 28 | * Try to ping using the IP assigned to your MiniBolt in the before step 29 | 30 | ```sh 31 | ping 192.168.x.xxx 32 | ``` 33 | 34 | **Example** of expected output: 35 | 36 | ``` 37 | PING 192.168.1.147 (192.168.1.147) 56(84) bytes of data. 38 | 64 bytes from 192.168.1.147: icmp_seq=1 ttl=64 time=2.44 ms 39 | 64 bytes from 192.168.1.147: icmp_seq=2 ttl=64 time=1.75 ms 40 | 64 bytes from 192.168.1.147: icmp_seq=3 ttl=64 time=1.61 ms 41 | 64 bytes from 192.168.1.147: icmp_seq=4 ttl=64 time=1.58 ms 42 | ``` 43 | 44 | * If the`ping` command fails or does not return anything, you need to manually look for your PC 45 | * You should now be able to reach your PC, with the IP address like `192.168.x.xxx` 46 | 47 | ## Access with Secure Shell 48 | 49 | Now it’s time to connect to the MiniBolt via Secure Shell (SSH) and get to work. For that, we need an SSH client. 50 | 51 | Install and start the SSH client for your operating system: 52 | 53 | * **Windows**, 2 options: 54 | * Download **Putty** [64-bit x86](https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe) or [32-bit x86](https://the.earth.li/~sgtatham/putty/latest/w32/putty.exe) version depending on your OS architecture. \[[Source](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)] 55 | * Start Putty, to the left tree, select "session", in the "Hostname (or IP address)" box, type `temp@192.168.x.xx`, port `22` to the left box. 56 | * Press the button OPEN, when a "PuTTy security alert" banner appears, press the "Accept" button, and finally type your `password [A]`. 57 | * [Download](https://mobaxterm.mobatek.net/download-home-edition.html) the **MobaXterm** Portable Edition or Installer Edition version depending on whether you want to install it permanently or not. 58 | * Start MobaXterm, 2 options: 59 | * If you want to save the session for later: on the top menu, click on "Session" -> "New session" -> Select "SSH". 60 | * Enter MiniBolt IP address (192.168.x.xx), check "specify username" and enter to the right "temp", keep port "22" selected to the right. 61 | * Press the button OK, when a "Connexion to..." banner appears, press the "Accept" button, and finally type your `password [A]`. 62 | * Otherwise, select on the dashboard the "Start local terminal" button and type directly on the terminal `ssh temp@192.168.x.xxx`. 63 | * **MacOS** and **Linux**: 64 | * From the native terminal, type: `ssh temp@192.168.x.xxx` 65 | * Use Putty, simply from the native terminal type `sudo apt install putty` and start it by typing `putty`, follow the same Putty instructions as before for Windows. 66 | 67 | {% hint style="info" %} 68 | Note, connection details: 69 | 70 | ``` 71 | hostname: your MiniBolt IP address like: 192.168.x.xxx 72 | port: 22 73 | username: temp 74 | password: password [A] 75 | ``` 76 | {% endhint %} 77 | 78 | ## The command line 79 | 80 | We will work on the command line of the PC, which may be new to you. Find some basic information below. It will help you navigate and interact with your PC. 81 | 82 | You enter commands and the PC answers by printing the results below your command. 83 | 84 | Additional comments begin with `#` and must not be entered. 85 | 86 | In the following example, just enter `ls -la` and press the enter/return key: 87 | 88 | ```sh 89 | ls -la 90 | ``` 91 | 92 | ``` 93 | # This is a comment, don't enter this on the command line 94 | ``` 95 | 96 | * **Auto-complete commands**: you can use the `Tab` key for auto-completion when you enter commands, i.e., for commands, directories, or filenames. 97 | * **Command history**: by pressing ⬆️ (arrow up) and ⬇️ (arrow down) on your keyboard, you can recall previously entered commands. 98 | * **Use admin privileges**: our regular user has no direct admin privileges. If a command needs to edit the system configuration, we must use the `sudo` ("superuser do") command as a prefix. Instead of editing a system file with `nano /etc/fstab`, we use `sudo nano /etc/fstab`. 99 | 100 | For security reasons, service users like "bitcoin" cannot use the `sudo` command. 101 | * **Using the Nano text editor**: we use the Nano editor to create new text files or edit existing ones. It's not complicated, but saving and exiting are not intuitive. 102 | * Save: hit `Ctrl-O` (for Output), confirm the filename, and hit the `Enter` key 103 | * Exit: hit `Ctrl-X` 104 | * **Copy / Paste**: if you are using Windows and the PuTTY SSH client, you can copy text from the shell by selecting it with your mouse (no need to click anything), and paste stuff at the cursor position with a right-click anywhere in the ssh window. 105 | 106 | In other Terminal programs, copy/paste usually works with `Ctrl`-`Shift`-`C` and `Ctrl`-`Shift`-`V`. 107 | 108 | ## Port reference 109 | 110 |
PortProtocolUse
22TCPDefault SSH server port
111 | -------------------------------------------------------------------------------- /index-1/security.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 3 | title: 4 | visible: true 5 | description: 6 | visible: false 7 | tableOfContents: 8 | visible: true 9 | outline: 10 | visible: true 11 | pagination: 12 | visible: true 13 | --- 14 | 15 | # 1.5 Security 16 | 17 | We make sure that your MiniBolt is secured against unauthorized remote access. 18 | 19 | The MiniBolt needs to be secured against online attacks using various methods. 20 | 21 |
22 | 23 | ## Check IPv6 availability 24 | 25 | * With user `admin`, check your IPv6 availability 26 | 27 | {% code overflow="wrap" %} 28 | ```bash 29 | ping6 -c2 2001:858:2:2:aabb:0:563b:1526 && ping6 -c2 2620:13:4000:6000::1000:118 && ping6 -c2 2001:67c:289c::9 && ping6 -c2 2001:678:558:1000::244 && ping6 -c2 2001:638:a000:4140::ffff:189 && echo OK. 30 | ``` 31 | {% endcode %} 32 | 33 | **-> 2 output options:** 34 | 35 | {% tabs %} 36 | {% tab title="First (more common)" %} 37 | If you obtain `ping6: connect: Network is unreachable`, you don't have IPv6 availability, don't worry, the IPv6 adoption is new, you will use your internet connection using the common IPv4. Additionally, you can obtain your public IPv4 with: `curl -s ipv4.icanhazip.com` 38 | {% endtab %} 39 | 40 | {% tab title="Second" %} 41 | If you obtain the `"OK."` output, you have IPv6 availability, additionally, you can obtain your IPv6 with: `curl -s ipv6.icanhazip.com` you are **OK**, continue the guide without modifications 42 | {% endtab %} 43 | {% endtabs %} 44 | 45 | ## Uncomplicated Firewall 46 | 47 | A Firewall controls what kind of outside traffic your machine accepts and which applications can send data out. By default, many network ports are open and listening for incoming connections. Closing unnecessary ports can mitigate many potential system vulnerabilities. 48 | 49 | For now, only SSH should be reachable from the outside. Bitcoin Core and LND are using Tor and don't need incoming ports. We'll open the port for Fulcrum and web applications later if needed. 50 | 51 | ### Configuration 52 | 53 | If you don't have [IPv6 availability](security.md#check-ipv6-availability), you can disable IPv6 on UFW to avoid the creation of rules related to it: 54 | 55 | * Edit the UFW configuration 56 | 57 | ```bash 58 | sudo nano /etc/default/ufw 59 | ``` 60 | 61 | * Change `IPV6=yes` to `IPV6=no`. Save and exit 62 | 63 | ``` 64 | IPV6=no 65 | ``` 66 | 67 | * Disable logging 68 | 69 | ```sh 70 | sudo ufw logging off 71 | ``` 72 | 73 | * Allow SSH incoming connection 74 | 75 | {% hint style="warning" %} 76 | Attention! Don't forget the next step! 77 | {% endhint %} 78 | 79 | ```sh 80 | sudo ufw allow 22/tcp comment 'allow SSH from anywhere' 81 | ``` 82 | 83 | ### Enable 84 | 85 | * Enable the UFW, when the prompt shows you `"Command may disrupt existing ssh connections. Proceed with operation (y|n)?"`, press `"y"` and enter 86 | 87 | ```sh 88 | sudo ufw enable 89 | ``` 90 | 91 | Expected output: 92 | 93 | ``` 94 | Firewall is active and enabled on system startup 95 | ``` 96 | 97 | * Check if the UFW is properly configured and active 98 | 99 | ```sh 100 | sudo ufw status verbose 101 | ``` 102 | 103 |
104 | 105 | Expected output ⬇️ 106 | 107 | ``` 108 | Status: active 109 | Logging: off 110 | Default: deny (incoming), allow (outgoing), disabled (routed) 111 | New profiles: skip 112 | 113 | To Action From 114 | -- ------ ---- 115 | 22 ALLOW Anywhere # allow SSH from anywhere 116 | ``` 117 | 118 |
119 | 120 | {% hint style="info" %} 121 | If you find it locked out by mistake, you can connect a keyboard and screen to your PC to log in locally and fix these settings (especially for the SSH port 22) 122 | 123 | More info: [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands) 124 | {% endhint %} 125 | 126 | ## Monitoring SSH authentication logs (optional) 127 | 128 | * You can monitor authentication general logs in your system in real-time 129 | 130 | ```sh 131 | sudo tail -f /var/log/auth.log 132 | ``` 133 | 134 | * Or filtering only by SSH authentication logs in the last 500 lines 135 | 136 | ```sh 137 | sudo tail --lines 500 /var/log/auth.log | grep sshd 138 | ``` 139 | 140 | * With this command, you can show a listing of the last satisfactory logged-in users in your MiniBolt since 7 days ago. Change `-7days` option to do whatever you want 141 | 142 | ```sh 143 | last -s -7days -t today 144 | ``` 145 | 146 | In this way, you can detect a possible brute-force attack and take appropriate mitigation measures 147 | 148 | {% hint style="info" %} 149 | Do this regularly to get security-related incidents 150 | {% endhint %} 151 | 152 | ## Nginx 153 | 154 | ### Installation 155 | 156 | Several components of this guide will expose a communication port, for example, the Block Explorer, or the ThunderHub web interface for your Lightning node. Even if you use these services only within your home network, communication should always be encrypted. Otherwise, any device in the same network can listen to the exchanged data, including passwords. 157 | 158 | We use Ngnix to encrypt the communication with SSL/TLS (Transport Layer Security). This setup is called a "reverse proxy": Nginx provides secure communication to the outside and routes the traffic back to the internal service without encryption. 159 | 160 | * With user `admin`, update and upgrade the OS 161 | 162 | ```bash 163 | sudo apt update && sudo apt full-upgrade 164 | ``` 165 | 166 | * Install Ngnix. Press "**y**" and `enter` or directly `enter` when the prompt asks you 167 | 168 | ```sh 169 | sudo apt install nginx 170 | ``` 171 | 172 | * Check the correct installation 173 | 174 | ```bash 175 | nginx -v 176 | ``` 177 | 178 | **Example** of expected output: 179 | 180 | ``` 181 | nginx version: nginx/1.18.0 (Ubuntu) 182 | ``` 183 | 184 | * Create a self-signed SSL/TLS certificate (valid for 10 years) 185 | 186 | {% code overflow="wrap" %} 187 | ```bash 188 | sudo openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj "/CN=localhost" -days 3650 189 | ``` 190 | {% endcode %} 191 | 192 | **Example** of expected output: 193 | 194 | ``` 195 | .......+......+...+..+....+.....+......++++++........ 196 | ``` 197 | 198 | ### Configuration 199 | 200 | * NGINX is also a full web server. To use it only as a reverse proxy, backup the default configuration 201 | 202 | ```bash 203 | sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak 204 | ``` 205 | 206 | * Create a new blank configuration file 207 | 208 | ```bash 209 | sudo nano /etc/nginx/nginx.conf 210 | ``` 211 | 212 | * Paste the following configuration into the `nginx.conf` file. Save and exit 213 | 214 | ```nginx 215 | user www-data; 216 | worker_processes auto; 217 | pid /run/nginx.pid; 218 | include /etc/nginx/modules-enabled/*.conf; 219 | 220 | events { 221 | worker_connections 768; 222 | } 223 | 224 | http { 225 | ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; 226 | ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; 227 | ssl_session_cache shared:HTTP-TLS:1m; 228 | ssl_session_timeout 4h; 229 | ssl_protocols TLSv1.2 TLSv1.3; 230 | ssl_prefer_server_ciphers on; 231 | include /etc/nginx/sites-enabled/*.conf; 232 | } 233 | 234 | stream { 235 | ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; 236 | ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; 237 | ssl_session_cache shared:STREAM-TLS:1m; 238 | ssl_session_timeout 4h; 239 | ssl_protocols TLSv1.2 TLSv1.3; 240 | ssl_prefer_server_ciphers on; 241 | include /etc/nginx/streams-enabled/*.conf; 242 | } 243 | ``` 244 | 245 | * Create the `streams-available` and `streams-enabled` directories for future configuration files 246 | 247 | ```bash 248 | sudo mkdir /etc/nginx/streams-available 249 | ``` 250 | 251 | ```sh 252 | sudo mkdir /etc/nginx/streams-enabled 253 | ``` 254 | 255 | * Remove the Nginx `site available` and `site enabled` default configuration files 256 | 257 | ```bash 258 | sudo rm /etc/nginx/sites-available/default 259 | ``` 260 | 261 | ```sh 262 | sudo rm /etc/nginx/sites-enabled/default 263 | ``` 264 | 265 | * Test this barebone Nginx configuration 266 | 267 | ```sh 268 | sudo nginx -t 269 | ``` 270 | 271 | Expected output: 272 | 273 | ``` 274 | nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 275 | nginx: configuration file /etc/nginx/nginx.conf test is successful 276 | ``` 277 | 278 | * Reload Nginx to apply the configuration 279 | 280 | ```sh 281 | sudo systemctl reload nginx 282 | ``` 283 | 284 | {% hint style="info" %} 285 | You can monitor the Nginx logs by entering this command. Exit with Ctrl + C 286 | {% endhint %} 287 | 288 | ```bash 289 | journalctl -fu nginx 290 | ``` 291 | 292 | Expected output: 293 | 294 |
Jun 04 18:21:09 minibolt systemd[1]: Starting A high performance web server and a reverse proxy server...
295 | Jun 04 18:21:09 minibolt systemd[1]: Started A high performance web server and a reverse proxy server.
296 | Jun 04 18:25:18 minibolt systemd[1]: Reloading A high performance web server and a reverse proxy server...
297 | Jun 04 18:25:18 minibolt systemd[1]: Reloaded A high performance web server and a reverse proxy server.
298 | 
299 | 300 | {% hint style="info" %} 301 | **(Optional)** You can monitor Nginx error logs by entering the next command. Exit with `Ctrl + C` 302 | {% endhint %} 303 | 304 | ```bash 305 | sudo tail -f /var/log/nginx/error.log 306 | ``` 307 | 308 | ### Upgrade 309 | 310 | * To upgrade, with the user `admin` type this command. Press "**y**" and `enter` or directly `enter` when the prompt asks you 311 | 312 | ```bash 313 | sudo apt update && sudo apt upgrade 314 | ``` 315 | 316 | ### Uninstall 317 | 318 | * With the user `admin` stopping the`nginx.service` 319 | 320 | ```purebasic 321 | sudo systemctl stop nginx 322 | ``` 323 | 324 | * Type this command to use the package manager and uninstall it. Press "**y**" and `enter` or directly `enter` when the prompt asks you 325 | 326 | ```bash 327 | sudo apt autoremove nginx 328 | ``` 329 | 330 | * Clean the system's residual files 331 | 332 | {% code overflow="wrap" %} 333 | ```bash 334 | sudo rm -rf /etc/nginx && sudo rm -f /etc/ssl/certs/nginx-selfsigned.crt && sudo rm -f /etc/ssl/private/nginx-selfsigned.key 335 | ``` 336 | {% endcode %} 337 | 338 | ## Extras (optional) 339 | 340 | ### [Enable DoT + DNSSEC / DoH](../bonus-guides/system/static-ip-and-custom-dns-servers.md#dot-doh--dnssec) 341 | 342 | {% hint style="info" %} 343 | For privacy and security reasons, you could want to enable [Option 1: DoT (DNS over TLS)](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-1-use-dot-and-dnssec-validation-with-systemd-resolved) or [Option 2: DoH (DNS over HTTPS)](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-2-use-doh-with-cloudflared-proxy-dns) to encrypt DNS requests from your MiniBolt to the selected DNS servers, and validate the authenticity and ensure the integrity of DNS responses by enabling [DNSSEC](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-1-use-dot-and-dnssec-validation-with-systemd-resolved). 344 | 345 | Note: you can only **enable DNSSEC** validation if you follow [Option 1](../bonus-guides/system/static-ip-and-custom-dns-servers.md#option-1-use-dot-and-dnssec-validation-with-systemd-resolved) (**recommended**) 346 | {% endhint %} 347 | -------------------------------------------------------------------------------- /lightning/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Lightning 3 | nav_order: 40 4 | has_children: true 5 | layout: 6 | title: 7 | visible: true 8 | description: 9 | visible: false 10 | tableOfContents: 11 | visible: true 12 | outline: 13 | visible: true 14 | pagination: 15 | visible: true 16 | --- 17 | 18 | # 3. Lightning 19 | 20 |
21 | 22 | Now you're all set up for Bitcoin. But Bitcoin is not primarily designed for fast and cheap payments. The blockchain that records all transactions cannot grow without limit if we want to keep the whole system decentralized and nodes like this MiniBolt feasible. 23 | 24 | Building on top of the Bitcoin base layer, the Lightning Network enables instant and cheap everyday payments. Your coffee purchase doesn't necessarily need to be validated and recorded by all Bitcoin nodes worldwide if you think about it. 25 | 26 | Check out [Understanding the Lightning Network](https://bitcoinmagazine.com/technical/understanding-the-lightning-network-part-building-a-bidirectional-payment-channel-1464710791) from Bitcoin Magazine to learn more about how it works. 27 | 28 | To enable the Lightning Network on your MiniBolt, we install [LND](lightning-client.md), the "Lightning Network Daemon". We then set up an automatic [Static Channel Backup](channel-backup.md) to protect ourselves in case of failure of the SSD drives. We'll then add [ThunderHub](web-app.md), a web-based node management tool. Finally, we'll install the [Zeus mobile app](mobile-app.md) to make on-chain and LN payments and manage our node while we're on the go. Together, they make operating your node a breeze. 29 | -------------------------------------------------------------------------------- /lightning/mobile-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mobile app 3 | nav_order: 60 4 | parent: Lightning 5 | layout: 6 | title: 7 | visible: true 8 | description: 9 | visible: false 10 | tableOfContents: 11 | visible: true 12 | outline: 13 | visible: true 14 | pagination: 15 | visible: true 16 | --- 17 | 18 | # 3.4 Mobile app: Zeus 19 | 20 | We install [Zeus](https://zeusln.app/), a cross-platform mobile app that connects to your Lightning network node. Make payments with lightning or on-chain and manage your channels while you're on the go. 21 | 22 |
23 | 24 | ## Requirements 25 | 26 | * [Bitcoin Core](../bitcoin/bitcoin/bitcoin-client.md) 27 | * [LND](lightning-client.md) 28 | 29 | ## Preparations 30 | 31 | ### Configure LND 32 | 33 | * Login as `admin` user, and configure LND to allow LND REST from anywhere. Edit `lnd.conf` 34 | 35 | ```sh 36 | sudo nano /data/lnd/lnd.conf 37 | ``` 38 | 39 | * Add the next line under the `[Application Options]` section. Save and exit 40 | 41 | ``` 42 | # Specify all ipv4 interfaces to listen on for REST connections 43 | restlisten=0.0.0.0:8080 44 | ``` 45 | 46 | * Restart LND to apply changes 47 | 48 | ```sh 49 | sudo systemctl restart lnd 50 | ``` 51 | 52 | #### Validation 53 | 54 | * Ensure the gRPC proxy port is now binding to the `0.0.0.0` host instead of `127.0.0.1` 55 | 56 | ```bash 57 | sudo ss -tulpn | grep lnd | grep 8080 58 | ``` 59 | 60 | Expected output: 61 | 62 |
tcp   LISTEN 0      4096         0.0.0.0:8080       0.0.0.0:*    users:(("lnd",pid=774047,fd=32))
 63 | 
64 | 65 | ### Configure Firewall 66 | 67 | * Configure the Firewall to allow LND REST incoming requests 68 | 69 | ```sh 70 | sudo ufw allow 8080/tcp comment 'allow LND REST from anywhere' 71 | ``` 72 | 73 | ## Installation 74 | 75 | ### Install lndconnect 76 | 77 | [lndconnect](https://github.com/LN-Zap/lndconnect), created by Zap, is a utility that generates QR Code or URI to connect applications to LND instances. 78 | 79 | * As `admin` user, navigate to the `tmp` folder 80 | 81 | ```sh 82 | cd /tmp 83 | ``` 84 | 85 | * Set the environment variable 86 | 87 | ```sh 88 | VERSION=0.2.0 89 | ``` 90 | 91 | * Download 92 | 93 | {% code overflow="wrap" %} 94 | ```sh 95 | wget https://github.com/LN-Zap/lndconnect/releases/download/v$VERSION/lndconnect-linux-amd64-v$VERSION.tar.gz 96 | ``` 97 | {% endcode %} 98 | 99 | * Extract 100 | 101 | ```sh 102 | tar -xzvf lndconnect-linux-amd64-v$VERSION.tar.gz 103 | ``` 104 | 105 | * Install it 106 | 107 | {% code overflow="wrap" %} 108 | ```bash 109 | sudo install -m 0755 -o root -g root -t /usr/local/bin lndconnect-linux-amd64-v$VERSION/lndconnect 110 | ``` 111 | {% endcode %} 112 | 113 | * Ensure `lndconnect` is correctly installed 114 | 115 | ```sh 116 | lndconnect -h 117 | ``` 118 | 119 |
120 | 121 | Expected output ⬇️ 122 | 123 | ``` 124 | Usage: 125 | lndconnect [OPTIONS] 126 | 127 | Application Options: 128 | --lnddir= The base directory that contains lnd's data, logs, configuration file, etc. (default: /home/admin/.lnd) 129 | --configfile= Path to configuration file (default: /home/admin/.lnd/lnd.conf) 130 | -b, --datadir= The directory to find lnd's data within (default: /home/admin/.lnd/data) 131 | --tlscertpath= Path to read the TLS certificate from (default: /home/admin/.lnd/tls.cert) 132 | --adminmacaroonpath= Path to read the admin macaroon from 133 | --readonlymacaroonpath= Path to read the read-only macaroon from 134 | --invoicemacaroonpath= Path to read the invoice-only macaroon from 135 | [...] 136 | ``` 137 | 138 |
139 | 140 | ### Remote access over Tor (optional) 141 | 142 | * Ensure that you are logged in with the user admin and add the following lines in the "location hidden services" section, below "`## This section is just for location-hidden services ##`" in the torrc file. Save and exit 143 | 144 | ```sh 145 | sudo nano /etc/tor/torrc 146 | ``` 147 | 148 | ``` 149 | # Hidden Service LND REST 150 | HiddenServiceDir /var/lib/tor/hidden_service_lnd_rest/ 151 | HiddenServiceVersion 3 152 | HiddenServicePoWDefensesEnabled 1 153 | HiddenServicePort 8080 127.0.0.1:8080 154 | ``` 155 | 156 | * Reload the Tor configuration and get your connection address 157 | 158 | ```sh 159 | sudo systemctl reload tor 160 | ``` 161 | 162 | ```sh 163 | sudo cat /var/lib/tor/hidden_service_lnd_rest/hostname 164 | ``` 165 | 166 | **Example** expected output: 167 | 168 | ``` 169 | abcdefg..............xyz.onion 170 | ``` 171 | 172 | * Save the onion address in a safe place (e.g., password manager) 173 | 174 | ### Create a lndconnect QR code 175 | 176 | lndconnect generates a URI and displays it as a QR code that Zeus can read. 177 | 178 | * Still with the `admin` user, and use the following command depending on if you want If you want to use the: 179 | 180 | {% tabs %} 181 | {% tab title="Tor connection" %} 182 | Set the `--host` parameter with the `.onion` address with the one you generated above. e.g. abcdefg......xyz.onion 183 | 184 | ```bash 185 | lndconnect --host=abcdefg......xyz.onion --port=8080 --nocert 186 | ``` 187 | {% endtab %} 188 | 189 | {% tab title="Wireguard VPN connection (recommended) " %} 190 | After following the [Wireguard VPN bonus guide](../bonus-guides/networking/wireguard-vpn.md) set the `--host` parameter address with the private Wireguard VPN IP address. e.g. 10.0.0.1 191 | 192 | ```bash 193 | lndconnect --host=10.0.0.1 --port=8080 --nocert 194 | ``` 195 | {% endtab %} 196 | 197 | {% tab title="Local network connection" %} 198 | Set the `--host` parameter with the IP address of MiniBolt. e.g 192.168.1.10 199 | 200 | ```bash 201 | lndconnect --host=192.168.X.XXX --port=8080 202 | ``` 203 | {% endtab %} 204 | {% endtabs %} 205 | 206 | * It will be a big QR code, so maximize your terminal window and use `CTRL+- / "Terminal unzoom" / "Zoom out"` options of your terminal, to shrink the code further to fit the screen or if you prefer you can use `-j` parameter to get a code you can copy and paste into the app 207 | 208 | {% hint style="warning" %} 209 | Keep the SSH session with the QR code open, it will be necessary later to scan the obtained QR code 210 | {% endhint %} 211 | 212 | ## Install the Zeus app 213 | 214 | On Android, you can get Zeus from [Google Play](https://play.google.com/store/apps/details?id=app.zeusln.zeus) or the GitHub repository if you can’t or do not want to use Google Play. Tap it, download it, and install it. If it's the first time you install an APK on your phone you will be asked to authorize the app to install unknown apps, follow the on-screen instructions to do so. 215 | 216 |
217 | 218 | ### Connect Zeus to LND 219 | 220 | * Open Zeus and tap on **"SCAN LNDCONNECT CONFIG"** and, if prompted, allow Zeus to use the camera 221 | * Scan the QR code generated earlier 222 | * Enter a Nickname for your node (e.g. "MiniBolt LN") 223 | 224 | {% hint style="info" %} 225 | If you will use the Tor connection hit on the switch **"Use Tor"** 226 | {% endhint %} 227 | 228 | * Click on **"SAVE NODE CONFIG"** 229 | * A "Warning" banner will appear, push on **"I understand, save node config"** 230 | 231 | {% hint style="success" %} 232 | Zeus is now connecting to your node, and it might take a while the first time depending on the selected connection ⏰ 233 | {% endhint %} 234 | 235 | {% hint style="info" %} 236 | Once you verify that the connection has been made correctly with your Lightning Node, you can close the SSH session by pressing `Ctrl` + `D` 237 | {% endhint %} 238 | 239 | ### Security 240 | 241 | Anyone using Zeus on your phone controls your node and all its funds. Setting up a password or biometrics identification for the app is strongly recommended. 242 | 243 | * In the app, tap on the Zeus icon in the top-left corner 244 | * Click on `Security` and `Set/Change Password` to enter a Password/PIN or enable the Biometrics feature 245 | * Save your password or PIN somewhere safe, e.g., in your password manager 246 | 247 | ### Privacy 248 | 249 | To preserve your privacy, you can choose your private blockchain explorer when making inquiries about on-chain transactions. 250 | 251 | * In the app, tap on the Zeus icon in the top-left corner 252 | * Click on `Privacy` and change `Default Block explorer`, by selecting `Custom`, on the `Custom block explorer` box, enter your preferred Block Explorer URL, `.onion`, the local IP address of BTC RPC explorer: `https://192.168.X.XXX:4000`, or Wireguard VPN IP address: `https://10.0.0.1:4000`, depending on the situation 253 | 254 | ## Upgrade 255 | 256 | To update Zeus, update the app using the same app store or the app source you chose to install it. 257 | 258 | ## Uninstall 259 | 260 | ### Uninstall Firewall 261 | 262 | * Ensure you are logged in with the user `admin`, display the UFW firewall rules, and note the numbers of the rules for LND REST (e.g. "Y" below) 263 | 264 | ``` 265 | sudo ufw status numbered 266 | ``` 267 | 268 | Expected output: 269 | 270 | ``` 271 | [Y] 8080 ALLOW IN Anywhere # allow LND REST from anywhere 272 | ``` 273 | 274 | * Delete the rule with the correct number and confirm with "`yes`" 275 | 276 | ``` 277 | sudo ufw delete X 278 | ``` 279 | 280 | ### Uninstall Tor 281 | 282 | You must uninstall the app on your phone and delete the LND REST API on Tor hidden service. 283 | 284 | * Uninstall the app on your phone 285 | * To deactivate the LND REST API Tor hidden service, comment out the hidden service lines in `torrc` and reload Tor 286 | 287 | ```sh 288 | sudo nano /etc/tor/torrc 289 | ``` 290 | 291 | ``` 292 | # Hidden Service LND REST 293 | #HiddenServiceDir /var/lib/tor/hidden_service_lnd_rest/ 294 | #HiddenServiceVersion 3 295 | HiddenServicePoWDefensesEnabled 1 296 | #HiddenServicePort 8080 127.0.0.1:8080 297 | ``` 298 | 299 | * Reload Tor to apply changes 300 | 301 | ```bash 302 | sudo systemctl reload tor 303 | ``` 304 | 305 | ## Port reference 306 | 307 |
PortProtocolUse
8080TCPLND REST port
308 | 309 | [^1]: gRPC proxy port 310 | -------------------------------------------------------------------------------- /resources/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/favicon.ico -------------------------------------------------------------------------------- /resources/favicons/favicon+B_ico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/favicons/favicon+B_ico.ico -------------------------------------------------------------------------------- /resources/favicons/favicon+B_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/favicons/favicon+B_png.png -------------------------------------------------------------------------------- /resources/favicons/favicon-B.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/favicons/favicon-B.ico -------------------------------------------------------------------------------- /resources/favicons/favicon-L.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/favicons/favicon-L.ico -------------------------------------------------------------------------------- /resources/fulcrum-banner-testnet4.txt: -------------------------------------------------------------------------------- 1 | 2 | ____ __ 3 | / __/_ __/ /___________ ______ ___ 4 | / /_/ / / / / ___/ ___/ / / / __ `__ \ 5 | / __/ /_/ / / /__/ / / /_/ / / / / / / 6 | /_/__\__,_/_/\___/_/ \__,_/_/ /_/ /_/ __ 7 | /_ __/__ _____/ /_____ ___ / /_/ // / 8 | / / / _ \/ ___/ __/ __ \/ _ \/ __/ // /_ 9 | / / / __(__ ) /_/ / / / __/ /_/__ __/ 10 | /_/ \___/____/\__/_/ /_/\___/\__/ /_/ -------------------------------------------------------------------------------- /resources/fulcrum-banner.txt: -------------------------------------------------------------------------------- 1 | 2 | ____ __ 3 | / __/_ __/ /___________ ______ ___ 4 | / /_/ / / / / ___/ ___/ / / / __ `__ \ 5 | / __/ /_/ / / /__/ / / /_/ / / / / / / 6 | /_/ \__,_/_/\___/_/ \__,_/_/ /_/ /_/ 7 | __ ____ _ ____ ____ 8 | / |/ (_)___ (_) __ )____ / / /_ 9 | / /|_/ / / __ \/ / __ / __ \/ / __/ 10 | / / / / / / / / / /_/ / /_/ / / /_ 11 | /_/ /_/_/_/ /_/_/_____/\____/_/\__/ -------------------------------------------------------------------------------- /resources/home_screen/minibolt-home-screen-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/home_screen/minibolt-home-screen-og.png -------------------------------------------------------------------------------- /resources/home_screen/minibolt-home-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/home_screen/minibolt-home-screen.png -------------------------------------------------------------------------------- /resources/logos/channels/photo_2022-12-23_17-54-26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/channels/photo_2022-12-23_17-54-26.jpg -------------------------------------------------------------------------------- /resources/logos/channels/photo_2022-12-23_18-41-18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/channels/photo_2022-12-23_18-41-18.jpg -------------------------------------------------------------------------------- /resources/logos/logo-quater.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo-quater.png -------------------------------------------------------------------------------- /resources/logos/logo-quater_trans_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo-quater_trans_png.png -------------------------------------------------------------------------------- /resources/logos/logo-quater_trans_webp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo-quater_trans_webp.webp -------------------------------------------------------------------------------- /resources/logos/logo_circle+B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo_circle+B.png -------------------------------------------------------------------------------- /resources/logos/logo_circle-B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo_circle-B.png -------------------------------------------------------------------------------- /resources/logos/logo_circle_trans_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo_circle_trans_png.png -------------------------------------------------------------------------------- /resources/logos/logo_quater_minibolt_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/logos/logo_quater_minibolt_text.png -------------------------------------------------------------------------------- /resources/networkmap.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minibolt-guide/minibolt/5c6245949c21dd83b3acd6960e0419259c83dbf3/resources/networkmap.drawio.png -------------------------------------------------------------------------------- /resources/ordisrespector.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp 2 | index 03b157a84..e7d9e96d0 100644 3 | --- a/src/script/interpreter.cpp 4 | +++ b/src/script/interpreter.cpp 5 | @@ -479,6 +479,14 @@ bool EvalScript(std::vector >& stack, const CScript& 6 | return set_error(serror, SCRIPT_ERR_MINIMALDATA); 7 | } 8 | stack.push_back(vchPushValue); 9 | + if ((flags & SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS) && opcode == OP_FALSE) { 10 | + auto pc_tmp = pc; 11 | + opcodetype next_opcode; 12 | + valtype dummy_data; 13 | + if (script.GetOp(pc_tmp, next_opcode, dummy_data) && next_opcode == OP_IF) { 14 | + return set_error(serror, SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS); 15 | + } 16 | + } 17 | } else if (fExec || (OP_IF <= opcode && opcode <= OP_ENDIF)) 18 | switch (opcode) 19 | { 20 | -------------------------------------------------------------------------------- /system/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: System 3 | nav_order: 20 4 | has_children: true 5 | layout: 6 | title: 7 | visible: true 8 | description: 9 | visible: false 10 | tableOfContents: 11 | visible: true 12 | outline: 13 | visible: true 14 | pagination: 15 | visible: true 16 | --- 17 | 18 | # 1. System 19 | 20 |
21 | 22 | ## Personal Computer 23 | 24 | This guide builds on the easily available personal computer. 25 | 26 | In the following sections, we will start it up and prepare the operating system for your MiniBolt. 27 | --------------------------------------------------------------------------------