The Boole App

Boole App is used to create and manage CloudCIX compute resources. This guide creates a project with a router, firewall, geofilter and LXD instance, then shows how to create a snapshot and a backup.

Before you start

Before starting, make sure you have:

  • Permission to use Boole.

  • A region in which to build the project.

  • An SSH key and a public IPv4 address if you will connect to an LXD instance.

Open Boole

From the CloudCIX app menu, open Boole. Its left menu is organised into three areas: Setup creates resources, Manage changes existing resources, and View displays project information.

Boole dashboard and main navigation

Create a project

  1. Open Boole. In the left menu, expand Setup and select Projects.

    Boole Setup menu with Projects highlighted
  2. Select Create.

    Projects list with the Create button highlighted
  3. Enter a project Name, select a Region, and optionally add a note.

    First step of the Boole project setup wizard
  4. Select Save, then Next.

Add a router

Every project needs a router and at least one network. Boole creates a private network by default. Keep its IPv4 range unless it conflicts with a network you already use. Select Add Network only when the project needs another network, then select Save and Next.

Router step showing the default private network

Additional networks

Select Add Network when the project requires a separate subnet, for example to isolate application and database instances. Give it a clear name and use a non-overlapping IPv4 CIDR range. Select Save before moving to the next wizard step.

Router step with an additional private network

Create the firewall and geofilter

The wizard creates a firewall and a geofilter named after the project.

  • Firewall: controls traffic to and from resources using the source, destination, protocol and port.

  • Geofilter: adds location-based control, allowing or blocking traffic by country or IP group.

Select Create beside each one. Do not skip this step if the instance will be accessible from the internet.

Firewall and geofilter step of the Boole project setup wizard

To allow access from your current location:

  1. Find the public IPv4 address of the computer you are using: expand View and select Who Am I.

    Boole Who Am I page showing the current public IP address
  2. In the firewall, add an inbound Allow rule with that address as the source, the LXD instance private address as the destination, TCP as the protocol, and port 22 for SSH. Add only the ports required by the workload.

    Firewall rule allowing SSH from a specified public IP address
  3. In the geofilter, retain the appropriate country/IP-group rules for the locations that should be allowed. See the RIR IP address data repository for more information.

    Geofilter rules page

Add an SSH key

On the SSH Keys step, select Add SSH Key. You may paste an existing public key or generate one in Boole. Give the key a recognisable name. If Boole generates a private key, download or copy it immediately and store it securely: it is displayed only once. Select Next when the key is listed.

Empty SSH Keys step with the Add SSH Key button

To find your public key, run the following command on your computer:

cat ~/.ssh/id_rsa.pub
SSH key step with the one-time private-key download warning

Create an LXD instance

  1. On the Compute step, select Create LXD.

  2. On Metadata, give the instance a name, select the SSH key, and configure login user data if required. An SSH key is preferred to a password.

    LXD instance metadata form
  3. On Specs, select the image and set the vCPU, RAM and storage quantities.

    LXD instance specifications form
  4. On Interfaces, add an interface, select the private address, and enable NAT when the instance needs a public address.

    LXD instance network interface with NAT enabled
  5. Optionally, on Metadata, choose Advanced under User Data and supply cloud-init YAML to configure the instance at first boot.

  6. Select Save, wait for the instance to appear in the LXD list, then select Next to finish the wizard.

User data

Choose the mode that suits the setup:

  • Simple: define the login username and password hash.

  • Advanced: optionally provide cloud-init YAML, applied when the instance first starts. Use it to create users, install packages, add SSH keys or run first-boot commands.

Do not put a plaintext password into cloud-init. For more detail, see Using userdata in CloudCIX Compute Instances.

For example, this creates a user and installs curl:

#cloud-config
users:
  - name: administrator
    groups: sudo
    shell: /bin/bash
packages:
  - curl
Advanced cloud-init user-data editor for an LXD instance

Wait for provisioning

New instances first appear with the Requested state. Refresh the LXD list until provisioning has completed and the instance is running. Record the public address when NAT is enabled.

LXD instance listed with a requested state and IP addresses

Optional resources

After the compute step, Boole offers secondary storage and site-to-site VPN. Select Add Storage or Add VPN only when the project needs them; otherwise select Skip to complete setup. These resources can also be managed later.

Optional storage and VPN choices at the end of the project wizard

View the project

Note

After selecting Finish, wait a few seconds for the project overview to load.

The overview provides a cost estimate and independently expandable sections for compute instances, backups, snapshots, storage, routers, firewall and VPNs. Expand Compute Instances to check the LXD state, allocated resources and network addresses.

Boole project overview showing its available sections Boole project overview with the Compute Instances section expanded

Connect to the LXD instance

When the instance is running, NAT is enabled and the firewall allows TCP port 22 from your public IP, connect with the username set in the instance metadata and its public IP address. Specify the saved key file when required:

ssh -i /path/to/private-key administrator@PUBLIC_IP
SSH command entered in a terminal

Create and connect to a Hyper-V VM

Use a Hyper-V VM for Windows workloads. The project router, firewall and geofilter created earlier are reused.

Allow Remote Desktop access

Before creating the VM, open Manage / Networks / Firewalls, select the project and edit its firewall. Add an inbound Allow rule with your current public IP as the source, the VM private address as the destination, TCP as the protocol, and port 3389 for Remote Desktop. Restrict the source to trusted addresses.

Project firewall list with Edit controls Firewall rule allowing Remote Desktop to a Hyper-V VM

Create the VM

  1. From Boole’s Manage / Compute / Instances, select Create VM Hyper-V.

    Compute step with the Create VM HyperV button
  2. On Metadata, enter a descriptive name, review the DNS servers, and enter the email address that should receive the build credentials.

    Hyper-V VM metadata form
  3. On Specs, select the Windows image, vCPU, RAM and storage required.

    Hyper-V VM specifications form
  4. On Interfaces, add an interface, select its private IPv4 address, and enable NAT to assign a public address.

    Hyper-V VM network interface with NAT enabled
  5. Select Save and wait for the build-complete email before connecting.

    Hyper-V build-complete email containing sign-in credentials

The build-complete email supplies the administrator username and initial password. Keep this information confidential and change the password after the first login.

Connect with Windows App

  1. On macOS, open Windows App and select Devices. Select the + button, then Add PC.

    Windows App Add menu with Add PC selected
  2. Enter the VM public IP address as PC name, choose Ask when required, and give the connection a friendly name. Select Add.

    Windows App Add PC form for a Hyper-V VM
  3. Open the saved PC and enter the credentials from the build-complete email.

    Saved Hyper-V VM connection in Windows App

Connect with Remmina on Linux

Important

Before connecting, make sure the VM has a public IP address through NAT and that its firewall allows inbound TCP port 3389.

  1. Install and open Remmina.

    Remmina in Ubuntu App Center
  2. Select the + button to create a new connection profile.

    Remmina main screen with the button to add a connection profile
  3. Set the protocol to RDP. Enter a name for the connection, the VM public IP address as Server, and administrator with the password from the build-complete email.

    Remmina RDP connection profile showing the server and sign-in fields
  4. Leave the display and network settings at their defaults unless you have a specific requirement.

    Remmina display and network settings
  5. In the Advanced tab, keep the default security negotiation settings unless your organisation requires different settings. Select Save and Connect.

    Remmina advanced security settings

Create a snapshot

A snapshot is a quick point-in-time checkpoint for an LXD instance. Create one before a risky change; it remains with the instance and is not a replacement for a backup.

  1. Expand Manage, then Compute, and select Snapshots.

    Manage menu with Snapshots highlighted
  2. Select Manage beside the project.

    Snapshots project list with the Manage button highlighted
  3. Under Snapshot LXD, select Create Snapshot LXD.

    Snapshot LXD page with the Create Snapshot LXD button highlighted
  4. Enter a meaningful name, choose the LXD instance, and select Save.

    Create Snapshot LXD form

When the snapshot is ready, it is listed against the instance with a Running state and its creation timestamp. Use Revert only when you intend to discard later changes.

Ready LXD snapshot showing its Running state and creation timestamp

Create a backup

A backup is a separate copy of the instance for recovery from data loss or infrastructure failure. It takes longer to create than a snapshot.

  1. Expand Manage, then Compute, and select Backups.

  2. Select Manage beside the project, then Create Backup LXD.

  3. Enter a descriptive name, select the LXD instance, and select Save.

    Create Backup LXD form

The backup appears in the project’s Backups section after processing has completed.