An Ansible playbook, to deploy and configure a Radicle seed node.
  • Shell 72%
  • Jinja 28%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christoph Görn be54311452
feat: pin repos with an explicit rad seed --scope
- add radicle_pinned_repos_scope (default "all"), passed to
  `rad seed <rid> --scope <scope>` so pinned repos follow every remote
  rather than relying on the CLI default
- pin 13 more RIDs on radicle-seed.b4mad.industries, including
  rad:z4nWKUDi6F7LLLKzGZFjEJM3rEeF
- add the three upstream radicle.xyz nodes as preferred seeds
2026-07-31 11:42:27 +02:00
.beads chore: bd-sync 2026-02-25 11:49:39 +01:00
inventory feat: pin repos with an explicit rad seed --scope 2026-07-31 11:42:27 +02:00
roles/radicle_seed feat: pin repos with an explicit rad seed --scope 2026-07-31 11:42:27 +02:00
.ansible-lint Add Ansible-focused pre-commit configuration and fix linting errors 2026-02-25 10:36:36 +01:00
.gitignore Initial commit: Ansible playbook for Radicle Seed Node 2026-02-25 08:10:22 +01:00
.pre-commit-config.yaml Add Ansible-focused pre-commit configuration and fix linting errors 2026-02-25 10:36:36 +01:00
.yamllint Add Ansible-focused pre-commit configuration and fix linting errors 2026-02-25 10:36:36 +01:00
AGENTS.md Adjust firewall tasks for check mode and clean up file formatting 2026-02-25 11:29:59 +01:00
ansible.cfg Initial commit: Ansible playbook for Radicle Seed Node 2026-02-25 08:10:22 +01:00
LICENSE Initial commit: Ansible playbook for Radicle Seed Node 2026-02-25 08:10:22 +01:00
pin-repos.yaml feat: pin repos with an explicit rad seed --scope 2026-07-31 11:42:27 +02:00
README.md Add Ansible-focused pre-commit configuration and fix linting errors 2026-02-25 10:36:36 +01:00
requirements.yaml Initial commit: Ansible playbook for Radicle Seed Node 2026-02-25 08:10:22 +01:00
site.yaml Initial commit: Ansible playbook for Radicle Seed Node 2026-02-25 08:10:22 +01:00

Radicle Seed Node Ansible Playbook

An Ansible playbook to automate the deployment and management of a Radicle Seed Node.

This playbook handles the installation and configuration of:

  • radicle-node: The core Radicle peer-to-peer daemon.
  • radicle-httpd: The HTTP API server for Radicle.
  • Caddy: A modern, automated HTTPS reverse proxy for radicle-httpd.
  • Systemd services: To manage the lifecycle of both node and HTTPD.
  • Firewall: Automatic configuration of ufw or firewalld.
  • Backup: Securely backs up the node's keypair from the server to your local machine.

Prerequisites

  • Ansible 2.15+ installed on your control machine.
  • A supported Linux distribution on the target node:
    • Debian (11, 12)
    • Ubuntu (22.04, 24.04)
    • Fedora (39, 40, 41)
    • Enterprise Linux (RHEL/Alma/Rocky 9)
  • SSH access to the target node with sudo privileges.

Quick Start

1. Install Requirements

Install the necessary Ansible collections:

ansible-galaxy collection install -r requirements.yaml

2. Configure Inventory

Copy the example inventory and adjust it for your server:

cp inventory/hosts.yaml.example inventory/hosts.yaml

Edit inventory/hosts.yaml to specify your server's IP address and SSH user.

3. Configure Variables

Review the default variables in roles/radicle_seed/defaults/main.yaml. You can override these in your inventory or by creating a file in inventory/host_vars/<your-host>.yaml.

Key variables to consider:

  • radicle_alias: The public name for your seed node.
  • radicle_domain: The domain name used for the HTTPS certificate (Caddy).
  • radicle_httpd_enabled: Set to true (default) to enable the web interface and API.
  • radicle_seeding_policy: "allow" (default) or "block".

4. Run the Playbook

Run the following command to provision your node:

ansible-playbook -i inventory/hosts.yaml site.yaml

Security & Backups

The playbook automatically backs up the node's private key and identity to the secrets/ directory on your local machine. Keep this directory secure and never commit it to version control. The .gitignore in this repository is already configured to ignore the secrets/ folder.

Testing

This project uses Molecule to verify the role on various Linux distributions.

Prerequisites for Testing

  • Podman (preferred) or Docker installed.
  • uv installed to manage Python dependencies.

Running Tests

To run the Molecule tests:

cd roles/radicle_seed
ANSIBLE_ROLES_PATH=$(pwd)/../ uvx --with molecule-plugins[podman] molecule test

The tests cover:

  • Debian (11, 12)
  • Ubuntu (22.04, 24.04)
  • Fedora (40)
  • Rocky Linux (9)

Pre-commit

To ensure code quality, this project uses pre-commit.

To install the pre-commit hooks:

pre-commit install

To run the hooks against all files:

pre-commit run --all-files

License

GPLv3