Running your own DeSo node is easy:
- Install Docker and Docker Compose if you don't have it already
- On Mac and Windows, Docker comes with Docker Compose
- On Linux you need to install Docker Engine and Docker Compose separately
- Execute
make devnet
,make testnet
, ormake mainnet
depending on which type of node you want to run- This will automatically run the relevant docker-compose
- If you want to start from scratch, you can always do
make wipe
ormake {environment}-wipe
. This will delete all prior blocks/data for your node and allow it to start syncing from scratch again. - Visit http://localhost:4200. This will load the frontend service you just ran and show you all the data that your node is syncing.
You can check on the sync progress of your local node either by looking at the output or by looking in the admin panel of the frontend.
- Create a new user OR sign in with your existing seed phrase
- Head to the Admin panel to see your sync status. The tooltips should explain what most things mean.
If you're looking at the output in the terminal, note that there is a header-download phase that is usually pretty quick (a few minutes) followed by a block syncing phase (if you're running iwith --sync-type=blocksync) or a hypersync phase (if you're running --sync-type=hypersync-archival). The sync type is specified in the base.env and overridden by the docker-compose.yml file for each environment.
If your node fails to sync or you want to try syncing from scratch you can run make wipe
.
If you want to learn more about how the DeSo node works, you can start by reading each of the relevant docker-compose.yml files and the base.env file, which has a lot of comments describing each of the flags.
If you want to know how the actual underlying node code works, check out our docs page. To learn more about building an app, see our app tutorial. To learn more about our architecture, including a code walkthrough, see our architecture overview.
To run a validator, see our validator instructions doc.
Once your node is synced, you have access to the full firehose of DeSo data in real time! Below are some tips on how take full advantage of your node.
- Go to your Admin tab and watch the unfiltered feed update as your node
syncs. It's like a time machine!
- Note: If your node is having trouble syncing for some reason, try updating the CONNECT_IPS flag in base.env to deso-seed-2.io or deso-seed-4.io and set IGNORE_INBOUND_PEER_INV_MESSAGES to true while you sync. This will pick a fairly reliable node as a sync peer and disregard messages from other peers.
- Try to whitelist some posts in the Admin tab and see that they've made their way onto your global feed.
- Read through the flags available in the base.env file. You can adjust these flags however you want, but note that some flags may be overridden in the docker-compose.yml files so just make sure you edit them there if they're set.
- Set ADMIN_PUBLIC_KEYS to your public key so that the Admin tab is only visible to your account.
- Set SUPER_ADMIN_PUBLIC_KEYS to your public key so that the super admin tab is only visible to your account.
- Whitelist some posts and verify that they show up on the global feed.
- Deploy your node on any cloud provider with a static IP to make it accessible
to anyone on the internet.
- If you do this, you must point two domains at your node. domain.com and api.domain.com.
- If you do this, you must add your domain to the Caddyfile.dev's Content-Security-Policy or your site won't work. You will need to add two entries: One for domain.com:* and one for api.domain.com:*
- Add the necessary nginx configuration for your SSL certificates generated by letsencrypt
- Set the TWILIO* flags to allow new users to get some starter DeSo.
- Set a SUPPORT_EMAIL so your users can contact you if they run into trouble.
- Play with the logging verbosity by increasing GLOG_V.
You can often find ansers in the DeSo PoS Discussion Telegram Channel The dev team is also active on all DeSo apps such as diamondapp.com and focus.xyz.