Radish alpha
r
rad:z371PVmDHdjJucejRoRYJcDEvD5pp
Radicle website including documentation and guides
Radicle
Git
Update the information about radicle-httpd
Merged levitte opened 1 year ago

This includes modified and additional information in the Seeder’s guide, as well as in the Download page.

The script at the end of the download page got refactored to support the releases of both radicle itself, as well as radicle-httpd.

2 files changed +180 -35 c54c95d7 98843984
modified _guides/seeder.md
@@ -433,8 +433,9 @@ connections. This will allow inbound connections to your node.
> It's recommended to run a basic firewall to further lock down your server,
> using something like `iptables`, though this is out of scope for this guide.

-
Running the HTTP backend
-
------------------------
+
Running a HTTP backend
+
----------------------
+

In the sections above, we set up `radicle-node`, a background process that
actively and continuously discovers and replicates repositories on the network,
based on your seeding policy. This node allows users to collaborate, host,
@@ -450,6 +451,25 @@ access to the node's storage and database and expose this data via an
HTTP JSON API. For seed nodes, the HTTP Daemon is always configured as a
*read-only* service over the node's state.

+
### Installation
+

+
For a HTTP backend, you will need to install the HTTP Daemon (`radicle-httpd`)
+
separately.
+

+
To install these, head over to the [download][] page's section on `radicle-httpd`
+
and follow the instructions there. You will have to download, verify and
+
extract the binaries and manuals to your preferred location.
+

+
For this guide, we recommend installing Radicle under `/usr/local`, just as for
+
`radicle-node`.  You should then be able to extract the archive you downloaded
+
and verified with:
+

+
    $ tar -xvJf <archive> --strip-components=1 -C /usr/local/
+

+
Finally, login as the `seed` user and proceed with installation:
+

+
    sudo su seed
+

### Configuring your HTTP daemon's system service

As with `radicle-node`, we can start by downloading an example `systemd` unit
modified _pages/download.md
@@ -10,6 +10,8 @@ reproduce the binaries on this page from source.

[rb]: https://reproducible-builds.org/

+
## `radicle` itself
+

<p id="release" class="loading">
  <span class="release-loader"></span>
  <span>
@@ -61,7 +63,7 @@ reproduce the binaries on this page from source.
  </tr>
</table>

-
## Download
+
### Download

You can download the appropriate tarball for your operating system with:

@@ -95,7 +97,7 @@ Replace `$TARGET` with the appropriate target for your system:
  </tr>
</table>

-
## Verification
+
### Verification

Release tarballs are signed using the following SSH public key:

@@ -119,7 +121,123 @@ To verify the checksum, download the `.sha256` file, and run:

The output must correspond to the above.

-
## Installation
+
### Installation
+

+
To install, simply extract the files to a location in your `PATH`, for example:
+

+
    $ tar -xvJf ARCHIVE.tar.xz --strip-components=1 -C ~/.radicle/
+

+
This will place binaries in `~/.radicle/bin` and manuals in `~/.radicle/man`,
+
and overwrite any existing Radicle binaries.
+

+
## `radicle-httpd`
+

+
<p id="httpd-release" class="loading">
+
  <span class="release-loader"></span>
+
  <span>
+
    <h2 id="httpd-release-name">Latest release</h2>
+
    <p id="httpd-release-info"><!-- Dynamic --></p>
+
  </span>
+
</p>
+

+
<noscript>
+
  <p>
+
    Browse the latest release at
+
    <a href="https://files.radicle.xyz/releases/radicle-httpd/latest">https://files.radicle.xyz/releases/radicle-httpd/latest</a>
+
  </p>
+
</noscript>
+

+
<table class="hidden loading" id="httpd-releases">
+
  <thead>
+
    <th scope="col">OS</th>
+
    <th scope="col" class="desktop">Arch</th>
+
    <th scope="col">File</th>
+
    <th scope="col">Signature</th>
+
    <th scope="col">Checksum</th>
+
  </thead>
+
  <tr data-release-arch="x86_64" data-release-binary="unknown-linux-musl">
+
    <th scope="row" rowspan="2">Linux</th>
+
    <td class="release-arch desktop">Loading…</td>
+
    <td>💾 <a class="release-url">Loading…</a></td>
+
    <td><a class="release-sig">Loading…</a></td>
+
    <td><a class="release-checksum">Loading…</a></td>
+
  </tr>
+
  <tr data-release-arch="aarch64" data-release-binary="unknown-linux-musl">
+
    <td class="release-arch desktop">Loading…</td>
+
    <td>💾 <a class="release-url">Loading…</a></td>
+
    <td><a class="release-sig">Loading…</a></td>
+
    <td><a class="release-checksum">Loading…</a></td>
+
  </tr>
+
  <tr data-release-arch="x86_64" data-release-binary="apple-darwin">
+
    <th scope="row" rowspan="2">macOS</th>
+
    <td class="release-arch desktop">Loading…</td>
+
    <td>💾 <a class="release-url">Loading…</a></td>
+
    <td><a class="release-sig">Loading…</a></td>
+
    <td><a class="release-checksum">Loading…</a></td>
+
  </tr>
+
  <tr data-release-arch="aarch64" data-release-binary="apple-darwin">
+
    <td class="release-arch desktop">Loading…</td>
+
    <td>💾 <a class="release-url">Loading…</a></td>
+
    <td><a class="release-sig">Loading…</a></td>
+
    <td><a class="release-checksum">Loading…</a></td>
+
  </tr>
+
</table>
+

+
### Download
+

+
You can download the appropriate tarball for your operating system with:
+

+
    curl -O -L https://files.radicle.xyz/releases/radicle-httpd/latest/radicle-$TARGET.tar.xz
+

+
Replace `$TARGET` with the appropriate target for your system:
+

+
<table>
+
  <thead>
+
    <th scope="col">OS</th>
+
    <th scope="col">Arch</th>
+
    <th scope="col">Target</th>
+
  </thead>
+
  <tr data-release-arch="x86_64" data-release-binary="unknown-linux-musl">
+
    <th scope="row" rowspan="2">Linux</th>
+
    <td>x86_64</td>
+
    <td>x86_64-unknown-linux-musl</td>
+
  </tr>
+
  <tr data-release-arch="aarch64" data-release-binary="unknown-linux-musl">
+
    <td>aarch64 (ARM)</td>
+
    <td>aarch64-unknown-linux-musl</td>
+
  </tr>
+
  <tr data-release-arch="x86_64" data-release-binary="apple-darwin">
+
    <th scope="row" rowspan="2">macOS</th>
+
    <td>x86_64</td>
+
    <td>x86_64-apple-darwin</td>
+
  </tr>
+
  <tr data-release-arch="aarch64" data-release-binary="apple-darwin">
+
    <td>aarch64 (ARM)</td>
+
    <td>aarch64-apple-darwin</td>
+
  </tr>
+
</table>
+

+
### Verification
+

+
Release tarballs are signed using the SSH public key with this fingerprint:
+

+
    SHA256:mqjWN1YrPRDTcVTxB4IZPHyH+vXpjWSogi+3zezZ/rQ
+

+
After you've downloaded the archive (`ARCHIVE.tar.xz` in the examples below),
+
verify the signature using the `.sig` file and `ssh-keygen`. The output must
+
match exactly, including the key fingerprint:
+

+
    $ ssh-keygen -Y check-novalidate -n file -s ARCHIVE.tar.xz.sig < ARCHIVE.tar.xz
+
    Good "file" signature with ED25519 key SHA256:iTDjRHSIaoL8dpHbQ0mv+y0IQqPufGl2hQwk4TbXFlw
+

+
To verify the checksum, download the `.sha256` file, and run:
+

+
    $ sha256sum -c ARCHIVE.tar.xz.sha256
+
    ARCHIVE.tar.xz: OK
+

+
The output must correspond to the above.
+

+
### Installation

To install, simply extract the files to a location in your `PATH`, for example:

@@ -129,36 +247,43 @@ This will place binaries in `~/.radicle/bin` and manuals in `~/.radicle/man`,
and overwrite any existing Radicle binaries.

<script>
-
  const releases = document.getElementById("releases");
-
  releases.classList.remove("hidden");
-

-
  fetch("https://files.radicle.xyz/releases/latest/radicle.json")
-
    .then(res => res.json())
-
    .then(data => {
-
      const version = data.version;
-
      const commit = data.commit;
-
      const release = document.getElementById("release");
-
      const releaseName = document.getElementById("release-name");
-
      const releaseInfo = document.getElementById("release-info");
-

-
      document.querySelectorAll("#releases [data-release-binary]").forEach((row) => {
-
        const arch = row.dataset.releaseArch;
-
        const binary = row.dataset.releaseBinary;
-
        const archive = `radicle-${version}-${arch}-${binary}.tar.xz`;
-
        const url = `https://files.radicle.xyz/releases/latest/${archive}`;
-

-
        row.querySelector(".release-arch").innerText = arch;
-
        row.querySelector(".release-url").innerText = archive;
-
        row.querySelector(".release-sig").innerText = ".sig";
-
        row.querySelector(".release-checksum").innerText = ".sha256";
-

-
        row.querySelector(".release-url").href = url;
-
        row.querySelector(".release-sig").href = `${url}.sig`;
-
        row.querySelector(".release-checksum").href = `${url}.sha256`;
+
  function radrelease (id, base_url, json_file) {
+
    const releases = document.getElementById(id);
+
    releases.classList.remove("hidden");
+

+
    fetch(`${base_url}/${json_file}`)
+
      .then(res => res.json())
+
      .then(data => {
+
        const version = data.version;
+
        const commit = data.commit;
+
        const release = document.getElementById(id);
+
        const releaseName = document.getElementById(`${id}-name`);
+
        const releaseInfo = document.getElementById(`${id}-info`);
+

+
        // it is very important that the releases table has an id
+
        // ending with an added 's' at the end
+
        document.querySelectorAll(`#${id}s [data-release-binary]`).forEach((row) => {
+
          const arch = row.dataset.releaseArch;
+
          const binary = row.dataset.releaseBinary;
+
          const archive = `radicle-${version}-${arch}-${binary}.tar.xz`;
+
          const url = `${base_url}/${archive}`;
+

+
          row.querySelector(".release-arch").innerText = arch;
+
          row.querySelector(".release-url").innerText = archive;
+
          row.querySelector(".release-sig").innerText = ".sig";
+
          row.querySelector(".release-checksum").innerText = ".sha256";
+

+
          row.querySelector(".release-url").href = url;
+
          row.querySelector(".release-sig").href = `${url}.sig`;
+
          row.querySelector(".release-checksum").href = `${url}.sha256`;
+
        });
+

+
        release.classList.remove("loading");
+
        releaseName.innerText = `Radicle ${version}`;
+
        releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toUTCString()}.`;
      });
+
  }

-
      release.classList.remove("loading");
-
      releaseName.innerText = `Radicle ${version}`;
-
      releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toUTCString()}.`;
-
    });
+
  radrelease("release", "https://files.radicle.xyz/releases/latest", "radicle.json");
+
  radrelease("httpd-release", "https://files.radicle.xyz/releases/radicle-httpd/latest", "radicle-httpd.json");
</script>