How to set up Radicle seed node?

3 months ago

I want to run a Radicle seed node. I'm following this guide: https://radicle.xyz/guides/seeder. But, it has no Git repo or Docker image. It requires running commands like a regular system. How can I run commands in Railway? One idea is ssh, but that needs a service deployed first.

78 Replies

3 months ago

You can deploy an alpine image and ssh into it!


3 months ago

By taking a quick look at the docs you linked, I don't know if deploying a service and SSH'ing into it is the right thing to do, it also looks very complicated.


3 months ago

Then what do you think is the right process? Here is the method for fly.io: https://app.radicle.xyz/nodes/ash.radicle.garden/rad%3Az2kW9FFyC4EB6m6bu1AnmhvLo4sJs


3 months ago

There, it looks like fly can ssh into a console. SSH'ing into an empty service should be a feature.


3 months ago

That looks better but it seems like it uses inbound udp at port 8776, Railway does not support inbound UDP traffic


3 months ago

Would you please search in the previous guide to find out if inbound port is really necessary for this? I don't understand this. Just search by "port".


3 months ago

There is also a template: https://railway.com/deploy/radicle-seed-template. But, I can't inspect its contents so didn't use.


3 months ago

Original guide uses TCP


3 months ago

I couldn't ssh:

Failed to connect: Your application is not running or in a unexpected state

This may happen because the service is serverless (sleeping) and has scaled to zero.
Serverless containers cannot accept SSH connections when idle.

To SSH into this service:
- Send a request to wake the service, then retry
- Or disable 'Sleep when idle' in service settings to keep it running```

3 months ago

It doesn't say sleeping in Dashboard


3 months ago

Are you on the free plan?


3 months ago

Yes



3 months ago

Set your start command as sleep infinity and try again.


3 months ago

Should I deploy alpine or follow the fly.io process?


3 months ago

Did you take a look at this template?

https://railway.com/deploy/radicle-seed-template


3 months ago

Yes


3 months ago

Oh yeah, true I missed that message my bad


3 months ago

Didn't deploy it, bcz author doesn't share the source


3 months ago

Btw free plan doesn't let disable sleep


3 months ago

It doesn't let you diasble serverless



3 months ago

That doesn't look like the source for Radicle


3 months ago

You can check the source code and the Dockerfile to see how this user deploys Radicle and then replicate it on your project


3 months ago

It is very hacky though, those Dockerfiles are all AI generated


3 months ago

Should I follow the fly.io process?


3 months ago

That's confirmed working


3 months ago

You can, you will need to translate that fly.toml file into settings on your Railway service, for example it lists a HTTP proxy on port 80, a TCP/UDP proxy on port 8776 and a volume at /root


3 months ago

Can you help me on that?


3 months ago

Is he using Debian?

# Stage 1: Download and extract pre-built binaries FROM debian:bookworm-slim AS fetcher RUN apt-get update && apt-get install -y --no-install-recommends curl xz-utils ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /tmp RUN curl -sSfL -o radicle.tar.xz https://files.radicle.xyz/releases/latest/radicle-x86_64-unknown-linux-musl.tar.xz \ && tar -xJf radicle.tar.xz --strip-components=1 \ && curl -sSfL -o radicle-httpd.tar.xz https://files.radicle.xyz/releases/radicle-httpd/latest/radicle-httpd-x86_64-unknown-linux-musl.tar.xz \ && tar -xJf radicle-httpd.tar.xz --strip-components=1


3 months ago

I have ssh'ed into the Alpine image


3 months ago

Should I use Debian instead?


3 months ago

yes FROM debian:bookworm-slim


3 months ago

Let's try fly? Will docker charge less credits than the original process?


3 months ago

I previously tried Gitea and got an Ubuntu system, here in Alpine it's confusing


3 months ago

Alpine was my suggestion, you can use debian


3 months ago

Fine. But, which would be better for this process? Debian/Alpine or copying that fy.io config?


3 months ago

Just copy that fly.io tutorial config


3 months ago

I need help on this


3 months ago

Will you?


3 months ago

I was taking a look at the repo and I don't think you can reliably host a Radicle node on Railway since it requires UDP.


3 months ago

I'm doing with Debian anyways


3 months ago

If I redeploy, will I lose all my data?


3 months ago

It can use TCP


3 months ago

If it doesn't has a volume mounted, then yes.


3 months ago

The volume is mounted to /data, so will I lose stuffs everywhere else?


3 months ago

yes


3 months ago

That means install and set up Radicle again? Any way to keep data?


3 months ago

The template I've linked earlier has a volume mounted at /home/radicle


3 months ago

How to wake this Debian service from sleep?


3 months ago

By sending a request to it


3 months ago

Yes, ofc, but how? I don't even know which port it listens to for attaching domain.


3 months ago

It doesn't matter the port, just by visiting the domain when the service is asleep it starts the container back again


3 months ago

WHich port to use here?

image.png

Attachments


3 months ago

the fly.toml guide lists a HTTP proxy at port 80


3 months ago

I deployed Debian docker image, didn't expose any port


3 months ago

I have finished until systemd setup from the official guide. How to set a system service to autostart in this Debian container? Systemd says:

System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to system scope bus via local transport: Host is down


3 months ago

I'm trying to add support for HTTPS with Caddy: https://radicle.xyz/guides/seeder#adding-support-for-https

But I keep getting errors:


3 months ago

2026/03/04 06:22:33.693 ERROR http.acme_client challenge failed {"identifier": "khalid-seed.up.railway.app", "challenge_type": "tls-alpn-01", "status_code": 400, "problem_type": "urn:ietf:params:acme:error:tls", "error": "151.101.2.15: remote error: tls: no application protocol"} 2026/03/04 06:22:33.693 ERROR http.acme_client validating authorization {"identifier": "khalid-seed.up.railway.app", "error": "authorization failed: HTTP 400 urn:ietf:params:acme:error:tls - 151.101.2.15: remote error: tls: no application protocol", "order": "https://acme-v02.api.letsencrypt.org/acme/order/3114580002/486802673142", "attempt": 1, "max_attempts": 3}


3 months ago

2026/03/04 06:22:34.968 ERROR tls.obtain could not get certificate from issuer {"identifier": "khalid-seed.up.railway.app", "issuer": "acme-v02.api.letsencrypt.org-directory", "error": "HTTP 429 urn:ietf:params:acme:error:rateLimited - too many failed authorizations (5) for \"khalid-seed.up.railway.app\" in the last 1h0m0s, retry after 2026-03-04 06:28:37 UTC: see https://letsencrypt.org/docs/rate-limits/#authorization-failures-per-identifier-per-account"} 2026/03/04 06:22:34.968 WARN http missing email address for ZeroSSL; it is strongly recommended to set one for next time 2026/03/04 06:22:35.222 ERROR tls.obtain could not get certificate from issuer {"identifier": "khalid-seed.up.railway.app", "issuer": "acme.zerossl.com-v2-DV90", "error": "account pre-registration callback: failed getting EAB credentials: HTTP 422: caddy_legacy_user_removed (code 2977)"} 2026/03/04 06:22:35.222 ERROR tls.obtain will retry {"error": "[khalid-seed.up.railway.app] Obtain: account pre-registration callback: failed getting EAB credentials: HTTP 422: caddy_legacy_user_removed (code 2977)", "attempt": 1, "retrying_in": 60, "elapsed": 3.661088367, "max_duration": 2592000}


3 months ago

Btw, I tried to make a new bounty for this issue initially, as this is a critical issue. But, I keep getting error asking me to try again.


3 months ago

I can't open any bounty at all


3 months ago

@Medim Thanks for helping me so far. Can you help me with the Systemd and Caddy issues so that I can complete this setup?


3 months ago

@Medim Thanks for helping me so far. Can you help me with the Systemd and Caddy issues so that I can complete this setup?


3 months ago

By reading this guide, the Caddy service is optional and can be separated, not on the same container as your radicle service, you would just point the reverse_proxy to your radicle service


3 months ago

Is your radicle service working even if it's without https? (just so I can situate myself in what step of the guide we are currently)


3 months ago

Yes, the node is working. Do I need systemd? How can I set them to keep running in background and autostart? The systemd parts of the guide and the caddy part at the end are what I need now


3 months ago

Yes, the node is working. Do I need systemd? How can I set them to keep running in background and autostart? The systemd parts of the guide and the caddy part at the end are what I need now


2 months ago

@Kemix


2 months ago

@Medim


2 months ago

There's no need for systemd


2 months ago

You also don't need Caddy, you just expose radicle-httpd service on port 8080 (only if you're using it, according to the guide it is optional)


2 months ago

The only thing you need is the radicle-node service, radicle-httpd is optional


2 months ago

Yes, but I want to run the http service. Without Caddy, how do I expose the API under the Railway provided domain?


2 months ago

And, how do I run background services without Systemd?


2 months ago

Your node is already running, systemd is for proccess management (restart etc)


2 months ago

systemd is needed if you’re running on a VPS - you’re not, Railway handles that.


2 months ago

That's also necessary. Else, I'd have to start the processes each time I restart. Also, the radicle-httpd command to start it never exits. How do I run it in background?


Welcome!

Sign in to your Railway account to join the conversation.

Loading...