Skip to content

Conversation

@pdaoust
Copy link
Contributor

@pdaoust pdaoust commented Jul 25, 2025

Closes #565 .

Summary by CodeRabbit

Summary by CodeRabbit (edited by @pdaoust )

  • New Features

    • Added a new how-to guide for running network infrastructure, including step-by-step instructions for setting up Docker-based kitsune2-bootstrap-srv.
  • Documentation

    • Replaced the howtos landing page HTML with a Markdown version for better content management.
    • Enhanced the howtos index with updated descriptions and additional guide listings.
    • Updated navigation and resource listings to include the new "Running Network Infrastructure" guide.
  • Chores

    • Added technical and domain-specific terms to the spell checker dictionary, including "certbot," "letsencrypt," "privkey," "fullchain," and "kbps."

@pdaoust pdaoust marked this pull request as draft July 25, 2025 22:08
@pdaoust pdaoust mentioned this pull request Jul 28, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jul 28, 2025

Walkthrough

This change introduces a new how-to guide for running network infrastructure using Docker, updates navigation and resource listings to include this guide, and refines related documentation. It also adds several technical terms to spell checker dictionaries. The previous HTML index for how-tos is replaced with a Markdown version, now listing two guides.

Changes

Cohort / File(s) Change Summary
Spell Checker Dictionary Updates
.cspell/custom-words.txt, .cspell/words-that-should-exist.txt
Added technical terms ("certbot", "fullchain", "letsencrypt", "privkey", "kbps") to spell checker dictionaries.
Navigation and Index Updates
src/pages/_data/navigation/mainNav.json5, src/pages/resources/index.md
Added "Running Network Infrastructure" to navigation and resources index; improved descriptions for how-to entries.
Howtos Index Refactor
src/pages/resources/howtos/index.html, src/pages/resources/howtos/index.md
Removed HTML index; added Markdown index listing both "Debugging a Running Holochain Conductor" and the new guide.
New How-to Guide
src/pages/resources/howtos/running-network-infrastructure.md
Added detailed instructions for running Holochain network infrastructure using Docker and configuring client apps.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant DevPortal
    participant DockerHost
    participant HolochainApp

    User->>DevPortal: Access "Running Network Infrastructure" How-to
    DevPortal-->>User: Display setup instructions
    User->>DockerHost: Deploy bootstrap server via Docker Compose
    DockerHost-->>User: Bootstrap server running
    User->>HolochainApp: Configure app with custom bootstrap URLs
    HolochainApp-->>User: Connects using new infrastructure
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Assessment against linked issues

Objective Addressed Explanation
Document how to run k2 local infra binary, including install, run, and connect instructions (#565)

Assessment against linked issues: Out-of-scope changes

No out-of-scope changes detected related to the linked issue objectives.

Poem

In burrows deep, with Docker near,
A bootstrap server hops to cheer.
With guides anew and words well-spelled,
Our network tales are clearly spelled.
From spell-check tweaks to docs so bright,
This bunny codes through day and night! 🐇✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/local-infra-howto

🪧 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>, please review it.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 using 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this 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.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

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.

@pdaoust pdaoust force-pushed the feat/local-infra-howto branch from b55dfb6 to bfc6837 Compare July 28, 2025 21:48
@pdaoust pdaoust marked this pull request as ready for review July 28, 2025 21:50
Copy link

@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: 2

🧹 Nitpick comments (2)
src/pages/resources/index.md (1)

24-28: Minor nit: keep bullets alphabetised for quick scanning

The two how-to links are currently in functional order. If this list grows, consider alphabetising to aid discoverability:

-* [**Debugging a Running Holochain Conductor**](/resources/howtos/debugging/) ...
-* [**Running Network Infrastructure**](/resources/howtos/running-network-infrastructure/) ...
+* [**Debugging a Running Holochain Conductor**](/resources/howtos/debugging/) ...
+* [**Running Network Infrastructure**](/resources/howtos/running-network-infrastructure/) ...

(Alphabetical order already satisfied; just a future-proof reminder.)

src/pages/resources/howtos/running-network-infrastructure.md (1)

92-96: Consider running the container in detached mode for production use

The docs run docker compose up in the foreground; most users setting up infrastructure on a server will prefer a detached process (-d) so the terminal can be freed.

sudo docker compose up -d
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 462d247 and bfc6837.

📒 Files selected for processing (7)
  • .cspell/custom-words.txt (3 hunks)
  • .cspell/words-that-should-exist.txt (1 hunks)
  • src/pages/_data/navigation/mainNav.json5 (1 hunks)
  • src/pages/resources/howtos/index.html (0 hunks)
  • src/pages/resources/howtos/index.md (1 hunks)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
  • src/pages/resources/index.md (1 hunks)
💤 Files with no reviewable changes (1)
  • src/pages/resources/howtos/index.html
🧰 Additional context used
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[style] ~15-~15: Consider a more concise word here.
Context: ...ublic internet will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~96-~96: Consider using a synonym to be more concise.
Context: ...o docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[style] ~107-~107: This phrase is redundant. Consider using “outside”.
Context: ... a secured, highly-available service is outside of the scope of this documentation. Here a...

(OUTSIDE_OF)

🔇 Additional comments (4)
.cspell/words-that-should-exist.txt (1)

21-21: Dictionary update looks good

Adding the widely-used unit “kbps” avoids false-positive spell-checker warnings in future docs. No concerns.

.cspell/custom-words.txt (1)

16-36: Solid additions to custom word list

The new TLS-related terms (“certbot”, “fullchain”, “letsencrypt”, “privkey”) are common in infrastructure docs and will prevent needless spell-check noise. ✅

Also applies to: 50-55

src/pages/_data/navigation/mainNav.json5 (1)

64-69: Verify route & build before merge

The new nav item points to
/resources/howtos/running-network-infrastructure/.

  1. Confirm that src/pages/resources/howtos/running-network-infrastructure.md (or an equivalent index.md) exists so the static-site generator can resolve the route.
  2. Run a local build to ensure the JSON5 parses correctly; trailing commas are tolerated by JSON5, but a quick npm run build (or equivalent) will catch any accidental syntax issues.

No changes required if the build passes.

src/pages/resources/howtos/index.md (1)

1-10: 👍 New Markdown index replaces HTML successfully

Switching the Howtos index to Markdown simplifies maintenance and keeps formatting consistent with the rest of the site. The short intro and linked guides render well in most MD engines. No issues spotted.

@pdaoust pdaoust requested a review from a team July 28, 2025 22:07
@pdaoust pdaoust enabled auto-merge (squash) July 28, 2025 22:08
Copy link

@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

🧹 Nitpick comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

32-39: Avoid root-owned workdir and running VS Code as root

sudo mkdir makes /var/kitsune2-bootstrap root-owned, yet the following cd is executed un-privileged and the file is then opened with sudo code, starting VS Code under root.
Editing as root is rarely needed and can misconfigure extensions or file permissions. Consider:

sudo mkdir -p /var/kitsune2-bootstrap
sudo chown $USER:$USER /var/kitsune2-bootstrap   # give yourself write access
cd /var/kitsune2-bootstrap
code docker-compose.yaml                         # run VS Code unprivileged
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bfc6837 and 3ec0535.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[style] ~15-~15: Consider a more concise word here.
Context: ...ublic internet will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~96-~96: Consider using a synonym to be more concise.
Context: ...o docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[style] ~111-~111: This phrase is redundant. Consider using “outside”.
Context: ... a secured, highly-available service is outside of the scope of this documentation. Here a...

(OUTSIDE_OF)

🔇 Additional comments (2)
src/pages/resources/howtos/running-network-infrastructure.md (2)

43-44: Resolve remaining TODOs before publishing

Both image-URL TODO placeholders (<!-- TODO(upgrade): Update the docker image URL -->) should be cleared so copy-pasting the docs yields a working setup and avoids users pulling an outdated tag later.

Also applies to: 79-81


113-114: Double-check accuracy of the single-server / in-memory claim

The line contains a TODO questioning whether the bootstrap server’s database is in-memory and must remain single-instance. Please verify and either drop the TODO or adjust the wording so readers are not left uncertain.

@pdaoust pdaoust force-pushed the feat/local-infra-howto branch from 3ec0535 to e6eb4d3 Compare July 29, 2025 01:17
Copy link

@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

🧹 Nitpick comments (2)
src/pages/resources/howtos/running-network-infrastructure.md (2)

38-39: Reconsider sudo code – assume a headless server

Most production or cloud servers won’t have VS Code (or an X session) available, and running it under sudo is rarely desirable.
Switch to a CLI editor ( sudo nano … / sudo vi … ) or instruct the reader to edit locally and scp the file.

-sudo code docker-compose.yaml
+# open the file with your preferred editor – nano and vi are usually available
+sudo nano docker-compose.yaml

44-74: Host-network mode warrants an explicit caveat

network_mode: host binds all container ports directly on the host interface.
Add a short note that:

  • Port 443 must not already be in use on the host.
  • Using host networking bypasses Docker’s isolation; if tighter isolation or non-root ports are required, map 443:443 instead of host mode.

No YAML changes required—just call this out in the text above or below the snippet.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3ec0535 and e6eb4d3.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[style] ~15-~15: Consider a more concise word here.
Context: ...ublic internet will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~96-~96: Consider using a synonym to be more concise.
Context: ...o docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[style] ~111-~111: This phrase is redundant. Consider using “outside”.
Context: ... a secured, highly-available service is outside of the scope of this documentation. Here a...

(OUTSIDE_OF)

🔇 Additional comments (3)
src/pages/resources/howtos/running-network-infrastructure.md (3)

32-36: Corrected sudo cd issue – thanks!

The two-step approach (sudo mkdir … then plain cd) resolves the earlier problem nicely.


60-64: Double-check the SBD burst value

--sbd-limit-ip-byte-burst expects a byte count, while the comment labels it “kilobytes per second”. If the intent is a 26 MB burst, the argument is correct; otherwise convert the desired KiB value to bytes.

Please verify with kitsune2-bootstrap-srv --help.


113-115: Unverified claim about the in-memory database

The TODO suggests uncertainty (“”). Before publishing, confirm whether the bootstrap server really keeps its state purely in memory. If it now supports a persistent database, the single-instance & HA warning should be amended.

coderabbitai[bot]

This comment was marked as resolved.

pdaoust and others added 2 commits July 30, 2025 12:15
Co-authored-by: ThetaSinner <ThetaSinner@users.noreply.github.com>
coderabbitai[bot]

This comment was marked as resolved.

Copy link

@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: 2

♻️ Duplicate comments (2)
src/pages/resources/howtos/running-network-infrastructure.md (2)

5-7: Intro wording & Oxford comma nit (duplicate of earlier feedback)
The opening sentence still reads “downloading, configuring and running”. Consider “downloading, configuring, and running” for consistency.


168-175: Ensure the file ends with a newline and add spacing before the closing admonition

MD047 warns that the file lacks a trailing newline, and MD031 flags the missing blank line before the closing !!!.

 We plan to discuss [authentication options](https://github.com/holochain/sbd/blob/main/spec-auth.md) in the future.
 !!!
+
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 832008a and 9fe853c.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...g Network Infrastructure --- ::: intro This howto will walk you through downloading,...

(QB_NEW_EN_OTHER)


[grammar] ~6-~6: Add a comma
Context: ...owto will walk you through downloading, configuring and running a containerized setup that ...

(QB_NEW_EN_OTHER_ERROR_IDS_22)


[grammar] ~6-~6: There might be a mistake here.
Context: ...direct connection can't be established. ::: The [kitsune2 bootstrap server](https:/...

(QB_NEW_EN_OTHER)


[grammar] ~9-~9: There might be a mistake here.
Context: ...itsune2/tree/main/crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signal...

(QB_NEW_EN_OTHER)


[grammar] ~11-~11: There might be a mistake here.
Context: ...crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signalling for WebRTC co...

(QB_NEW_EN_OTHER)


[grammar] ~12-~12: There might be a mistake here.
Context: ...ing for WebRTC connection setup between peers * Optionally, the same WebSocket protocol ...

(QB_NEW_EN_OTHER)


[grammar] ~13-~13: There might be a mistake here.
Context: ...nection to each other in the signalling step Any user-friendly hApp will need these s...

(QB_NEW_EN_OTHER)


[grammar] ~15-~15: Ensure spelling is correct
Context: ... the signalling step Any user-friendly hApp will need these services in order to op...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~15-~15: Use correct spacing
Context: ...pp will need these services in order to operate. !!! info Public server The Holochain Fou...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~17-~17: Use colons correctly
Context: ...ese services in order to operate. !!! info Public server The Holochain Foundation ...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~18-~18: Use correct spacing
Context: ...bandwidth and has no uptime guarantees. !!! ## Requirements * A server with a containe...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~24-~24: Use modal and auxiliary verbs correctly
Context: ... and key files for your server's domain name stored in the server's filesystem in [P...

(QB_NEW_EN_OTHER_ERROR_IDS_24)


[grammar] ~24-~24: There might be a problem here.
Context: ...your server's domain name stored in the server's filesystem in [PEM](https://en.wikipedia.org/wiki/...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~24-~24: Use correct spacing
Context: ...he certificates will be trusted by your users. ## Create a Docker compose file Create a `...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~26-~26: There might be a mistake here.
Context: ...sted by your users. ## Create a Docker compose file Create a docker-compose.yaml file in a...

(QB_NEW_EN_OTHER)


[grammar] ~28-~28: There might be a mistake here.
Context: ...t/kitsune2-bootstrap` and editing it in Vim: bash sudo mkdir -p /opt/kitsune2-bootstrap ```bash sudo touch /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash sudo chown $(whoami) /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash vim /opt/kitsune2-bootstrap/docker-compose.yaml ``` Copy this code into the fi...

(QB_NEW_EN_OTHER)


[grammar] ~43-~43: Use correct spacing
Context: ...TLS certificate and key files, and save it. yaml services: bootstrap: image: ghcr.io/holochain/kitsune2_bootstrap_srv:v0.2.11 command: - kitsune2-bootstrap-srv - --production - --listen - "[::]:443" # Replace these with actual paths to your cert and key files, # relative to the local volume mount point you specify further down. - --tls-cert - /etc/letsencrypt/live/bootstrap.example.org/fullchain.pem - --tls-key - /etc/letsencrypt/live/bootstrap.example.org/privkey.pem environment: - RUST_LOG=info network_mode: host volumes: # Replace this with the path to the TLS certificate files on the host # and your desired mount point inside the container, in this format: # <host path>:<mount point> - /etc/letsencrypt/:/etc/letsencrypt/ restart: unless-stopped !!! info Tuning the bootstrap server's p...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~72-~72: Use colons correctly
Context: .../ restart: unless-stopped ``` !!! info Tuning the bootstrap server's performan...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~73-~73: There might be a mistake here.
Context: ...` and convert them to hyphen-case, like this: yaml # ... command: - kitsune2-bootstrap-srv - --sbd-limit-clients - 50 # ... !!! ## Run the container Test...

(QB_NEW_EN_OTHER)


[grammar] ~85-~85: There might be a mistake here.
Context: ...ts - 50 # ... !!! ## Run the container Test the configuration: bash docker ...

(QB_NEW_EN_OTHER)


[grammar] ~87-~87: There might be a mistake here.
Context: ...!!! ## Run the container Test the configuration: bash docker compose up ``` You should see a lot of log message...

(QB_NEW_EN_OTHER)


[style] ~93-~93: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[grammar] ~93-~93: There might be a mistake here.
Context: ...a lot of log messages, ending with this line: ::: output-block ```text bootstrap-1 |...

(QB_NEW_EN_OTHER)


[grammar] ~95-~95: There might be a problem here.
Context: ...g messages, ending with this line: ::: output-block text bootstrap-1 | #kitsune2_bootstrap_srv#listening#[::]:443# ::: If you see this, you know your server i...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~101-~101: There might be a mistake here.
Context: ...ow run the container in detached/daemon mode: bash docker compose up --detach !!! info Running a production serve...

(QB_NEW_EN_OTHER)


[style] ~108-~108: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[grammar] ~108-~108: There might be a mistake here.
Context: ... server is outside of the scope of this documentation, and will require thinking about things...

(QB_NEW_EN_OTHER)


[grammar] ~108-~108: There might be a mistake here.
Context: ... are things to know about the bootstrap server: * Even though the server keeps its own st...

(QB_NEW_EN_OTHER)


[grammar] ~111-~111: Use hyphens correctly
Context: ...g instances of the bootstrap server for load-sharing. * One instance can be used as ...

(QB_NEW_EN_OTHER_ERROR_IDS_29)


[typographical] ~114-~114: To join two clauses or set off examples, consider using an em dash.
Context: ...nstance for your expected peak level of usage --- it may be helpful to simulate this using...

(QB_NEW_EN_DASH_RULE_EM)


[grammar] ~115-~115: Use correct spacing
Context: ...hain in high-load or failure scenarios. !!! ## Configure your hApp to use your bootstra...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~118-~118: There might be a mistake here.
Context: ...nfigure your hApp to use your bootstrap server To use your server in testing, and to te...

(QB_NEW_EN_OTHER)


[grammar] ~122-~122: There might be a mistake here.
Context: .../issues/4761 --> To use your server in testing, and to test that the server is running...

(QB_NEW_EN_OTHER)


[grammar] ~122-~122: There might be a mistake here.
Context: ...ckage.json` file and edit the following line: diff:json ... "scripts": { - "start": "AGENTS=${AGENTS:-3} BOOTSTRAP_PORT=$(get-port) npm run network", + "start": "AGENTS=${AGENTS:-3} npm run network", "network": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:happ\" \"hc playground\"", "test": "npm run build:zomes && hc app pack workdir --recursive && npm run test --workspace tests", // Replace the hApp bundle name and URLs with your actual values. - "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT workdir/my_app.happ", + "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT --bootstrap-url \"https://bootstrap.example.org\" --signaling-url \"wss://bootstrap.example.org\" workdir/my_app.happ", // If you use the Tauri-based launcher, you can also make the following // edits. - "start:tauri": "AGENTS=${AGENTS:-2} BOOTSTRAP_PORT=$(get-port) npm run network:tauri", + "start:tauri": "AGENTS=${AGENTS:-2} npm run network:tauri", "network:tauri": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:tauri\" \"hc playground\"", - "launch:tauri": "concurrently \"kitsune2-bootstrap-srv --listen \"127.0.0.1:$BOOTSTRAP_PORT\"\" \"echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT network --bootstrap http://127.0.0.1:\"$BOOTSTRAP_PORT\" webrtc ws://127.0.0.1:\"$BOOTSTRAP_PORT\"\"", + "launch:tauri": "echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT network --bootstrap \"https://bootstrap.example.org\" webrtc \"wss://bootstrap.example.org\"", "package": "npm run build:happ && npm run package --workspace ui && hc web-app pack workdir --recursive", "build:happ": "npm run build:zomes && hc app pack workdir --recursive", "build:zomes": "cargo build --release --target wasm32-unknown-unknown" }, ... If you're usi...

(QB_NEW_EN_OTHER)


[grammar] ~150-~150: There might be a mistake here.
Context: ...onfig.ts` file, then edit the following lines: diff:typescript import { defineConfig } from './src/main/defineConfig'; export default defineConfig({ // ... // Use your actual domain name here. - bootstrapUrl: 'https://dev-test-bootstrap2.holochain.org/', + bootstrapUrl: 'https://bootstrap.example.org/', - signalUrl: 'wss://dev-test-bootstrap2.holochain.org/', + signalUrl: 'wss://bootstrap.example.org/', iceUrls: ['stun:stun.l.google.com:19302','stun:stun.cloudflare.com:3478'], // ... }); !!! info Hardening your...

(QB_NEW_EN_OTHER)


[grammar] ~168-~168: Use colons correctly
Context: ...re.com:3478'], // ... }); ``` !!! info Hardening your server against unintende...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~169-~169: There might be a mistake here.
Context: ...cate incoming connections to the server because: * Unauthorized requests to the bootstrap ...

(QB_NEW_EN_OTHER)


[grammar] ~172-~172: Use correct spacing
Context: ...ther hApps to freeload on your server's bandwidth. We plan to discuss [authentication optio...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[style] ~174-~174: Using many exclamation marks might seem excessive (in this case: 24 exclamation marks for a text that’s 5818 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


82-82: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


96-96: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


98-98: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


175-175: Files should end with a single newline character

(MD047, single-trailing-newline)

@pdaoust pdaoust force-pushed the feat/local-infra-howto branch from 2234047 to 64861f0 Compare July 31, 2025 15:10
@pdaoust pdaoust force-pushed the feat/local-infra-howto branch from 64861f0 to 6b4cf6e Compare July 31, 2025 15:12
matthme
matthme previously approved these changes Jul 31, 2025
Copy link

@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

♻️ Duplicate comments (2)
src/pages/resources/howtos/running-network-infrastructure.md (2)

5-7: Intro wording still ignores prior suggestion – prefer “how-to” & present-tense

Previous feedback recommended the concise, Oxford-comma version (“This how-to walks you through …”) but the text has reverted.
Keeping consistent terminology (“how-to”) across docs aids searchability and polish.

-This howto will walk you through downloading, configuring, and running a containerized setup …
+This how-to walks you through downloading, configuring, and running a containerised setup …

177-184: File still missing trailing newline

Markdownlint MD047 and many POSIX tooling conventions expect a newline after the final !!! line.

-!!!
+!!!
+
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9fe853c and c3816f1.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...g Network Infrastructure --- ::: intro This howto will walk you through downloading,...

(QB_NEW_EN_OTHER)


[grammar] ~6-~6: There might be a mistake here.
Context: ...direct connection can't be established. ::: The [kitsune2 bootstrap server](https:/...

(QB_NEW_EN_OTHER)


[grammar] ~9-~9: There might be a mistake here.
Context: ...itsune2/tree/main/crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signal...

(QB_NEW_EN_OTHER)


[grammar] ~11-~11: There might be a mistake here.
Context: ...crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signalling for WebRTC co...

(QB_NEW_EN_OTHER)


[grammar] ~12-~12: There might be a mistake here.
Context: ...ing for WebRTC connection setup between peers * Optionally, the same WebSocket protocol ...

(QB_NEW_EN_OTHER)


[grammar] ~13-~13: There might be a mistake here.
Context: ...nection to each other in the signalling step Any user-friendly hApp will need these s...

(QB_NEW_EN_OTHER)


[grammar] ~15-~15: Ensure spelling is correct
Context: ... the signalling step Any user-friendly hApp will need these services in order to op...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~15-~15: Use correct spacing
Context: ...pp will need these services in order to operate. !!! info Public server The Holochain Fou...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~17-~17: Use colons correctly
Context: ...ese services in order to operate. !!! info Public server The Holochain Foundation ...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~18-~18: Use correct spacing
Context: ...bandwidth and has no uptime guarantees. !!! ## Requirements * A server with a containe...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~24-~24: Use modal and auxiliary verbs correctly
Context: ... and key files for your server's domain name stored in the server's filesystem in [P...

(QB_NEW_EN_OTHER_ERROR_IDS_24)


[grammar] ~24-~24: There might be a problem here.
Context: ...your server's domain name stored in the server's filesystem in [PEM](https://en.wikipedia.org/wiki/...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~24-~24: Use correct spacing
Context: ...he certificates will be trusted by your users. ## Create a Docker compose file Create a `...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~26-~26: There might be a mistake here.
Context: ...sted by your users. ## Create a Docker compose file Create a docker-compose.yaml file in a...

(QB_NEW_EN_OTHER)


[grammar] ~28-~28: There might be a mistake here.
Context: ...t/kitsune2-bootstrap` and editing it in Vim: bash sudo mkdir -p /opt/kitsune2-bootstrap ```bash sudo touch /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash sudo chown $(whoami) /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash vim /opt/kitsune2-bootstrap/docker-compose.yaml ``` Copy this code into the fi...

(QB_NEW_EN_OTHER)


[grammar] ~43-~43: Use correct spacing
Context: ...TLS certificate and key files, and save it. yaml services: bootstrap: image: ghcr.io/holochain/kitsune2_bootstrap_srv:v0.2.11 command: - kitsune2-bootstrap-srv - --production - --listen - "[::]:443" # Replace these with actual paths to your cert and key files, # relative to the local volume mount point you specify further down. - --tls-cert - /etc/letsencrypt/live/bootstrap.example.org/fullchain.pem - --tls-key - /etc/letsencrypt/live/bootstrap.example.org/privkey.pem environment: - RUST_LOG=info network_mode: host volumes: # Replace this with the path to the TLS certificate files on the host # and your desired mount point inside the container, in this format: # <host path>:<mount point> - /etc/letsencrypt/:/etc/letsencrypt/ restart: unless-stopped !!! info Tuning the bootstrap server's p...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~72-~72: Use colons correctly
Context: .../ restart: unless-stopped ``` !!! info Tuning the bootstrap server's performan...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~73-~73: There might be a mistake here.
Context: ...` and convert them to hyphen-case, like this: yaml # ... command: - kitsune2-bootstrap-srv - --sbd-limit-clients - 50 # ... !!! ## Run the container Test...

(QB_NEW_EN_OTHER)


[grammar] ~85-~85: There might be a mistake here.
Context: ...ts - 50 # ... !!! ## Run the container Test the configuration: bash docker ...

(QB_NEW_EN_OTHER)


[grammar] ~87-~87: There might be a mistake here.
Context: ...!!! ## Run the container Test the configuration: bash docker compose up ``` You should see a lot of log message...

(QB_NEW_EN_OTHER)


[style] ~93-~93: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[grammar] ~93-~93: There might be a mistake here.
Context: ...a lot of log messages, ending with this line: ::: output-block ```text bootstrap-1 |...

(QB_NEW_EN_OTHER)


[grammar] ~95-~95: There might be a problem here.
Context: ...g messages, ending with this line: ::: output-block text bootstrap-1 | #kitsune2_bootstrap_srv#listening#[::]:443# ::: If you see this, you know your server i...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~101-~101: There might be a mistake here.
Context: ...ow run the container in detached/daemon mode: bash docker compose up --detach !!! info Running a production serve...

(QB_NEW_EN_OTHER)


[style] ~108-~108: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[grammar] ~108-~108: There might be a mistake here.
Context: ... server is outside of the scope of this documentation, and will require thinking about things...

(QB_NEW_EN_OTHER)


[grammar] ~108-~108: There might be a mistake here.
Context: ... are things to know about the bootstrap server: * Even though the server keeps its own st...

(QB_NEW_EN_OTHER)


[grammar] ~111-~111: Use hyphens correctly
Context: ...g instances of the bootstrap server for load-sharing. * One instance can be used as ...

(QB_NEW_EN_OTHER_ERROR_IDS_29)


[typographical] ~114-~114: To join two clauses or set off examples, consider using an em dash.
Context: ...nstance for your expected peak level of usage --- it may be helpful to simulate this using...

(QB_NEW_EN_DASH_RULE_EM)


[grammar] ~115-~115: Use correct spacing
Context: ...hain in high-load or failure scenarios. !!! ## Configure your hApp to use your bootstra...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~118-~118: There might be a problem here.
Context: ...nfigure your hApp to use your bootstrap server ### Testing To use your server in testing, and to te...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~124-~124: There might be a mistake here.
Context: ...--> ### Testing To use your server in testing, and to test that the server is running...

(QB_NEW_EN_OTHER)


[grammar] ~124-~124: Use correct spacing
Context: ...ckage.json` file and edit the following lines. !!! Use a network seed during testing If...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~127-~127: Use correct spacing
Context: ... that test data ends up in its own DHT. !!! diff:json ... "scripts": { - "start": "AGENTS=${AGENTS:-3} BOOTSTRAP_PORT=$(get-port) npm run network", + "start": "AGENTS=${AGENTS:-3} npm run network", "network": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:happ\" \"hc playground\"", "test": "npm run build:zomes && hc app pack workdir --recursive && npm run test --workspace tests", // Replace the hApp bundle name and URLs with your actual values. - "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT workdir/my_app.happ", + // Use bootstrap server + "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT --bootstrap-url \"https://bootstrap.example.org\" --signaling-url \"wss://bootstrap.example.org\" --network-seed \"bootstrap-testing-network-only\" workdir/my_app.happ", // If you use the Tauri-based launcher, you can also make the following // edits. - "start:tauri": "AGENTS=${AGENTS:-2} BOOTSTRAP_PORT=$(get-port) npm run network:tauri", + "start:tauri": "AGENTS=${AGENTS:-2} npm run network:tauri", "network:tauri": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:tauri\" \"hc playground\"", - "launch:tauri": "concurrently \"kitsune2-bootstrap-srv --listen \"127.0.0.1:$BOOTSTRAP_PORT\"\" \"echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT network --bootstrap http://127.0.0.1:\"$BOOTSTRAP_PORT\" webrtc ws://127.0.0.1:\"$BOOTSTRAP_PORT\"\"", + "launch:tauri": "echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT --network-seed \"bootstrap-testing-network-only\" network --bootstrap \"https://bootstrap.example.org\" webrtc \"wss://bootstrap.example.org\"", "package": "npm run build:happ && npm run package --workspace ui && hc web-app pack workdir --recursive", "build:happ": "npm run build:zomes && hc app pack workdir --recursive", "build:zomes": "cargo build --release --target wasm32-unknown-unknown" }, ... ### Production If you're using [Kangaroo](h...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~159-~159: There might be a mistake here.
Context: ...onfig.ts` file, then edit the following lines: diff:typescript import { defineConfig } from './src/main/defineConfig'; export default defineConfig({ // ... // Use your actual domain name here. - bootstrapUrl: 'https://dev-test-bootstrap2.holochain.org/', + bootstrapUrl: 'https://bootstrap.example.org/', - signalUrl: 'wss://dev-test-bootstrap2.holochain.org/', + signalUrl: 'wss://bootstrap.example.org/', iceUrls: ['stun:stun.l.google.com:19302','stun:stun.cloudflare.com:3478'], // ... }); !!! info Hardening your...

(QB_NEW_EN_OTHER)


[grammar] ~177-~177: Use colons correctly
Context: ...re.com:3478'], // ... }); ``` !!! info Hardening your server against unintende...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~178-~178: There might be a mistake here.
Context: ...cate incoming connections to the server because: * Unauthorized requests to the bootstrap ...

(QB_NEW_EN_OTHER)


[grammar] ~181-~181: Use correct spacing
Context: ...ther hApps to freeload on your server's bandwidth. We plan to discuss [authentication optio...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[style] ~183-~183: Using many exclamation marks might seem excessive (in this case: 30 exclamation marks for a text that’s 6122 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


82-82: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


96-96: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


98-98: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


184-184: Files should end with a single newline character

(MD047, single-trailing-newline)

🔇 Additional comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

53-55: --listen "[::]:443" may not accept IPv4 on some hosts

Binding only to the IPv6 wildcard relies on the kernel’s net.ipv6.bindv6only = 0 default.
On hardened or some container hosts this is often 1, leaving the service unreachable via IPv4.

Consider an explicit dual bind or IPv4 wildcard:

-      - --listen
-      - "[::]:443"
+# Prefer dual-stack compatibility
+      - --listen
+      - "0.0.0.0:443"
+# or for dual entries:
+#      - --listen
+#      - "0.0.0.0:443,[::]:443"

Copy link

@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

♻️ Duplicate comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

184-184: Still missing trailing newline – same concern raised earlier.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9fe853c and c3816f1.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[style] ~93-~93: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[style] ~108-~108: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[style] ~183-~183: Using many exclamation marks might seem excessive (in this case: 30 exclamation marks for a text that’s 6122 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


82-82: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


96-96: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


98-98: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


184-184: Files should end with a single newline character

(MD047, single-trailing-newline)

Copy link

@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: 5

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c3816f1 and 22c3c5e.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...g Network Infrastructure --- ::: intro This howto will walk you through downloading,...

(QB_NEW_EN_OTHER)


[grammar] ~6-~6: There might be a mistake here.
Context: ...direct connection can't be established. ::: The [kitsune2 bootstrap server](https:/...

(QB_NEW_EN_OTHER)


[grammar] ~9-~9: There might be a mistake here.
Context: ...itsune2/tree/main/crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signal...

(QB_NEW_EN_OTHER)


[grammar] ~11-~11: There might be a mistake here.
Context: ...crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signaling for WebRTC con...

(QB_NEW_EN_OTHER)


[grammar] ~12-~12: There might be a mistake here.
Context: ...ing for WebRTC connection setup between peers * Optionally, the same WebSocket protocol ...

(QB_NEW_EN_OTHER)


[grammar] ~13-~13: There might be a mistake here.
Context: ...nnection to each other in the signaling step Any user-friendly hApp will need these s...

(QB_NEW_EN_OTHER)


[grammar] ~15-~15: Ensure spelling is correct
Context: ...n the signaling step Any user-friendly hApp will need these services in order to op...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~15-~15: Use correct spacing
Context: ...pp will need these services in order to operate. !!! info Public server The Holochain Fou...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~17-~17: Use colons correctly
Context: ...ese services in order to operate. !!! info Public server The Holochain Foundation ...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~18-~18: Use correct spacing
Context: ...bandwidth and has no uptime guarantees. !!! ## Requirements * A server with a containe...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~24-~24: Use modal and auxiliary verbs correctly
Context: ... and key files for your server's domain name stored in the server's filesystem in [P...

(QB_NEW_EN_OTHER_ERROR_IDS_24)


[grammar] ~24-~24: There might be a problem here.
Context: ...your server's domain name stored in the server's filesystem in [PEM](https://en.wikipedia.org/wiki/...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~24-~24: Use correct spacing
Context: ...he certificates will be trusted by your users. ## Create a Docker compose file Create a `...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~26-~26: There might be a mistake here.
Context: ...sted by your users. ## Create a Docker compose file Create a docker-compose.yaml file in a...

(QB_NEW_EN_OTHER)


[grammar] ~28-~28: There might be a mistake here.
Context: ...t/kitsune2-bootstrap` and editing it in Vim: bash sudo mkdir -p /opt/kitsune2-bootstrap ```bash sudo touch /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash sudo chown $(whoami) /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash vim /opt/kitsune2-bootstrap/docker-compose.yaml ``` Copy this code into the fi...

(QB_NEW_EN_OTHER)


[grammar] ~43-~43: Use correct spacing
Context: ...TLS certificate and key files, and save it. yaml services: bootstrap: image: ghcr.io/holochain/kitsune2_bootstrap_srv:v0.2.11 command: - kitsune2-bootstrap-srv - --production - --listen - "[::]:443" # Replace these with actual paths to your cert and key files, # relative to the local volume mount point you specify further down. - --tls-cert - /etc/letsencrypt/live/bootstrap.example.org/fullchain.pem - --tls-key - /etc/letsencrypt/live/bootstrap.example.org/privkey.pem environment: - RUST_LOG=info network_mode: host volumes: # Replace this with the path to the TLS certificate files on the host # and your desired mount point inside the container, in this format: # <host path>:<mount point> - /etc/letsencrypt/:/etc/letsencrypt/ restart: unless-stopped !!! info Tuning the bootstrap server's p...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~72-~72: Use colons correctly
Context: .../ restart: unless-stopped ``` !!! info Tuning the bootstrap server's performan...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~73-~73: There might be a mistake here.
Context: ...` and convert them to hyphen-case, like this: yaml # ... command: - kitsune2-bootstrap-srv - --sbd-limit-clients - 50 # ... !!! ## Run the container Test...

(QB_NEW_EN_OTHER)


[grammar] ~85-~85: There might be a mistake here.
Context: ...ts - 50 # ... !!! ## Run the container Test the configuration: bash docker ...

(QB_NEW_EN_OTHER)


[grammar] ~87-~87: There might be a mistake here.
Context: ...!!! ## Run the container Test the configuration: bash docker compose up ``` You should see a lot of log message...

(QB_NEW_EN_OTHER)


[style] ~93-~93: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[grammar] ~93-~93: There might be a mistake here.
Context: ...a lot of log messages, ending with this line: ::: output-block ```text bootstrap-1 |...

(QB_NEW_EN_OTHER)


[grammar] ~95-~95: There might be a problem here.
Context: ...g messages, ending with this line: ::: output-block text bootstrap-1 | #kitsune2_bootstrap_srv#listening#[::]:443# ::: If you see this, you know your server i...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~101-~101: There might be a mistake here.
Context: ...ow run the container in detached/daemon mode: bash docker compose up --detach !!! info Running a production serve...

(QB_NEW_EN_OTHER)


[style] ~108-~108: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[grammar] ~108-~108: There might be a mistake here.
Context: ... server is outside of the scope of this documentation, and will require thinking about things...

(QB_NEW_EN_OTHER)


[grammar] ~108-~108: There might be a mistake here.
Context: ... are things to know about the bootstrap server: * Even though the server keeps its own st...

(QB_NEW_EN_OTHER)


[grammar] ~111-~111: Use hyphens correctly
Context: ...g instances of the bootstrap server for load-sharing. * One instance can be used as ...

(QB_NEW_EN_OTHER_ERROR_IDS_29)


[typographical] ~114-~114: To join two clauses or set off examples, consider using an em dash.
Context: ...nstance for your expected peak level of usage --- it may be helpful to simulate this using...

(QB_NEW_EN_DASH_RULE_EM)


[grammar] ~115-~115: Use correct spacing
Context: ...hain in high-load or failure scenarios. !!! ## Configure your hApp to use your bootstra...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~118-~118: There might be a problem here.
Context: ...nfigure your hApp to use your bootstrap server ### Testing To use your server in testing, and to te...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~124-~124: There might be a mistake here.
Context: ...--> ### Testing To use your server in testing, and to test that the server is running...

(QB_NEW_EN_OTHER)


[grammar] ~124-~124: Use correct spacing
Context: ...ckage.json` file and edit the following lines. !!! info Use a network seed during testi...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~126-~126: Use colons correctly
Context: ...ile and edit the following lines. !!! info Use a network seed during testing If yo...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~126-~126: There might be a mistake here.
Context: ...es. !!! info Use a network seed during testing If you use the same server for productio...

(QB_NEW_EN_OTHER)


[grammar] ~127-~127: Use correct spacing
Context: ... that test data ends up in its own DHT. !!! diff:json ... "scripts": { - "start": "AGENTS=${AGENTS:-3} BOOTSTRAP_PORT=$(get-port) npm run network", + "start": "AGENTS=${AGENTS:-3} npm run network", "network": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:happ\" \"hc playground\"", "test": "npm run build:zomes && hc app pack workdir --recursive && npm run test --workspace tests", // Replace the hApp bundle name and URLs with your actual values. - "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT workdir/my_app.happ", + // Use bootstrap server + "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT --bootstrap-url \"https://bootstrap.example.org\" --signaling-url \"wss://bootstrap.example.org\" --network-seed \"bootstrap-testing-network-only\" workdir/my_app.happ", // If you use the Tauri-based launcher, you can also make the following // edits. - "start:tauri": "AGENTS=${AGENTS:-2} BOOTSTRAP_PORT=$(get-port) npm run network:tauri", + "start:tauri": "AGENTS=${AGENTS:-2} npm run network:tauri", "network:tauri": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:tauri\" \"hc playground\"", - "launch:tauri": "concurrently \"kitsune2-bootstrap-srv --listen \"127.0.0.1:$BOOTSTRAP_PORT\"\" \"echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT network --bootstrap http://127.0.0.1:\"$BOOTSTRAP_PORT\" webrtc ws://127.0.0.1:\"$BOOTSTRAP_PORT\"\"", + "launch:tauri": "echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT --network-seed \"bootstrap-testing-network-only\" network --bootstrap \"https://bootstrap.example.org\" webrtc \"wss://bootstrap.example.org\"", "package": "npm run build:happ && npm run package --workspace ui && hc web-app pack workdir --recursive", "build:happ": "npm run build:zomes && hc app pack workdir --recursive", "build:zomes": "cargo build --release --target wasm32-unknown-unknown" }, ... ### Production If you're using [Kangaroo](h...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~159-~159: There might be a mistake here.
Context: ...onfig.ts` file, then edit the following lines: diff:typescript import { defineConfig } from './src/main/defineConfig'; export default defineConfig({ // ... // Use your actual domain name here. - bootstrapUrl: 'https://dev-test-bootstrap2.holochain.org/', + bootstrapUrl: 'https://bootstrap.example.org/', - signalUrl: 'wss://dev-test-bootstrap2.holochain.org/', + signalUrl: 'wss://bootstrap.example.org/', iceUrls: ['stun:stun.l.google.com:19302','stun:stun.cloudflare.com:3478'], // ... }); !!! info Hardening your...

(QB_NEW_EN_OTHER)


[grammar] ~177-~177: Use colons correctly
Context: ...re.com:3478'], // ... }); ``` !!! info Hardening your server against unintende...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~178-~178: There might be a mistake here.
Context: ...cate incoming connections to the server because: * Unauthorized requests to the bootstrap ...

(QB_NEW_EN_OTHER)


[grammar] ~181-~181: Use correct spacing
Context: ...ther hApps to freeload on your server's bandwidth. We plan to discuss [authentication optio...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[style] ~183-~183: Using many exclamation marks might seem excessive (in this case: 30 exclamation marks for a text that’s 6125 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


82-82: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


96-96: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


98-98: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


184-184: Files should end with a single newline character

(MD047, single-trailing-newline)

matthme
matthme previously approved these changes Jul 31, 2025
Copy link

@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: 2

♻️ Duplicate comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

17-19: Quote admonition title for correct rendering
The admonition header is still un-quoted (!!! info Public server). Most MD-X parsers treat the first un-quoted word as the type and everything else as body text, so “Public server” is rendered as normal prose rather than a heading.
Wrap the title in quotes to keep the heading styling:

-!!! info Public server
+!!! info "Public server"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 22c3c5e and 02c8e93.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[style] ~93-~93: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[style] ~108-~108: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[style] ~183-~183: Using many exclamation marks might seem excessive (in this case: 30 exclamation marks for a text that’s 6125 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


82-82: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


96-96: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


98-98: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


184-184: Files should end with a single newline character

(MD047, single-trailing-newline)

🔇 Additional comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

64-69: Good call mounting certificates read-only
The :ro flag on the /etc/letsencrypt bind-mount prevents accidental or malicious modification of key material from inside the container. Nice security hardening.

@matthme
Copy link
Contributor

matthme commented Jul 31, 2025

@pdaoust are you sure about that latest change suggested by coderabbit? The bootstrap server definitely is writing stuff to disk and I think mounting a volume in a docker container means that all data written in that container is written to the associated volume, no?

@pdaoust
Copy link
Contributor Author

pdaoust commented Jul 31, 2025

@matthme good question -- FWIU it shouldn't get write access to the cert files, cuz it could clobber them if it's got a bug (or if there's a supply chain attack). Any other state, Gregory tells me, is ephemeral and can safely be lost and rebuilt.

Copy link

@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: 2

♻️ Duplicate comments (1)
src/pages/resources/howtos/running-network-infrastructure.md (1)

17-19: Admonition title still unquoted – rendering differs from intent

Earlier feedback noted that, without quotes, “Public server” is rendered as plain text instead of a heading.
If the heading style is desired, quote the title:

-!!! info Public server
+!!! info "Public server"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 02c8e93 and 400e7fb.

📒 Files selected for processing (1)
  • src/pages/resources/howtos/running-network-infrastructure.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.
📚 Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which req...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: pdaoust uses /opt directory for system-wide service installations like kitsune2-bootstrap, which requires sudo privileges for directory creation - this is standard and appropriate.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
📚 Learning: in documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers ...
Learnt from: pdaoust
PR: holochain/docs-pages#594
File: src/pages/resources/howtos/running-network-infrastructure.md:30-38
Timestamp: 2025-07-30T20:44:56.490Z
Learning: In documentation, pdaoust prefers separate bash code blocks over consolidated ones to allow readers to copy individual commands easily, even if it violates MD031 linting rules.

Applied to files:

  • src/pages/resources/howtos/running-network-infrastructure.md
🪛 LanguageTool
src/pages/resources/howtos/running-network-infrastructure.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...g Network Infrastructure --- ::: intro This howto will walk you through downloading,...

(QB_NEW_EN_OTHER)


[grammar] ~6-~6: There might be a mistake here.
Context: ...direct connection can't be established. ::: The [kitsune2 bootstrap server](https:/...

(QB_NEW_EN_OTHER)


[grammar] ~9-~9: There might be a mistake here.
Context: ...itsune2/tree/main/crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signal...

(QB_NEW_EN_OTHER)


[grammar] ~11-~11: There might be a mistake here.
Context: ...crates/bootstrap_srv) provides: * Peer discovery * WebSocket-based signaling for WebRTC con...

(QB_NEW_EN_OTHER)


[grammar] ~12-~12: There might be a mistake here.
Context: ...ing for WebRTC connection setup between peers * Optionally, the same WebSocket protocol ...

(QB_NEW_EN_OTHER)


[grammar] ~13-~13: There might be a mistake here.
Context: ...nnection to each other in the signaling step Any user-friendly hApp will need these s...

(QB_NEW_EN_OTHER)


[grammar] ~15-~15: Ensure spelling is correct
Context: ...n the signaling step Any user-friendly hApp will need these services in order to op...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~15-~15: Consider a more concise word here.
Context: ...-friendly hApp will need these services in order to operate. !!! info Public server The Ho...

(IN_ORDER_TO_PREMIUM)


[grammar] ~15-~15: Use correct spacing
Context: ...pp will need these services in order to operate. !!! info Public server The Holochain Fou...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~17-~17: Use colons correctly
Context: ...ese services in order to operate. !!! info Public server The Holochain Foundation ...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...ng. It's not appropriate for production hApps, though, because it's low-bandwidth and...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~18-~18: Use correct spacing
Context: ...bandwidth and has no uptime guarantees. !!! ## Requirements * A server with a containe...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~24-~24: Use modal and auxiliary verbs correctly
Context: ... and key files for your server's domain name stored in the server's filesystem in [P...

(QB_NEW_EN_OTHER_ERROR_IDS_24)


[grammar] ~24-~24: There might be a problem here.
Context: ...your server's domain name stored in the server's filesystem in [PEM](https://en.wikipedia.org/wiki/...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~24-~24: Use correct spacing
Context: ...he certificates will be trusted by your users. ## Create a Docker compose file Create a `...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~26-~26: There might be a mistake here.
Context: ...sted by your users. ## Create a Docker compose file Create a docker-compose.yaml file in a...

(QB_NEW_EN_OTHER)


[grammar] ~28-~28: There might be a mistake here.
Context: ...t/kitsune2-bootstrap` and editing it in Vim: bash sudo mkdir -p /opt/kitsune2-bootstrap ```bash sudo touch /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash sudo chown $(whoami) /opt/kitsune2-bootstrap/docker-compose.yaml ``` ```bash vim /opt/kitsune2-bootstrap/docker-compose.yaml ``` Copy this code into the fi...

(QB_NEW_EN_OTHER)


[grammar] ~43-~43: Use correct spacing
Context: ...TLS certificate and key files, and save it. yaml services: bootstrap: image: ghcr.io/holochain/kitsune2_bootstrap_srv:v0.2.11 command: - kitsune2-bootstrap-srv - --production - --listen - "[::]:443" # Replace these with actual paths to your cert and key files, # relative to the local volume mount point you specify further down. - --tls-cert - /etc/letsencrypt/live/bootstrap.example.org/fullchain.pem - --tls-key - /etc/letsencrypt/live/bootstrap.example.org/privkey.pem environment: - RUST_LOG=info ports: - "443:443" volumes: # Replace this with the path to the TLS certificate files on the host # and your desired mount point inside the container, in this format: # <host path>:<mount point> - /etc/letsencrypt/:/etc/letsencrypt/:ro restart: unless-stopped !!! info Tuning the bootstrap server's p...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~73-~73: Use colons correctly
Context: ...o restart: unless-stopped ``` !!! info Tuning the bootstrap server's performan...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~74-~74: There might be a mistake here.
Context: ...` and convert them to hyphen-case, like this: yaml # ... command: - kitsune2-bootstrap-srv - --sbd-limit-clients - 50 # ... !!! ## Run the container Test...

(QB_NEW_EN_OTHER)


[grammar] ~86-~86: There might be a mistake here.
Context: ...ts - 50 # ... !!! ## Run the container Test the configuration: bash docker ...

(QB_NEW_EN_OTHER)


[grammar] ~88-~88: There might be a mistake here.
Context: ...!!! ## Run the container Test the configuration: bash docker compose up ``` You should see a lot of log message...

(QB_NEW_EN_OTHER)


[style] ~94-~94: Consider using a synonym to be more concise.
Context: ...h docker compose up ``` You should see a lot of log messages, ending with this line: :...

(A_LOT_OF)


[grammar] ~94-~94: There might be a mistake here.
Context: ...a lot of log messages, ending with this line: ::: output-block ```text bootstrap-1 |...

(QB_NEW_EN_OTHER)


[grammar] ~96-~96: There might be a problem here.
Context: ...g messages, ending with this line: ::: output-block text bootstrap-1 | #kitsune2_bootstrap_srv#listening#[::]:443# ::: If you see this, you know your server i...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~102-~102: There might be a mistake here.
Context: ...ow run the container in detached/daemon mode: bash docker compose up --detach !!! info Running a production serve...

(QB_NEW_EN_OTHER)


[style] ~109-~109: This phrase is redundant. Consider using “outside”.
Context: ...n use. Operating a production server is outside of the scope of this documentation, and wi...

(OUTSIDE_OF)


[grammar] ~109-~109: There might be a mistake here.
Context: ... server is outside of the scope of this documentation, and will require thinking about things...

(QB_NEW_EN_OTHER)


[grammar] ~109-~109: There might be a mistake here.
Context: ... are things to know about the bootstrap server: * Even though the server keeps its own st...

(QB_NEW_EN_OTHER)


[grammar] ~112-~112: Use hyphens correctly
Context: ...g instances of the bootstrap server for load-sharing. * One instance can be used as ...

(QB_NEW_EN_OTHER_ERROR_IDS_29)


[typographical] ~115-~115: To join two clauses or set off examples, consider using an em dash.
Context: ...nstance for your expected peak level of usage --- it may be helpful to simulate this using...

(QB_NEW_EN_DASH_RULE_EM)


[grammar] ~116-~116: Use correct spacing
Context: ...hain in high-load or failure scenarios. !!! ## Configure your hApp to use your bootstra...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~119-~119: There might be a problem here.
Context: ...nfigure your hApp to use your bootstrap server ### Testing To use your server in testing, and to te...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~125-~125: There might be a mistake here.
Context: ...--> ### Testing To use your server in testing, and to test that the server is running...

(QB_NEW_EN_OTHER)


[grammar] ~125-~125: Use correct spacing
Context: ...ckage.json` file and edit the following lines. !!! info Use a network seed during testi...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~127-~127: Use colons correctly
Context: ...ile and edit the following lines. !!! info Use a network seed during testing If yo...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~127-~127: There might be a mistake here.
Context: ...es. !!! info Use a network seed during testing If you use the same server for productio...

(QB_NEW_EN_OTHER)


[grammar] ~128-~128: Use correct spacing
Context: ... that test data ends up in its own DHT. !!! diff:json ... "scripts": { - "start": "AGENTS=${AGENTS:-3} BOOTSTRAP_PORT=$(get-port) npm run network", + "start": "AGENTS=${AGENTS:-3} npm run network", "network": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:happ\" \"hc playground\"", "test": "npm run build:zomes && hc app pack workdir --recursive && npm run test --workspace tests", // Replace the hApp bundle name and URLs with your actual values. - "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT workdir/my_app.happ", + // Use bootstrap server + "launch:happ": "hc-spin -n $AGENTS --ui-port $UI_PORT --bootstrap-url \"https://bootstrap.example.org\" --signaling-url \"wss://bootstrap.example.org\" --network-seed \"bootstrap-testing-network-only\" workdir/my_app.happ", // If you use the Tauri-based launcher, you can also make the following // edits. - "start:tauri": "AGENTS=${AGENTS:-2} BOOTSTRAP_PORT=$(get-port) npm run network:tauri", + "start:tauri": "AGENTS=${AGENTS:-2} npm run network:tauri", "network:tauri": "hc sandbox clean && npm run build:happ && UI_PORT=$(get-port) concurrently \"npm run start --workspace ui\" \"npm run launch:tauri\" \"hc playground\"", - "launch:tauri": "concurrently \"kitsune2-bootstrap-srv --listen \"127.0.0.1:$BOOTSTRAP_PORT\"\" \"echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT network --bootstrap http://127.0.0.1:\"$BOOTSTRAP_PORT\" webrtc ws://127.0.0.1:\"$BOOTSTRAP_PORT\"\"", + "launch:tauri": "echo pass | RUST_LOG=warn hc launch --piped -n $AGENTS workdir/my_forum_app.happ --ui-port $UI_PORT --network-seed \"bootstrap-testing-network-only\" network --bootstrap \"https://bootstrap.example.org\" webrtc \"wss://bootstrap.example.org\"", "package": "npm run build:happ && npm run package --workspace ui && hc web-app pack workdir --recursive", "build:happ": "npm run build:zomes && hc app pack workdir --recursive", "build:zomes": "cargo build --release --target wasm32-unknown-unknown" }, ... ### Production If you're using [Kangaroo](h...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~160-~160: There might be a mistake here.
Context: ...onfig.ts` file, then edit the following lines: diff:typescript import { defineConfig } from './src/main/defineConfig'; export default defineConfig({ // ... // Use your actual domain name here. - bootstrapUrl: 'https://dev-test-bootstrap2.holochain.org/', + bootstrapUrl: 'https://bootstrap.example.org/', - signalUrl: 'wss://dev-test-bootstrap2.holochain.org/', + signalUrl: 'wss://bootstrap.example.org/', iceUrls: ['stun:stun.l.google.com:19302','stun:stun.cloudflare.com:3478'], // ... }); !!! info Hardening your...

(QB_NEW_EN_OTHER)


[grammar] ~178-~178: Use colons correctly
Context: ...re.com:3478'], // ... }); ``` !!! info Hardening your server against unintende...

(QB_NEW_EN_OTHER_ERROR_IDS_30)


[grammar] ~179-~179: There might be a mistake here.
Context: ...cate incoming connections to the server because: * Unauthorized requests to the bootstrap ...

(QB_NEW_EN_OTHER)


[grammar] ~182-~182: Use correct spacing
Context: ...ther hApps to freeload on your server's bandwidth. We plan to discuss [authentication optio...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[style] ~184-~184: Using many exclamation marks might seem excessive (in this case: 30 exclamation marks for a text that’s 6126 characters long)
Context: .../blob/main/spec-auth.md) in the future. !!!

(EN_EXCESSIVE_EXCLAMATION)

🪛 markdownlint-cli2 (0.17.2)
src/pages/resources/howtos/running-network-infrastructure.md

32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


36-36: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


38-38: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


83-83: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


97-97: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


99-99: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


185-185: Files should end with a single newline character

(MD047, single-trailing-newline)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: cog-status-check

@pdaoust pdaoust dismissed veeso’s stale review July 31, 2025 17:05

Addressed in comment above -- not sure why pressnig the 'resolve' button didn't dismiss the review.

@pdaoust pdaoust merged commit 2f04fae into main Jul 31, 2025
7 of 8 checks passed
@pdaoust pdaoust deleted the feat/local-infra-howto branch July 31, 2025 17:10
@coderabbitai coderabbitai bot mentioned this pull request Nov 14, 2025
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.

[Enhancement] Document how to run k2 local infra binary

5 participants