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
...
- If the module is included in your HostBill edition you can download it from your client portal.
- 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.
- Once you download the module extract it in the main HostBill directory.
- Go to Settings → Modules → Hosting Modules, find and activate UpCloud module.
...
Start by installing fortran & git:
Code Block yum -y install numpy python-devel gcc-gfortran git
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
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}
- Finish by configuring your webserver. Replace :
- {$hostname} - Value of the "Websockify hostname" field set in steps above.
- {$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:
...
- Ensure you're apache have mod_proxy_wstunnel installed (you can check/add this module in WHM→EasyApache)
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}/
- Rebuild httpd config & restart webserver using:
/usr/local/cpanel/scripts/rebuildhttpdconf
/usr/local/cpanel/scripts/restartsrv_httpd - 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}'); - Ensure file above would not be overwritten by autoupdate plugin
Adding UpCloud Product
...
- In HostBill go to Settings → Products & Services, and Add new order page
- From Order Types select "VPS Accounts"
- Enter your orderpage name, select orderpage template. Save Changes
- Add new product in new orderpage. Provide product name, setup price, Save Changes.
- In product configuration section proceed to "Connect with App", select "UpCloud" and App server created in previous steps.
- Setup Package Limits:
...
Note | ||
---|---|---|
| ||
You can optionally use "Allow to select by client during checkout" checkbox. |
For more generic product configuration details including price, automation, emails settings refer to Product Configuration article.
Configuring Client Functions
...