OPEN: Simplify Infrastructure Deployment and Operations

Hello all, I’m writing this Socket proposal on behalf of Developer DAO (D_D). We are hoping to contribute to the POKT ecosystem by creating dev tooling specifically to support infrastructure operators - whether you’re running a single node, or have multiple nodes, gateways and relays. This may include resources to help infrastructure operators run on Docker/ Kubernetes, uplifting existing documentation and filling in documentation gaps where needed, and creating tutorials/ blog posts that help node operators get started with Shannon as it’s rolled out.

Deliver Impact:
These efforts map most closely to Ambition #1: Pocket has $1B of annual protocol revenue and Ambition #2: Pocket has the most trusted infrastructure brand in crypto. Our goal is to help POKT network become the most operator-friendly infrastructure in Web3 by creating startup/ upgrade scripts, tutorials, documentation, and blog posts. These materials would focus on making the node operating experience as seamless as possible to help drive the growth of the POKT network.

Description of planned work:

Specific examples of areas for improvement we’d like to work on are below.

  1. The existing node creation docs could be greatly simplified by hosting an install script/ series of scripts on Github to reduce the amount of copy-and-paste required. With POKT creating the required Github repos in their organization and giving D_D contributors access, D_D contributors could create, test, and ship the scripts. We intend to wait until Shannon rollout is further along to start creating the scripts so that they can have the maximum impact by helping node operators transition to Shannon.

  2. A new documentation page could be created for troubleshooting common issues experienced on nodes so that operators have a place they can look to solve issues without having to wait for responses in Discord.

  3. The possibility of creating a test node or gateway locally using something like Docker before committing to a full node/ gateway build is missing, and could contribute to greater adoption. We could work on finding the most developer-friendly and stable way to build a node locally for testing, and document the limitations of the local node so that operators know when it’s time to build a full node.

  4. While POKT offers Helm charts (GitHub - pokt-network/helm-charts), there is no existing documentation or video tutorial on deploying them. We could create these to help advanced operators get a head start on deploying on Kubernetes, including making the required updates once Shannon rolls out.

  5. Using tools like Terraform or Pulumi, we could further help bootstrap the infrastructure operator experience by also scripting the creation of the underlying cloud infrastructure (e.g., a Linode instance) required to host nodes. This would allow operators to deploy nodes even more rapidly, and enable them to scale much more effectively.

Type of Socket:
Initiative: $4K, paid and reviewed monthly for the life of the experiment.

Commitment to “Default to Open”:

Developer DAO has a “build in public” culture. We commit to weekly updates on the Socket forum page, and through release notes when stable releases are created on Github repos. If it’s agreeable to the POKT team, the repo can (and in my mind should) be public so that the community can watch ongoing progress.

Wallet Addresses

POKT address: 32e0bf94aa26ea2fb8b2ad3f3c5985754e89d7ac

ETH address: 0x9270441B0a33F1d0888F0DaAB4b4857A2f4e963d

February Addendum
Adding this addendum of what I’d like to accomplish in the month of February. The majority of what I’d like to accomplish is prep work for the larger socket effort, including:

  • Building my own node(s) to test against. While going through this process, I intend to keep notes on gaps in docs, and open PRs to help correct docs where I come across issues. This is a small example of the types of fixes I’ll keep submitting as I run into issues: Fix Uncompressed Inline tar cmd by 0xThresh · Pull Request #1597 · pokt-network/pocket-core · GitHub
  • Additionally, I plan to continue building out a new script to start nodes. While this will be specific to Morse nodes, I hope to use it as a basis of the type of scripts I’d like to create for Shannon. By building these out now, it gives the community a chance to comment on the usefulness and whether it’s worth pursuing with Shannon. My work-in-progress example that already gets you about halfway setup is here: https://github.com/0xThresh/pokt-node-setup/blob/main/node-setup.sh
  • Attending community calls and builder calls to continue gathering input from long-time node operators to understand current pain points, and what kind of tooling would best help them. I plan to document feedback in this socket so that the community can continue to provide input, and have this input in writing for better visibility.
  • Diving into Shannon materials for node operators as soon as they become available, and providing early feedback (if these materials become available this month).

I would be comfortable calling the value of this work at $1k since we are already a week into February, and since the work that will come from this phase has less immediate impact for the community, and re-evaluating once we get through this month.

5 Likes

I love the idea of this socket, but I need some clarifications

  • Will this work done for the Morse or Shannon? I think that we need to build only for the later.
  • What is currently available in the Shannon repository?
  • Given that Shannon test net is not open yet, do we need to start now?
3 Likes

I fully support this idea - thank you @0xThresh and @d-d-delegates for pulling this together and for joining the ecosystem call last week. Node Operators are a key part of our ecosystem and I’m sure we can be doing much more to support and empower them.

I do think @RawthiL raises interesting questions and would love to hear from the rest of the community.

@shane, given your background with Node Pilot as well as your work with the Protocol team, what are your thoughts on this one? How best could Dev DAO and 0xThresh support?

Adz

3 Likes

Seconded on the push to make this for Shannon, and one possible area of focus mentioned in the PoktLab post:

An initial focus I would suggest is in cross-bridge APIs for interaction between wPOKT and POKT. I suspect many noderunners would be interested in the ability to have node yields be paid out in wPOKT, but cannot or will not spend the time required to build out that level of automation.

3 Likes

Thanks for reaching out!

Will this work done for the Morse or Shannon? I think that we need to build only for the later.
The goal is definitely to focus on Shannon since that’s where the network is headed. I don’t want to spend my time, and have the foundation spend money, on resources that won’t be useful for much longer.

What is currently available in the Shannon repository?
The community at large is waiting to see this. With the testnet going live in the next few weeks, I expect that we’ll be able to start reviewing resources very soon.

Given that Shannon test net is not open yet, do we need to start now?
Definitely not - I wanted to get this socket open sooner rather than later to start getting community input, but I’m not intending to get started until Shannon testnet is live, and we have the opportunity to see what resources are already available.

2 Likes

@0xThresh appreciate you opening a socket and joining our call last week! This is super helpful and there’s some overlap with the work @derrek is doing on OPEN : Developer marketing: starter repos, tutorials, partnerships, oh my!

Is there value in doing a reduced value socket this month to get this moving? Could there be research + planning done that will set us up for success once testnet launches?

It seems there’s support for this initiative, so if there’s a reduced scope/value of this socket for February, and we can increase the scope/value once we have testnet online, that would seem valuable to me.

4 Likes

There’s some overlap with the work @derrek is doing on OPEN : Developer marketing: starter repos, tutorials, partnerships, oh my!

I had read through Derrek’s socket before submitting mine. I got the sense that Derrek was more focused on the frontend/ app developer’s experience than the node operator experience, but perhaps there’s something I’m missing :slight_smile: @derrek please let me know what you think regarding overlap, definitely don’t want to double up efforts where it’s not necessary.

Is there value in doing a reduced value socket this month to get this moving? Could there be research + planning done that will set us up for success once testnet launches? It seems there’s support for this initiative, so if there’s a reduced scope/value of this socket for February, and we can increase the scope/value once we have testnet online, that would seem valuable to me.

I’m very open to this - I actually started the process of creating my own node by walking through the OPERATE A NODE documentation and started my own node install script/ README on Github that outlines some of the gaps I’ve noticed so far: GitHub - 0xThresh/pokt-node-setup: Scripts to make the POKT node setup process easier.

If it would be beneficial for me to continue down that path so I can provide specific feedback to the protocol team about gaps so that they can work to ensure they’re addressed in Shannon materials, I’m happy to do that. The main reason I started getting myself a node ready is for self-education and so that I can test out any changes that come up during the testnet rollout and help supplement materials as much as possible.

4 Likes

Tagging in @counity here as he’s working on a Node Runner quest for new people to the server as well.

re: getting started - if you want to add an addendum and include the scope for this month + socket value that would let us get started (from the 15th, technically). @shane would be helpful here as far as establishing the direction + usefulness for the protocol team, as he’s our point person for that now.

1 Like

Thanks Zak, I’ve added an addendum to the original post. Please let me know what you think!

1 Like

Correct, my socket targets front-end devs consuming the RPC endpoints. Your node-based content would serve a totally different group of stakeholders.

2 Likes

Hey @0xThresh i’m going to run this by @b3n and @shane on Monday and see if this addendum needs anything else. It’s an unusual one because there aren’t really any deliverables, but it’s necessary work to be done to achieve the full socket potential.

So I’ll drop you an update by EOD Monday to either get started on the 15th or to get any additional clarity we need. Thanks for the follow ups here.

2 Likes

Thanks Zak, and thanks for the feedback that there weren’t deliverables in what I posted in the addendum. I made an edit and added a second bullet showing the work I’m doing on node building scripts that I think could be the basis of where we could start with work on Shannon. I’m happy to provide any further clarity as well!

2 Likes

Hey @doctorrobinson, any updates from your call yesterday?

2 Likes

@0xThresh our call had a conflict and was pushed to today, i’ll follow up EOD.

3 Likes

More support from the pokt-core contributors for the script approach in a Github PR I submitted to update docs :grin:

2 Likes

Hey @0xThresh - we’re going to open this one up so you can get started. In your update for the end of this month, let me know what you think your adjusted value should be for March so we can review + approve or adjust based on the next few weeks.

It’ll be live from the 15th, but we’ll need to set it up so might start a day or two after (but i’ll have @b3n confirm timing & pay).

Discord channel here: Discord

3 Likes

Hey all, I’m here for my first check-in and have some exciting news.

Node Setup Script
I’m happy to report that the v1 Morse node setup script is successfully tested and ready to go: https://github.com/0xThresh/pokt-node-setup/blob/e7de620acae22175259d48ddf413bd5fd99552f2/node-setup.sh

I need to do a bit more work on documentation, and I haven’t been able to test becoming a validator with the resulting node since I don’t have the required 15k POKT yet. However, I have confirmed that all of the following happens automatically on the node:

  • Pocket account is created on the node and is accessible via command line by running pocket accounts list
  • Pruned network snapshot is downloaded and extracted correctly
  • Pocket and NGINX services are started and listening
  • Certificate for NGINX is created correctly
  • Status checks included in the Part 5 Going Live section of the node docs all return the expected responses
  • Configures services to run securely with non-root users, and enables required firewall rules

While the shelf life of this script may be short with Shannon coming up, I wanted to complete it to demonstrate the approach I plan to take with other Pocket infra I continue to work on and make sure that the community finds value in having resources like this available. Based on the conversations I’ve had so far, it sounds like people are excited to have this option available, as it’s easier to use than having to copy and paste step-by-step instructions from documentation. With that said, I believe there is still value in those docs for people who want to have the more in-depth interaction with their nodes and would prefer to run through the steps manually instead of unleashing a script to handle the initial setup.

Infrastructure Scripts
In addition to the startup script, I’ve been working on a separate tool that allows you to not only start up a node, but also build all of the required infrastructure in AWS to host a node for you. The goal here is essentially a single-command deployment of an AWS EC2 instance that automatically runs the startup script. This is done using a tool called Pulumi, which is an Infrastructure as Code tool:

I’m still bashing some bugs on the Pulumi scripts, and it’s not quite ready for general use. However, the code to create the required node infrastructure with Pulumi can be seen here for the curious: https://github.com/0xThresh/pokt-node-setup/blob/ac98240e99fa2cbe496ae6e33be55aa3ed500f43/pulumi/index.ts

Next Steps
My goal for the next week is to try to start getting the work I’ve done so far in front of the community to gauge the anticipated value of it while we await resources for Shannon to become publicly available, and make sure that these are the resources folks believe will be the most helpful. I would welcome any assistance in getting the word out about what I have so far, and will try my best to attend upcoming community calls to showcase it if time permits.

Development progress may also slow down next week, as I’ll be attending ETH Denver and would love to chat with folks about what would be most helpful over coffee/ beer/ fresh mountain stream water :smiley:

I’m very excited to keep this effort going and welcome any feedback on the work I’ve done so far!

4 Likes

Hey everyone! As requested by Zak, I will be posting updates for this month in Karma instead. You’re welcome to read my update for March there: Karma GAP - Developer DAO - Simplify Infrastructure Deployments and Operations grant milestones and updates

2 Likes