Nigel  Uys

Nigel Uys


Homelab: Modern Self-hosting Framework, Fully Automated

Khue's Homelab

This project utilizes Infrastructure as Code and GitOps to automate provisioning, operating, and updating self-hosted services in my homelab. It can be used as a highly customizable framework to build your own homelab.

What is a homelab?

Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on. For more information about homelab in general, see the r/homelab introduction.


Project status: ALPHA

This project is still in the experimental stage, and I don't use anything critical on it. Expect breaking changes that may require a complete redeployment. A proper upgrade path is planned for the stable release. More information can be found in the roadmap below.



  • 4 Ă— NEC SFF PC-MK26ECZDR (Japanese version of the ThinkCentre M700):
    • CPU: Intel Core i5-6600T @ 2.70GHz
    • RAM: 16GB
    • SSD: 128GB
  • TP-Link TL-SG108 switch:
    • Ports: 8
    • Speed: 1000Mbps


  •  Common applications: Gitea, Seafile, Jellyfin, Paperless...
  •  Automated bare metal provisioning with PXE boot
  •  Automated Kubernetes installation and management
  •  Installing and managing applications using GitOps
  •  Automatic rolling upgrade for OS and Kubernetes
  •  Automatically update apps (with approval)
  •  Modular architecture, easy to add or remove features/components
  •  Automated certificate management
  •  Automatically update DNS records for exposed services
  •  VPN without port forwarding
  •  Expose services to the internet securely with Cloudflare Tunnel
  •  CI/CD platform
  •  Private container registry
  •  Distributed storage
  •  Support multiple environments (dev, prod)
  •  Monitoring and alerting 🚧
  •  Automated offsite backups 🚧
  •  Single sign-on 🚧
  •  Infrastructure testing

Some demo videos and screenshots are shown here. They can't capture all the project's features, but they are sufficient to get a concept of it.

Deploy with a single command (after updating the configuration files)
PXE boot
Homepage with Ingress discovery powered by Hajimari
Monitoring dashboard powered by Grafana
Git server powered by Gitea
Matrix chat server
Continuous integration with Tekton
Continuous deployment with ArgoCD
Cluster management using Lens
Secret management with Vault

Tech stack

AnsibleAutomate bare metal provisioning and configuration
ArgoCDGitOps tool built to deploy applications to Kubernetes
cert-managerCloud native certificate management
CloudflareDNS and Tunnel
DockerEphemeral PXE server and convenient tools container
ExternalDNSSynchronizes exposed Kubernetes Services and Ingresses with DNS providers
Fedora ServerBase OS for Kubernetes nodes
GiteaSelf-hosted Git service
GrafanaOperational dashboards
HelmThe package manager for Kubernetes
K3sLightweight distribution of Kubernetes
KubernetesContainer-orchestration system, the backbone of this project
LokiLog aggregation system
LonghornCloud native distributed block storage for Kubernetes
MetalLBBare metal load-balancer for Kubernetes
NGINXKubernetes Ingress Controller
PrometheusSystems monitoring and alerting toolkit
RenovateAutomatically update dependencies
TektonCloud native solution for building CI/CD systems
TrowPrivate container registry
VaultSecrets and encryption management system
ZeroTierVPN without port forwarding

Get Started


See roadmap and open issues for a list of proposed features and known issues.


Any contributions you make are greatly appreciated.

Please see contributing guide for more information.


Copyright © 2020 - 2022 Khue Doan

Distributed under the GPLv3 License. See license page or file for more information.



Here is a list of the contributors who have helped to improve this project. Big shout-out to them!

If you feel you're missing from this list, feel free to add yourself in a PR.

Stargazers over time

Stargazers over time

Download Details:

Author: Khuedoan
Source Code: 
License: GPL-3.0 license

#ansible #docker #kubernetes #devops #terraform 

What is GEEK

Buddha Community

Homelab: Modern Self-hosting Framework, Fully Automated
Origin Scale

Origin Scale


Automation Management System

Want to try automated inventory management system for small businesses? Originscale automation software automate your data flow across orders, inventory, and purchasing. TRY FOR FREE

#automation #automation software #automated inventory management #automated inventory management system #automation management system #inventory automation

Mikel  Okuneva

Mikel Okuneva


Automation Testing Tips

Thorough testing is crucial to the success of a software product. If your software doesn’t work properly, chances are strong that most people won’t buy or use it…at least not for long. But testing to find defects or bugs is time-consuming, expensive, often repetitive, and subject to human error. Automated testing, in which Quality Assurance teams use software tools to run detailed, repetitive, and data-intensive tests automatically, helps teams improve software quality and make the most of their always-limited testing resources.

Use these top tips to ensure that your software testing is successful and you get the maximum return on investment (ROI):

  1. Decide What Test Cases to Automate
  2. Test Early and Test Often
  3. Select the Right Automated Testing Tool
  4. Divide your Automated Testing Efforts
  5. Create Good, Quality Test Data
  6. Create Automated Tests that are Resistant to Changes in the UI

Decide What Test Cases to Automate

It is impossible to automate all testing, so it is important to determine what test cases should be automated first.

The benefit of automated testing is linked to how many times a given test can be repeated. Tests that are only performed a few times are better left for manual testing. Good test cases for automation are ones that are run frequently and require large amounts of data to perform the same action.

You can get the most benefit out of your automated testing efforts by automating:

  • Repetitive tests that run for multiple builds.
  • Tests that tend to cause human error.
  • Tests that require multiple data sets.
  • Frequently used functionality that introduces high-risk conditions.
  • Tests that are impossible to perform manually.
  • Tests that run on several different hardware or software platforms and configurations.
  • Tests that take a lot of effort and time when manual testing.

Success in test automation requires careful planning and design work. Start out by creating an automation plan. This allows you to identify the initial set of tests to automate and serve as a guide for future tests. First, you should define your goal for automated testing and determine which types of tests to automate. There are a few different types of testing, and each has its place in the testing process. For instance, unit testing is used to test a small part of the intended application. To test a certain piece of the application’s UI, you would use functional or GUI testing.

After determining your goal and which types of tests to automate, you should decide what actions your automated tests will perform. Don’t just create test steps that test various aspects of the application’s behavior at one time. Large, complex automated tests are difficult to edit and debug. It is best to divide your tests into several logical, smaller tests. It makes your test environment more coherent and manageable and allows you to share test code, test data, and processes. You will get more opportunities to update your automated tests just by adding small tests that address new functionality. Test the functionality of your application as you add it, rather than waiting until the whole feature is implemented.

When creating tests, try to keep them small and focused on one objective. For example, separate tests for read-only versus reading/write tests. This allows you to use these individual tests repeatedly without including them in every automated test.

Once you create several simple automated tests, you can group your tests into one, larger automated test. You can organize automated tests by the application’s functional area, major/minor division in the application, common functions, or a base set of test data. If an automated test refers to other tests, you may need to create a test tree, where you can run tests in a specific order.

Test Early and Test Often

To get the most out of your automated testing, testing should be started as early as possible and ran as often as needed. The earlier testers get involved in the life cycle of the project the better, and the more you test, the more bugs you find. Automated unit testing can be implemented on day one and then you can gradually build your automated test suite. Bugs detected early are a lot cheaper to fix than those discovered later in production or deployment.

With the shift left movement, developers and advanced testers are now empowered to build and run tests. Tools allow users to run functional UI tests for web and desktop applications from within their favorite IDEs. With support for Visual Studio and Java IDEs such as IntelliJ and Eclipse, developers never have to leave the comfort of their ecosystem to validate application quality meaning teams can quickly and easily shift left to deliver software faster.

Select the Right Automated Testing Tool

Selecting an automated testing tool is essential for test automation. There are a lot of automated testing tools on the market, and it is important to choose the automated testing tool that best suits your overall requirements.

Consider these key points when selecting an automated testing tool:

  • Support for your platforms and technology. Are you testing .Net, C# or WPF applications and on what operating systems? Are you going to test web applications? Do you need support for mobile application testing? Do you work with Android or iOS, or do you work with both operating systems?
  • Flexibility for testers of all skill levels. Can your QA department write automated test scripts or is there a need for keyword testing?
  • Feature-rich but also easy to create automated tests. Does the automated testing tool support record and playback test creation as well as manual creation of automated tests; does it include features for implementing checkpoints to verify values, databases, or key functionality of your application?
  • Create automated tests that are reusable, maintainable, and resistant to changes in the applications UI. Will my automated tests break if my UI changes?

For detailed information about selecting automated testing tools for automated testing, see Selecting Automated Testing Tools.

Divide Your Automated Testing Efforts

Usually, the creation of different tests is based on QA engineers’ skill levels. It is important to identify the level of experience and skills for each of your team members and divide your automated testing efforts accordingly. For instance, writing automated test scripts requires expert knowledge of scripting languages. Thus, in order to perform these tasks, you should have QA engineers that know the script language provided by the automated testing tool.

Some team members may not be versed in writing automated test scripts. These QA engineers may be better at writing test cases. It is better when an automated testing tool has a way to create automated tests that do not require an in-depth knowledge of scripting languages.

You should also collaborate on your automated testing project with other QA engineers in your department. Testing performed by a team is more effective for finding defects and the right automated testing tool allows you to share your projects with several testers.

Create Good, Quality Test Data

Good test data is extremely useful for data-driven testing. The data that should be entered into input fields during an automated test is usually stored in an external file. This data might be read from a database or any other data source like text or XML files, Excel sheets, and database tables. A good automated testing tool actually understands the contents of the data files and iterates over the contents in the automated test. Using external data makes your automated tests reusable and easier to maintain. To add different testing scenarios, the data files can be easily extended with new data without needing to edit the actual automated test.

Typically, you create test data manually and then save it to the desired data storage. However, you will find tools that provide you with the Data Generator that assists you in creating Table variables and Excel files that store test data. This approach lets you generate data of the desired type (integer numbers, strings, boolean values, and so on) and automatically save this data to the specified variable or file. Using this feature, you decrease the time spent on preparing test data for data-driven tests.

Creating test data for your automated tests is boring, but you should invest time and effort into creating data that is well structured. With good test data available, writing automated tests becomes a lot easier. The earlier you create good-quality data, the easier it is to extend existing automated tests along with the application’s development.

Create Automated Tests That Are Resistant to Changes in the UI

Automated tests created with scripts or keyword tests are dependent on the application under test. The user interface of the application may change between builds, especially in the early stages. These changes may affect the test results, or your automated tests may no longer work with future versions of the application. The problem is automated testing tools use a series of properties to identify and locate an object. Sometimes a testing tool relies on location coordinates to find the object. For instance, if the control caption or its location has changed, the automated test will no longer be able to find the object when it runs and will fail. To run the automated test successfully, you may need to replace old names with new ones in the entire project, before running the test against the new version of the application. However, if you provide unique names for your controls, it makes your automated tests resistant to these UI changes and ensures that your automated tests work without having to make changes to the text itself. This also eliminates the automated testing tool from relying on location coordinates to find the control, which is less stable and breaks easily.

#automation-testing-tool #automation-testing #automation-tips #automation-software #automation

Linux Reseller Hosting

Cloudminister provides services that help clients in improvising their website performance. The company is best known for offering the best Linux Reseller Hosting Plans at an affordable price. The Linux Reseller Hosting Plans, the company offers is the dream of every client which can only be fulfilled by contacting Cloudminister. Various plans are offered which are distributed according to the requirement and the client. The solutions the company provides is unimaginable because it includes Free Full Weekly Backup, SSD Storage, Firewall Security, Free Fully Managed Support, Free Migration, and the list goes on.

Our solutions are featured with

  • FREE Full Daily Backup
  • FREE Let’s Encrypt SSL
  • SSD Storage
  • FREE Softaculous Auto Installer
  • FREE Migration
  • FREE Fully Managed Support
  • 99.99% Uptime Guarantee
  • Firewall Security

#best linux reseller hosting #linux reseller hosting plan #reseller hosting in india #cheap linux reseller hosting #best reseller hosting india #cloud reseller hosting india

Mikel  Okuneva

Mikel Okuneva


How Modern Secure and Self-Hosted Messaging has Become a Cornerstone for Teams Worldwide

The current pandemic has accelerated the way we work together with teams worldwide and across all industries. And for this reason, modern workplace messaging has become a common interface for people and software to collaborate.

For many years, companies of all shapes and sizes have been looking for collaboration platforms. They are aiming to drive innovation while maintaining control and security over their most sensitive data. And here’s where messaging and collaboration platforms give development teams precisely what they need. That’s a workspace that allows them to be more productive while meeting IT and security teams’ control requirements.

Solutions like Mattermost and Plesk Premium Email, powered by Kolab, are excellent examples of this. Read more to find out why.

Introducing the Mattermost Extension

Mattermost is an open source messaging and developer collaboration platform that meets businesses’ trust and security requirements. From piloting spacecraft and ensuring national security to building electric cars and advancing vital infrastructure – enterprises use Mattermost daily to change the world.

Benefits of Working with Mattermost

Benefits of Working with Mattermost - How Modern Secure and Self-Hosted Messaging has Become a Cornerstone for Teams Worldwide - Plesk

A modern enterprise collaboration platform can increase organizational agility by bringing conversations, software, and data together. Mattermost not only makes DevOps collaboration more powerful through integrations with existing tools and systems. It also automates workflow allowing continuous integration and deployment. Let’s run through all its benefits:

  • Privacy, security, and compliance. Mattermost lets you keep full control of your messages, data, and intellectual property. It also runs your vital communications behind your firewall, self-hosted on the cloud of your choice and under your existing security and IT policies. And you can use its auditing tools to meet compliance requirements.
  • Productivity and agility. Mattermost empowers development teams to build workflow, ship software faster, and collaborate confidently.
  • Extensibility. Through integrations with other services and internal systems, it allows increasing ROI on existing software investments.
  • Open Source. As an open source platform, Mattermost ensures that teams are completely free to develop additional features without any restrictions.

Mattermost for Plesk Premium Email – The Perfect Match

Many of the world’s leading high-security enterprises work better with Mattermost by connecting people, tools, and automation across tens of thousands of users. And that’s why Mattermost integrates with Plesk Premium Email, powered by Kolab, acting as a secure chat module for the web client. With this union, teams are not only more connected and productive – they thrive!

Mattermost for Plesk Premium Email - How Modern Secure and Self-Hosted Messaging has Become a Cornerstone for Teams Worldwide - Plesk

Many of the world’s leading high-security enterprises work better with Mattermost by connecting people, tools, and automation across tens of thousands of users. And that’s why Mattermost integrates with Plesk Premium Email, powered by Kolab, acting as a secure chat module for the web client. With this union, teams are not only more connected and productive – they thrive!

Mattermost is supported on Plesk 17.8 or later, installed on the following Linux distributions: CentOS 7, Debian 8 and 9, Red Hat Enterprise Linux 7, and Ubuntu 16.04 and 18.04.

It’s also worth noting that, additionally, Mattermost has some requirements when working with Plesk. The domain must be secured with a valid SSL certificate, and NGINX must be enabled in proxy mode. Also, on CentOS 7 and RHEL 7, it’s required to install Postgres 9.4 on the system that is incompatible with the PostgreSQL component.

Unlock Your Self-Hosted Email’s Full Potential

The Mattermost extension for Plesk Premium Email serves as a secure messaging platform, allowing teams to have more excellent connectivity. And enabling security for your business and teams even when remote.

Plesk’s self-hosted online office brings people, discussions, bots, tools, and files together. This shared workspace lets groups collaborate in real-time throughout the project lifecycle. Also, Mattermost’s self-hosted approach provides modern communication benefits without sacrificing privacy, giving more control to teams. Read more best practices for running a self-hosted email server here.

On top of this, with the Plesk Email Security extension, you can also synchronize email, calendars, contacts, files, and notes on any desktop or mobile device. You can set up auto-responders or allow real-time notifications for emails. Cloud storage, including WebDAV, lets you securely access files from anywhere. And it’s easy to integrate anti-spam filters so that your mailbox stays safe from viruses and spam. Not bad – huh?

#product and technology #collaboration #email security #extensions #mattermost #messaging #plesk premium email #self-hosted email #self-hosted messaging

Best Android Mobile App Development Frameworks

Are you looking for the best Android app development frameworks? Get the best Android app development frameworks that help to build the top-notch Android mobile app.

For more info:
Call: +1-978-309-9910

#best android mobile app development frameworks #top mobile app development frameworks #android app development frameworks #top frameworks for android app development #most popular android app development frameworks #app development frameworks