# Deploy Radicle on a box ## Components - radicle-node - radicle-httpd - rad - caddy (reverse proxy) ## Run seed node - install radicle (sh <(curl -sSf https://radicle.xyz/install)) - rad auth (obtain radicle keypair) - set environment variables `RAD_HOME`, `RAD_PASSPHRASE` - run `rad node start` (there is systemd unit for it) ## Run additional services (required for web client, etc.) - run `radicle-httpd` - install caddy - update config -> ssl 443 -> 8080 - **we don't support http for remote seed nodes** **Start following a user** - `rad follow <nid> [--alias <name>]` **Stop following a user** - `rad unfollow <nid>` - (cloudhead: how to define policy for followed nodes) **Start seeding a project** - `rad seed <rid> --scope <all | followed>` **Stop seeding a project** - `rad seed <rid> --scope <all | followed> --delete` **Visit your node** `https://app.radicle.xyz/nodes/<your radicle node>` **Update your nodes config** *Example snippet seed.radicle.xyz* ```json { "externalAddresses": [ "seed.radicle.xyz:8776" ], "policy": "block", "scope": "followed" } ``` *Example snippet radicle.garden* ```json { "externalAddresses": [ "radicle.garden:8776" ], "policy": "allow", "scope": "all" } ``` policy: block + scope: followed = you have to define every project and every remote (delegates come included). policy: allow + scope: followed = you get all the projects and need to define the remotes (delegates come included). policy: block + scope: all = you get only the projects you seed but all the remotes. policy: allow + scope: all = you get everything example radicle.garden ## Update a seed node - stop `radicle-node` `radicle-httpd` - (sh <(curl -sSf https://radicle.xyz/install)) - start `radicle-node` `radicle-httpd` **the docker way** - `docker-compose up -d --build` ## References - [docker-compose](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/tree/docker-compose.yml) - [awesome-radicle launchers](https://app.radicle.xyz/nodes/seed.rhizoma.dev/rad:z3yQUb9HDAC7TQrUDGkQsXDsYFj9G#launchers)