Introduction
Welcome to the MyHeat Operations Manual.
This book serves as the central documentation for all operations performed inside the MyHeat organization. It is designed to be a comprehensive guide for managing the technical lifecycle of our systems, ensuring operational consistency, and transferring knowledge across the team.
What’s Inside?
In this manual, you will find detailed guides and standard operating procedures (SOPs) covering various DevOps tasks, including:
- Debugging & Incident Response: Step-by-step instructions on how to investigate and troubleshoot when things go wrong. These guides aim to reduce mean time to resolution (MTTR) by clearly outlining diagnostic steps.
- Deployments & CI/CD Pipelines: Detailed workflows on how our code gets shipped. This includes instructions on how to securely and reliably deploy to production using GitHub Actions.
- Routine Maintenance: Regular operational tasks needed to keep MyHeat’s infrastructure healthy and compliant.
- Infrastructure & Domain Management: Quick lookup resources detailing where individual domains are managed, hosting platforms, and key infrastructure configurations.
How to Use This Book
Use the navigation sidebar to jump to specific chapters or use the search functionality to quickly find commands, procedures, or architectural explanations.
Operations are constantly evolving, so this is a living document. We encourage all engineers and DevOps specialists to continuously update and expand these pages as our infrastructure and processes mature!
Domain Management
Welcome to the Domain Management section. This chapter contains all operating procedures related to domain names and their DNS records.
- Domain Registrar and DNS Management: Procedures on handling nameservers at RegisterDomain and modifying DNS Zone records via cPanel.
- Active Domain List: A complete, living reference guide of all active domains registered to MyHeat and exactly where their hosting lives (cPanel vs HestiaCP).
Domain Registrar and DNS Management
This page outlines the standard operating procedures for managing domains at MyHeat.
Domain Registrar
Most of our domains are purchased from and managed at: RegisterDomain.co.za
You can use the RegisterDomain portal for basic domain management tasks, such as:
- Renewing domains
- Updating domain ownership or contact information
- Managing nameservers
DNS Management
Important
You cannot update individual DNS records (A, CNAME, TXT, etc.) directly from the RegisterDomain portal.
For all DNS record modifications, you must use cPanel.
How to update DNS records:
- Log into the respective cPanel account where the domain is hosted.
- Navigate to the Domains section.
- Click on Zone Editor.
- From the Zone Editor, you can manage and update the specific DNS records for your domain.
(Note: For domains hosted on HestiaCP, DNS records will be managed in their respective HestiaCP dashboards unless pointed to external nameservers).
Active Domain List
This section provides a quick lookup list of all domains managed by MyHeat and the corresponding hosting environments where they reside. All our domains are registered through RegisterDomain, but the hosting is split between cPanel and HestiaCP (inside of VPSDime).
cPanel Hosted Domains
-
myheat04.co.za
- accountingwithsirdee.co.za
- adventistdeliverance.co.za
- directlinkconnect.co.za
- infinitystrat.co.za
- tfpglass.co.za
- myheat04.co.za
-
myheat03.co.za
- acr907fm.co.za
- billionafricangroup.co.za
- glocreatives.co.za
- happysoulclinic.co.za
- kfaasa.co.za
- mbanacapital.co.za
- myheat03.co.za
- onemillionmanmarch.co.za
- qumancotrading.co.za
- ruvasfragrance.co.za
- social-tv.ie (Managed via HestiaCP)
- tajibeauty.co.za
- trichardtwound.co.za
-
myheat-v1.co.za
- blackstormprotection.co.za
- bootcamp.swatfoundation.org.za
- doubledz.co.za
- elitesolorsolutions.co.za
- foximanzi.co.za
- growthmethod.co.za
- imageshare.myheat.co.za
- lginteriordesign.co.za
- matumbalaw.co.za
- mbeservicegroupsa.co.za
- medicsandlifestyle.co.za
- monatecrew.co.za
- moshengengineering.co.za
- myheat-v1.co.za
- myheat.africa
- mylittlemunchkins.co.za
- nabupsa.co.za
- noorsa.co.za
- nyangamenempowerment.org.za
- pearlyb.com
- starstyle.co.za
- swatfoundation.org.za
- thepottershand.org.za
- thulazweholdings.co.za
- thuto-thebe.org.za
-
sibamvelomusic.co.za
- 5-1-31package.myheat.co.za
- bulobraids.co.za
- church.myheat.co.za
- cms.myheat.co.za
- dickersonprojects.com
- dmccp.co.za
- elearning.myheat.co.za
- elposculptstudio.co.za
- fiveonethirtyone.myheat.co.za
- futuresolution.co.za
- hbdigi.co.za
- hr.myheat.co.za
- ignition.myheat.co.za
- imageshare.myheat.co.za
- insafe.myheat.co.za
- jobs.myheat.co.za
- joyofhymns.co.za
- kimore.co.za
- lcmedicsandlifestyle.co.za
- mseleprojects.co.za
- myheat-buz.myheat.co.za
- myheat.co.za
- naturalorganicdivine.co.za
- project.myheat.co.za
- sibamvelomusic.co.za
- sino.myheat.co.za
- tendershoots.co.za
- test.myheat.co.za
- tholatell.co.za
- tickify.myheat.co.za
- umsebenzisi.myheat.co.za
HestiaCP Hosted Domains (VPSDime)
- VPSDime / HestiaCP Server
- ancestorhonor.co.za
- archaea-eco.co.za
- billionsviprentals.co.za
- hostmaster.myheat.co.za
- monitoring.internal.myheat.co.za
- myheat.co.za
- myheatdigitalhub.co.za
- myheatignition.co.za
- social-tv.ie
- status.myheat.co.za
Note
Please ensure this list gets updated whenever a new domain is registered, moved, or deleted to keep the operations manual accurate!
Server & Hosting Guides
Welcome to the Server & Hosting section. These guides cover the standard operations to configure, host, and maintain active properties on our servers (primarily our VPSDime HestiaCP instance).
- Adding a New Website: A secure step-by-step onboarding guide to add a new domain into the environment and properly provision Let’s Encrypt SSL certificates.
- Uploading Files to your Website: Explicit instructions delineating when to upload static files to
public_htmlversus keeping backend logic secured inprivate.
Adding a New Website
This runbook outlines the steps to successfully onboard a new website (web domain) into our VPSDime HestiaCP server.
Prerequisites
Before adding the domain inside HestiaCP, ensure you have access to the domain’s DNS manager (e.g., RegisterDomain or cPanel Zone Editor if using custom nameservers).
Step-by-Step Guide
1. Point DNS Records to HestiaCP
First, you need to point the domain to the HestiaCP server before configuring it in the dashboard. Add A records for both your root domain (@) and your www subdomain to point to the server IP:
- IP Address:
63.142.255.253
Tip
Wait a few moments for the DNS changes to propagate before attempting to issue SSL certificates later on.
2. Log in to HestiaCP
Access the MyHeat HestiaCP admin portal by visiting:
https://hostmaster.myheat.co.za/
3. Navigate to the Web Section
From the top navigation bar, click on Web to view all currently active web domains on the server.
4. Add a New Web Domain
Click on the Add Web Domain button (usually represented with a + icon).
5. Bypass the User Warning
You will be prompted with the following warning:
“It is strongly advised to create a standard user account before adding a web domain to the server due to the increased privileges the admin account possesses and potential security risks.”
For our standard operating procedures, you can safely ignore this prompt. Click Continue.
6. Save the Domain
Enter the new domain name into the form field provided and click Save. HestiaCP will configure the initial basic virtual hosts for the domain.
7. Provision SSL Certificates (Let’s Encrypt)
Adding the domain is only the first part; you must explicitly enable security:
- In the Web domains list, click on the domain you just created to edit it.
- Make sure the following options are checked to ensure proper encryption policies are followed:
- Enable SSL for this domain
- Use Let’s Encrypt to obtain SSL certificate
- Enable automatic HTTPS redirection
- Enable HTTP Strict Transport Security (HSTS)
- Click Save again. HestiaCP will now reach out to Let’s Encrypt and provision the SSL certificates for your website.
Uploading Files to your Website
This guide walks you through how to upload your website code or application files to our hosting server.
Step-by-Step Instructions
1. Access the File Manager
Log into the server dashboard at: https://hostmaster.myheat.co.za/.
Once logged in, click on the Folder Icon in the top navigation bar. This opens the File Manager.
2. Navigate to the Web Folder
Inside the File Manager, click on the web folder. This is where all the websites hosted on this server are stored.
3. Select your Domain
Find and click on the folder that matches your domain name (for example, mydemowebsite.co.za).
4. Choose the Right Upload Location
Once inside your domain’s folder, you need to decide where to place your files based on what type of application you are running:
-
Static Websites & Public Assets (
public_html)
If you are uploading plain HTML/CSS/JS, images, or a static frontend site, go into thepublic_htmlfolder and upload your files there. These files will be publicly accessible over the internet. -
Backend Applications (
private)
If you are deploying a backend-based application (such as a Node.js app, a .NET backend, or a Python script), you should go into theprivatefolder to upload your code. Files stored here are securely protected from direct public internet access.
5. Upload your Files
Once you are inside the appropriate directory (public_html or private), click on the Add files button in the File Manager interface to select and upload your code or assets.
Deployments & CI/CD
Welcome to the Deployments module. Whenever possible, MyHeat relies heavily on automated continuous integration and structured deployment pipelines to ship code safely.
- Deploying via GitHub Actions: Instructions covering how to trigger workflows manually from GitHub, view live rolling logs, and troubleshoot common runner errors.
Deploying via GitHub Actions
This runbook outlines the standard procedure for manually triggering automated deployments for MyHeat applications using GitHub Actions.
Supported Repositories
The following projects currently have automated CI/CD deployment pipelines configured:
Step-by-Step Deployment Guide
1. Navigate to the Repository
Go to the specific GitHub repository for the project you want to deploy.
2. Access GitHub Actions
Click on the Actions tab located along the top navigation bar of the repository.
3. Locate the Deployment Workflow
On the left-hand sidebar, you will see a list of available workflows. Look for the specific deployment workflow (this is usually named something like “Deploy” or “Deploy [Project Name]” — for example, “Deploy Ancestor Honor”). Click on it.
4. Trigger the Workflow
On the right side of the workflow page, click on the Run workflow dropdown button:
- Select the Branch: Choose the branch you want to deploy from (usually
main,master, or an environment-specific branch likestaging).
5. Start the Deployment
Click the green Run workflow button. The pipeline will be added to the queue and execute automatically.
Monitoring Progress & Viewing Logs
Once the workflow is triggered, a new run instance will appear in the list.
- Click on the new run to monitor its progress in real time.
- By clicking on the specific job (e.g.,
buildordeploy), you can view a live terminal log of the deployment steps. This is the first place you should look to verify that files are being successfully copied to the server footprint.
Common Gotchas & Troubleshooting
When pipelines fail or behave unexpectedly, check these common issues:
- Missing “Run workflow” Button: If you cannot see the button, it is likely that you do not have sufficient Write/Admin permissions on the repository, or the workflow hasn’t been configured with the
workflow_dispatchtrigger. - Workflow Not Appearing: The workflow YAML must exist in the default branch (usually
main) for the manual trigger to appear on the Actions page. Make sure your.github/workflows/files are pushed and merged to the default branch. - Reviewing Failures (Red X): If a job fails, click into the failed step within the logs. Most deployment errors are related to missing GitHub Secrets, incorrect server credentials, or failing unit tests.
- Cache invalidation: Occasionally, GitHub Actions caches outdated Node modules, Nuget packages, or Composer dependencies. If a build inexplicably fails despite passing locally, clearing the repository’s Actions Cache or using a “re-run all jobs” command with clearing cache usually solves the problem.
Projects Overview
Welcome to the Projects section. These runbooks hold distinct configuration parameters, setup processes, and nuances specific to individual properties running under the MyHeat ecosystem.
- Ancestor Honor: A
.NETbackend application featuring a Chatbot API, securely hosted on HestiaCP. Includes configuration and restart procedures.
Ancestor Honor
Welcome to the Ancestor Honor project documentation. This is a .NET based backend application that relies on both a main application footprint and a dedicated Chatbot API. It is currently hosted securely on the HestiaCP (hostmaster.myheat.co.za) environment under ancestorhonor.co.za.
Because of its specific architecture, we have custom procedures for managing its lifecycle. Below are the operational runbooks available for this project:
- Environment Variables & Configuration: Explains the exact secure
/private/pathways whereappsettings.jsonand.envfiles are stored, and how to safely edit them via the HestiaCP File Manager. - Restarting the Application: Step-by-step instructions on rebooting the background
.NETlisteners by using either GitHub Actions or direct SSHsystemctlcommands.
Managing Environment Variables / Configuration
This runbook details how to safely manage environment variables and application configurations specifically for the Ancestor Honor project.
Configuration Location
Ancestor Honor is hosted on our HestiaCP (hostmaster.myheat.co.za) environment under the domain ancestorhonor.co.za.
Because it is a compiled .NET application containing both a primary App footprint and a Chatbot API, all sensitive configuration files are safely kept out of the public directory.
The configuration variables are located here:
- Main App:
/web/ancestorhonor.co.za/private/app/appsettings.json(or.env) - Chatbot API:
/web/ancestorhonor.co.za/private/chatbot/appsettings.json(or.env)
How to Edit Configurations
- Access the Server via HestiaCP
Log into
https://hostmaster.myheat.co.za/and open the File Manager. - Navigate to the Private Folder
Follow this exact path:
web->ancestorhonor.co.za->private. - Locate the Target File
Open either the
app/folder or thechatbot/folder based on which service you need to update. Look for theappsettings.json,appsettings.Production.json, or.envconfiguration file. - Edit the File Click on the file to edit it using the HestiaCP built-in text editor. Make your desired configuration changes (such as database connection strings, API keys, or JWT secrets).
- Save and Apply Click Save. Note: Because Ancestor Honor runs as a continuously hosted backend application, the process may need to be restarted to successfully load the newly changed configuration variables into memory.
Restarting the Application
If you have recently updated environment variables (like a .env file or appsettings.json) or if the processes have become stuck, the backend .NET processes need to be restarted to load the fresh configurations into memory.
There are two standard ways to restart the Ancestor Honor services.
Method 1: Redeploying via GitHub Actions (Recommended)
The easiest and most foolproof way to safely restart the services—especially if you do not have SSH access to the VPS server—is to re-trigger the automated deployment pipeline. Our CI/CD pipeline is designed to automatically restart the .NET listeners upon completion.
- Go to the project’s GitHub Repository.
- Navigate to the Actions tab.
- Select the
Deployworkflow from the left sidebar. - Click Run workflow and trigger it on the primary branch.
Once the pipeline successfully finishes, both the main application and the Chatbot API will have correctly rebooted.
Method 2: Restarting via SSH (Systemctl)
If you have terminal access to the VPSDime / HestiaCP server, you can use systemd to immediately restart the specific services. This is incredibly fast and the preferred method for sysadmins actively debugging.
- SSH into the server as the root user.
- Execute the restart commands. Ancestor Honor runs as two separate background services. Run the following commands:
# Restart the main Ancestor Honor application
systemctl restart ancestorhonor
# Restart the Chatbot API component
systemctl restart ancestorhonor-chatbot
Tip
If the application isn’t coming back online after a restart, you can check the logs by running
systemctl status ancestorhonorto see if there were any crash errors during the startup sequence!