Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

...

UpCloud is a reliable cloud platform that enables you to deploy high performance cloud servers quickly and easily. Thanks to UpCloud integration with HostBill you can sell VPS Hosting by reselling UpCloud instances. With HostBill various billing models and flexible product configuration options you can charge your customers for OS templates, locations or VM plans. The whole account lifecycle is automated by HostBill. Clients are able to control and manage their resources from the client area. The access to client area functions is controled by the admin. Client can create, restart, start and stop their virtual machines, inject SSH keys, manage virtual machine’s firewall and access noVNC console. Admin area provides access and allows to manage billing details and account lifecycle.

Activating the module

...

  1. If the module is included in your HostBill edition you can download it from your client portal.
  2. If the module is not included in your HostBill edition you can purchase it from our marketplace and then download it from the client area.
  3. Once you download the module extract it in the main HostBill directory.
  4. Go to Settings → Modules → Hosting Modules, find and activate UpCloud module.

...

  1. Start by installing fortran & git:

    Code Block
    yum  -y install numpy python-devel gcc-gfortran git


  2. Create new system user, clone websockify and grant permissions.

    • Replace {$path} with the value set in the "Path to put websockify tokens" in HostBill connection details. In this sample we've used:  /home/websockify/target.conf.d)

      Code Block
      adduser websockify
      cd /home/websockify
      git clone https://github.com/novnc/websockify.git
      cd /home/websockify/websockify
      python setup.py install --force
      mkdir {$path}
      chmod 0777 {$path}
      chown -R websockify: /home/websockify


  3. Create cronjob as websockify user (crontab -e -u websockify), with following line replacing variables:

    Code Block
    */5 * * * * /home/websockify/websockify/run {$console_port} --token-plugin TokenFile --token-source {$path}


    • {$path} - Value of the "Path to put websockify tokens in" field. Ensure to make it writeable to world (chmod 777)
    • {$console_port} - Port on which the console will connect. Port used internally in the webserver (ie apache) configuration, should be different than  {$port}
  4. Finish by configuring your webserver. Replace :
    1. {$hostname} - Value of the "Websockify hostname" field set in steps above.
    2. {$port} - Value of the "Websockify local port" field


Webserver configuration: Nginx (default HostBill webserver for Enterprise installations).

...

Create file:

...

/etc/nginx/conf.d/websockify.conf
with contents:

Code Block
 upstream websocket {
        server 127.0.0.1:{$console_port};
    }
server {

    listen {$port} ssl;
    server_name {$hostname};
    server_tokens off;

    charset                     utf-8;
    sendfile                    on;
    tcp_nopush                  on;
    tcp_nodelay                 off;
    reset_timedout_connection   on;


    include /etc/nginx/ssl.conf;

 	location / {
        proxy_http_version 1.1;
        proxy_pass http://websocket;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";


        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-NginX-Proxy true;

        proxy_buffers 8 32k;
        proxy_buffer_size 64k;

        proxy_redirect off;
        proxy_read_timeout 61s;

    }
    ssl_certificate /etc/letsencrypt/live/{$hostname}/fullchain.pem; # replace with path to actual certificate your installation is using
    ssl_certificate_key /etc/letsencrypt/live/{$hostname}/privkey.pem; # replace with path to actual certificate key your installation is using
}

Ensure to restart nginx afterwards (systemctl restart nginx)

Basic Apache (using default cert):

...

In your apache configuration file:

Code Block
<VirtualHost *:{$port}>
ServerName {$hostname}

ProxyPass / ws://127.0.0.1:{$console_port}/
ProxyPassReverse / ws://127.0.0.1:{$console_port}/

SSLEngine on

</VirtualHost>


Restart/reload webserver


cPanel/WHM server:

...

  1. Ensure you're apache have mod_proxy_wstunnel installed (you can check/add this module in WHM→EasyApache) 
  2. Create custom apache file (replace username and hostbill.domain with your actual username/domain) /etc/apache2/conf.d/userdata/ssl/2_4/username/hostbill.domain/custom.conf:

    Code Block
    ProxyPass /wss ws://127.0.0.1:{$console.port}/
    ProxyPassReverse /wss ws://127.0.0.1:{$console.port}/


  3. Rebuild httpd config & restart webserver using:
    /usr/local/cpanel/scripts/rebuildhttpdconf
    /usr/local/cpanel/scripts/restartsrv_httpd
  4. Edit HostBill file: includes/modules/Hosting/upcloud/user/console.tpl
    Replace line:
    path = WebUtil.getQueryVar('path', '?token={/literal}{$console.token}{literal}');
    with:
    path = WebUtil.getQueryVar('path', 'wss?token={/literal}{$console.token}{literal}');
  5. Ensure file above would not be overwritten by autoupdate plugin

Adding UpCloud Product

...

  1. In HostBill go to Settings → Products & Services, and Add new order page
  2. From Order Types select "VPS Accounts"
  3. Enter your orderpage name, select orderpage template. Save Changes
  4. Add new product in new orderpage. Provide product name, setup price, Save Changes.
  5. In product configuration section proceed to "Connect with App", select "UpCloud" and App server created in previous steps.
  6. Setup Package Limits:

...

Note
titleNote:

You can optionally use "Allow to select by client during checkout" checkbox.
This will automatically add new form items under Components → Forms allowing your client to configure server location, size or os template during order.
You can apply additional charges to those items.

For more generic product configuration details including price, automation, emails settings refer to Product Configuration article.

Configuring Client Functions   

...