Selium Cloud

Selium Cloud (Beta) consists of a managed Selium Server, authentication, certificate management, dashboard and technical support. If you want a hands-free, production-ready solution for all of your software comms, backed by the people that made Selium, this is for you.

Getting Started

1. Sign up

To get started with Selium Cloud, you'll need an account! Selium Cloud is free for life, and super affordable as you grow with us.

2. Create your first certificate

Once you've got your account, login to the Selium Cloud dashboard at cloud.selium.io. From here, you can create TLS certificates for each client on your account.

After logging in, you should see a screen like this:

Dashboard

To create a certificate, fill in a name for your client, e.g. "web1.example.com", then click the submit button. After a moment you should see a dialog box like this:

Add client

Make sure you download the private key as you cannot download it again!

Add the public and private keys to your project and you're ready to start using Selium.

Basic Usage

Selium Cloud's API feels just like running your own Selium server. The main difference is when establishing a connection to the server. Instead of using selium::custom() to connect to your own server, use selium::cloud() to connect to the cloud:

#![allow(unused)]
fn main() {
let connection = selium::cloud()
    .with_cert_and_key(
        "./web1.example.com.der",
        "./web1.example.com.key.der",
    )?
    .connect()
    .await?;
}

Note that when using selium::cloud(), you won't need to specify a CA path or endpoint. These details are baked into the Selium client for your convenience.

Namespaces

Each Selium Cloud account is linked to a unique namespace. This is used to distinguish your data from other accounts, and is linked to every certificate you create. You can find your namespace on the Selium Cloud dashboard:

Namespace

To use your namespace, simply prepend it to every topic name. For example, to publish the topic "retail-transactions", you would code the following:

#![allow(unused)]
fn main() {
let mut publisher = connection
    .publisher("/example/retail-transactions")
    ...
    .await?;
}

IMPORTANT NOTE!

You must compile your code with the --release flag for both testing and production use. This is so the Selium client knows to use the production Certificate Authority!

If you don't do this, you will not be able to connect to Selium.

N.B. We know this isn't ideal, and likely we'll be removing this restriction in future versions. We'd love your feedback on this too!