- Shell 72%
- Jinja 28%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- 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 |
||
| .beads | ||
| inventory | ||
| roles/radicle_seed | ||
| .ansible-lint | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .yamllint | ||
| AGENTS.md | ||
| ansible.cfg | ||
| LICENSE | ||
| pin-repos.yaml | ||
| README.md | ||
| requirements.yaml | ||
| site.yaml | ||
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
ufworfirewalld. - 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
sudoprivileges.
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 totrue(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