Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add a install script #184

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft

feat: add a install script #184

wants to merge 2 commits into from

Conversation

karlprieb
Copy link
Collaborator

Automated AR.IO Node Installation Script for *nix Systems

This script was designed to simplify the process of configuring and launching an AR.IO node, making it accessible to both seasoned developers and those new to decentralized networks.

Why This Script Was Created

Setting up an AR.IO node manually involves several steps, including configuring environment variables, choosing which services to run, and ensuring all dependencies are properly installed. For newcomers or even experienced users, this can be a daunting and error-prone process.

To address these challenges, the AR.IO Node Setup Script was created with the following goals in mind:

  1. Ease of Use: The script provides a user-friendly, guided setup process. It walks users through essential configuration steps, ensuring that their node is correctly set up with minimal effort.
  2. Customization: Users can tailor their AR.IO node to their specific needs. The script offers choices on which services to run, how the node interacts with the ArNS name system, and whether to unbundle and index data items from bundles. These options allow users the flexibility to configure their node in a way that aligns with their objectives.
  3. Automation: The script automates repetitive and complex tasks, such as configuring environment variables, downloading the latest configuration files, and managing Docker services. This reduces the likelihood of errors and saves users valuable time.
  4. Broad Compatibility: The script is designed to work on both Linux and MacOS systems, ensuring that it can be used by a wide range of users across different environments.

How the Script Works

  1. OS Detection: The script begins by identifying the user’s operating system to ensure compatibility. It only supports Linux and MacOS, providing a clear error message if an unsupported OS is detected.
  2. Dependency Check: It checks for the presence of Docker and Docker Compose v2, which are essential for running the AR.IO node services. If these dependencies are missing, the script guides the user to the appropriate installation resources.
  3. Service Selection: The script allows users to select which AR.IO services they want to run, such as the Envoy reverse proxy, the AR.IO core gateway, the Observer service, the Resolver, and Litestream for continuous database backup. Users can customize their node based on their specific requirements.
  4. Configuration: The script prompts the user to configure key settings like the blockchain synchronization range (START_HEIGHT and STOP_HEIGHT), whether to enable ArNS name resolution, and options for unbundling and indexing data items.
  5. Service Launch: Finally, the script uses Docker Compose to launch the selected services, starting the AR.IO node and getting it ready for action. It also provides the user with instructions on how to manage these services in the future.

By automating the setup process and providing guidance, the AR.IO Node Setup Script empowers users to participate in the decentralized ar.io network with confidence, contributing to a more robust and resilient network.

Copy link
Contributor

coderabbitai bot commented Aug 16, 2024

Warning

Rate limit exceeded

@karlprieb has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 12 minutes and 7 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between ed5d755 and 5fb476b.

Walkthrough

Walkthrough

The installer.sh script automates the setup of an AR.IO node, enhancing user experience through interactive prompts for system checks, tool installations, and service selections. It supports Linux and MacOS, allowing users to customize configurations, manage data indexing, and initiate services seamlessly, all while providing real-time feedback.

Changes

Files Change Summary
installer.sh Introduced an automated setup tool for AR.IO nodes that checks for dependencies (Docker, Docker Compose), allows interactive service selection, and gathers user configurations for a tailored installation experience.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Installer
    participant Docker
    participant GitHub

    User->>Installer: Start installation
    Installer->>User: Display welcome message
    Installer->>User: Check OS compatibility
    Installer->>Docker: Check for Docker and Docker Compose
    Docker-->>Installer: Respond with status
    Installer->>GitHub: Fetch latest release
    GitHub-->>Installer: Return release tag
    Installer->>User: Select services to enable
    Installer->>User: Configure settings (START_HEIGHT, STOP_HEIGHT)
    Installer->>Docker: Start selected services
    Docker-->>User: Services up and running
Loading

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Comment on lines +273 to +285
# Final Step: Start the Node
echo ""
print_message "Starting your AR.IO node services with Docker Compose... ⏳"
echo ""
docker compose up -d
echo ""

if [ $? -eq 0 ]; then
print_success "Your AR.IO node services are now running in the background! 🎉"
else
print_error "There was an issue starting your AR.IO node services. Please check the output above for details."
exit 1
fi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the use of $? to ensure it refers to the intended command.

The current use of $? may not refer to the intended command due to intervening commands. Assign the result of docker compose up -d to a variable to avoid this issue.

- docker compose up -d
- if [ $? -eq 0 ]; then
+ docker compose up -d
+ DOCKER_UP_STATUS=$?
+ if [ $DOCKER_UP_STATUS -eq 0 ]; then
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Final Step: Start the Node
echo ""
print_message "Starting your AR.IO node services with Docker Compose... ⏳"
echo ""
docker compose up -d
echo ""
if [ $? -eq 0 ]; then
print_success "Your AR.IO node services are now running in the background! 🎉"
else
print_error "There was an issue starting your AR.IO node services. Please check the output above for details."
exit 1
fi
# Final Step: Start the Node
echo ""
print_message "Starting your AR.IO node services with Docker Compose... ⏳"
echo ""
docker compose up -d
DOCKER_UP_STATUS=$?
echo ""
if [ $DOCKER_UP_STATUS -eq 0 ]; then
print_success "Your AR.IO node services are now running in the background! 🎉"
else
print_error "There was an issue starting your AR.IO node services. Please check the output above for details."
exit 1
fi
Tools
Shellcheck

[warning] 280-280: This $? refers to echo/printf, not a previous command. Assign to variable to avoid it being overwritten.

(SC2320)

@karlprieb karlprieb force-pushed the install-script branch 2 times, most recently from 51c0dab to 2cc0a69 Compare August 16, 2024 18:18
Copy link

codecov bot commented Aug 16, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 68.05%. Comparing base (b9939dd) to head (5fb476b).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #184   +/-   ##
========================================
  Coverage    68.05%   68.05%           
========================================
  Files           31       31           
  Lines         7419     7419           
  Branches       408      408           
========================================
  Hits          5049     5049           
  Misses        2369     2369           
  Partials         1        1           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@karlprieb karlprieb marked this pull request as draft August 19, 2024 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant