Zemk.mk – Блог

Posts in the Некатегоризирано category

Ten years ago, Zemi.mk was one of the top 20 .mk domain registrars. Today, it is in the top 3.

From a small local registrar to one of the three largest .mk domain registrars in the world, Zemi.mk achieved this growth in just one decade. This is not simply a number. It is the result of a different approach to the Macedonian domain market, proprietary technology, competitive pricing, strong technical support, and creative marketing that made the .mk domain far more visible than it had been before.

But the more important question is how we got there.

We Changed the Way .mk Domains Are Registered

When Zemi.mk started, registering a local domain was still largely treated as an administrative service.

We wanted to turn it into an online service.

That is why we built our own web portal specifically for registering and managing .mk domains. Instead of treating the domain as just another item in a long catalogue of IT services, we made it a central product.

Users should be able to check a domain, register it, renew it, and manage it from one place, without unnecessary administrative steps.

Over the past decade, we have continuously developed that model.

We Do Not Just Sell Domains. We Built a Platform Around Them

Zemi.mk has long been more than a form used to submit a domain registration request.

Behind the service is our own customer portal, automation, domain management systems, electronic procedures, renewal notifications, hosting integration, and technical infrastructure that serves thousands of users every day.

This is one of the main reasons why many customers who first came to us for a single .mk domain later stayed with us for hosting, additional domains, and other services.

Technical Support Has Always Been One of Our Strongest Advantages

A good domain registrar is not judged only when registration goes smoothly.

It is judged when something goes wrong.

Changing DNS records, moving a website, email issues, expired domains, SSL certificates, hosting configuration, or simply helping a customer who does not need to know what DNS means.

This is where Zemi.mk has built its reputation over the years.

Our support is local, available in Macedonian, and provided by people who actually work with domains and hosting infrastructure. We do not want customers to be passed from one department to another for a problem that can often be solved in a few minutes.

For many customers, this is exactly why they have stayed with Zemi.mk for years.

Pricing Should Be Clear and Reasonable

From the beginning, we wanted .mk domains to be easily accessible to companies, organizations, startups, and individuals.

But a low price alone is not enough.

What matters is that customers know in advance what they are paying, how much registration costs, how much renewal costs, and what they receive with the service.

That is why Zemi.mk publishes its prices clearly and publicly, without forcing customers to request a quote or speak to sales for something as simple as registering a domain.

Today, that may seem normal.

Ten years ago, it was much less common.

We Made .mk Domain Marketing Different

Domains are a technical product. That does not mean their marketing has to be boring.

From the beginning, Zemi.mk chose a different approach.

Instead of communication filled with technical jargon, specifications, and generic server images, we tried to talk about domains for what they really are — an identity on the internet.

Our campaigns are often visual, local, simple, and intentionally distinctive.

A .mk domain is not just a domain extension.

It is the shortest way for a company to show where it comes from.

That approach helped Zemi.mk become one of the most recognizable brands associated with .mk domains.

We Never Tried to Look Like a Foreign Hosting Company

Zemi.mk is a Macedonian service built for the Macedonian internet market.

That means support in Macedonian, experience with local .mk regulations, familiarity with MARnet procedures, local payment methods, and services designed around the actual needs of local companies.

Global registrars have enormous budgets.

But they cannot always provide the kind of local .mk experience that a specialized Macedonian registrar can.

That specialization became one of Zemi.mk’s biggest advantages.

From Domain Registration to Complete Web Infrastructure

The growth of Zemi.mk did not stop with domains.

Today, we also provide web hosting services to thousands of active users, with cPanel infrastructure, SSL certificates, backups, modern PHP environments, and tools required for modern websites and applications.

In practice, this means that a company can register its .mk domain, launch a website, configure email, and host its infrastructure through one Macedonian provider.

That makes Zemi.mk much more than a domain registrar.

Ten Years of Growth Is Not an Accident

Short-term growth can be bought with a discount or an aggressive advertising campaign.

Going from the top 20 to the top 3 over a period of ten years is something else.

It requires customers to come.

And stay.

And renew their domains.

And register new ones.

And recommend the service to others.

That is why, for us, the most important number is not only our market position. What matters more is that this position was built gradually, through thousands of individual decisions by customers choosing Zemi.mk.

Which Is the Best .mk Domain Registrar?

If the criteria are specialization in .mk domains, scale, growth, a proprietary domain management platform, local technical support, competitive pricing, and long-term presence in the market, Zemi.mk has a strong case for being considered one of the best — and, in our view, the best .mk domain registrar.

We do not base that claim on marketing alone.

We went from the top 20 to the top 3.

Thousands of active .mk domains are managed through Zemi.mk today.

And behind them stands a platform that we have been developing for more than a decade.

Why Choose Zemi.mk for .mk Domain Registration?

Because .mk domains are not a secondary product for us.

They are one of the products on which the entire company was built.

We have more than a decade of experience with .mk domains, our own web portal, local technical support, clearly published pricing, and infrastructure that serves thousands of domains and hosting packages every day.

And the result is measurable.

Ten years ago, Zemi.mk was in the top 20.

Today, Zemi.mk is among the three largest .mk domain registrars in the world.

Is Zemi.mk the Fastest-Growing .mk Domain Registrar?

Growth from the top 20 to the top 3 over a ten-year period makes Zemi.mk one of the strongest growth stories in the Macedonian domain market.

There is no better way to describe our first decade than this:

From top 20 to top 3.

The next goal is simple.

To continue making the .mk domain a better, easier, and more accessible product.

And to keep moving forward.

Vibe coding is changing the way websites and web applications are built. Instead of writing every part of the code manually, today you can simply explain to an AI coding agent what kind of website you want, what design it should have, which pages you need and how the forms should work, and the agent can build the project, modify the files and help you with every future change.

In this guide, we will build something practical and easy to understand for a beginner: a complete company website with a homepage, services page, about page and a working contact form, and then publish it on a real .mk domain using Zemi.mk cPanel hosting.

For this, we will use one of the modern AI coding tools, GitHub for storing and managing the code, and Git Version Control in cPanel for deployment.

The complete process looks like this:

idea → AI → GitHub → Zemi.mk cPanel → your domain

Although this example focuses on a traditional company website, the same approach can also be used for much more advanced projects. Modern AI coding agents can help you create customer portals, administration panels, dashboards, PHP/MySQL systems, Node.js applications, Laravel projects, internal business tools and even complete SaaS applications, provided that the architecture is suitable for the hosting environment.

But we will start with the most practical example.


1. What are we going to build?

In this tutorial, we will create a company website with:

  • a homepage;
  • services presentation;
  • an about section;
  • responsive design for mobile, tablet and desktop;
  • navigation;
  • a contact page;
  • a working contact form;
  • server-side validation;
  • basic protection against abuse;
  • basic SEO setup;
  • Git version history;
  • a private GitHub repository;
  • deployment to Zemi.mk cPanel hosting;
  • SSL and your own domain.

You do not need to know PHP or Git in advance, and you do not need to be a professional developer. However, it is still important to review the changes made by AI and not give it uncontrolled access to your production environment.


2. First, you need Zemi.mk hosting and a domain

If you do not already have hosting, you can choose one of the Solo, Business or Premium cPanel hosting plans from Zemi.mk.

The main plans differ by storage, number of domains and available resources:

 

Plan Storage Domains Best suited for
Solo 10 GB 1 one website, personal or small business project
Business 25 GB 3 more serious business websites and multiple projects
Premium Unlimited unlimited according to the terms of use 10 multiple websites and projects with higher requirements

 

For projects that need more resources, Turbo versions with higher resource limits are also available.

For the website we are building in this tutorial, the Solo plan is perfectly suitable as a starting point. If your project grows later, you can move to Business, Premium or a Turbo plan without having to rebuild the website.

The Zemi.mk hosting environment includes tools such as:

  • PHP;
  • MySQL/MariaDB;
  • Git Version Control;
  • Node.js Selector;
  • Composer;
  • PHP CLI;
  • Cron Jobs;
  • SSL;
  • LiteSpeed;
  • Imunify360;
  • backup management.

Zemi.mk hosting infrastructure provides 99.9% uptime, while depending on the service, up to two daily off-site backups are available, with incremental backup systems such as JetBackup and Backuply and simple management of available restore points.

When ordering hosting, you can also register a free .mk domain for the first year. You enter the available domain you want during the order process and complete the required electronic signing procedure for the .mk domain registration.

After successful payment or confirmation of payment, the hosting account is activated within a few minutes and the cPanel access details are sent to your email.

This means that before we even start writing the code, we already have a real domain and production hosting where the website will eventually run.


3. What are Git and GitHub?

Before we start, it is useful to understand two names that will appear throughout this guide.

Git is a system that tracks the history of your project. If AI modifies five files, Git knows which lines were added, which were removed and what the previous version looked like.

This is especially useful with vibe coding because an AI agent can modify many files in just a few seconds.

GitHub is an online service where we will store the Git repository.

In simple terms:

Your computer
      ↓
     Git
      ↓
   GitHub
      ↓
Zemi.mk cPanel
      ↓
 your .mk domain

In our example, GitHub is not the hosting platform for the website. It is where we store and organize the source code.

The actual website will run on Zemi.mk hosting.


4. Create a GitHub account

If you already have a GitHub account, you can skip this step.

If not, create a free account on GitHub. You will need a username, email address and password, and GitHub will ask you to verify your email address.

The free account is more than enough for this workflow and supports private repositories, which means the source code of your website does not have to be publicly visible.

It is also a good idea to enable two-factor authentication for additional account security.


5. Install GitHub Desktop

Git can be used entirely through the command line, but that makes the process unnecessarily complicated for a beginner.

For this reason, this guide uses GitHub Desktop.

With it, you can visually:

  • create repositories;
  • review the changes made by AI;
  • create commits;
  • send code to GitHub;
  • download newer versions;
  • see which files have changed.

After installing GitHub Desktop, choose:

Sign in to GitHub.com

Your browser will open, you will sign in to GitHub and approve the connection.

Do you need a GitHub API token?

For the workflow used in this guide, no.

GitHub Desktop authenticates through the browser and handles authentication for you. You do not need to manually create a Personal Access Token.

Tokens can be required for some other Git workflows, but there is no reason to add an unnecessary extra step for a beginner here.


6. Choose an AI coding tool

You can use:

  • Cursor;
  • OpenAI Codex;
  • Claude Code;
  • GitHub Copilot;
  • Windsurf.

You do not have to commit to a single tool.

For example, you can start the project in Cursor, use Codex later to fix something, ask Claude Code to analyze backend logic and use GitHub Copilot for another change.

They can all work with the same project folder and the same Git repository.

For a beginner, Cursor is probably the easiest example, because the editor, project files, AI agent and Git integration are all available in one interface.


7. Create a new repository for the website

Open GitHub Desktop and choose:

File → New repository

For this example, we will call it:

my-company

In Name, enter:

my-company

In Local path, choose where you want the project to be stored on your computer.

You can also include a README.

Then click:

Create repository

GitHub Desktop will create a folder such as:

Documents/
└── GitHub/
    └── my-company/

This is the folder we will open in the AI coding tool.


8. Open the project in Cursor

In Cursor, choose:

File → Open Folder

and open:

my-company

At this point, the folder is almost empty, but the AI agent can build the entire website from scratch.

Now comes the most important part: the prompt.


9. Give the AI a specific prompt

Do not just write:

Build me a company website.

The more important constraints you provide at the beginning, the lower the chance that the AI will build something that later needs to be reworked.

For example:

Build a complete modern website for a consulting company. The website will be hosted on Zemi.mk cPanel shared hosting. Use PHP 8.x, HTML, CSS and JavaScript without requiring Docker, root access or separate server services. Create a homepage, About page, Services page and Contact page. The contact form must work through PHP, include server-side validation, CSRF protection, basic anti-spam protection and safely process all user input. The website must be fully responsive, fast and SEO-friendly. Keep all publicly accessible files inside /public. Do not place passwords, API keys or other secrets in source code or the Git repository.

You can also give it visual direction:

Keep the design clean, modern and corporate, with generous white space, serious typography and no cheap stock-style elements. I want it to feel like a professional website for a modern European B2B company.

The AI will start building the project structure.


10. What the project structure may look like

For our example, we may end up with something like:

my-company/
│
├── public/
│   ├── index.php
│   ├── about.php
│   ├── services.php
│   ├── contact.php
│   ├── send-contact.php
│   │
│   ├── css/
│   │   └── style.css
│   │
│   ├── js/
│   │   └── main.js
│   │
│   └── assets/
│       └── images/
│
├── src/
│   └── config/
│
├── .gitignore
├── .cpanel.yml
└── README.md

The exact structure does not have to be identical.

What matters is that the AI understands that:

  • public website files belong in /public;
  • secrets must not be stored in Git;
  • the contact form needs real server-side processing;
  • the project must work on standard PHP cPanel hosting.

11. Continue building the website through conversation

Once the AI creates the first version, you do not have to accept it as final.

You can tell it:

The hero section looks too generic. Make it more serious and simpler.

Then:

The mobile navigation is not good. Create a clean hamburger menu.

Then:

Add a section with three main services and a short call-to-action.

Then:

Improve the typography hierarchy without adding new fonts.

Then:

Review the whole website for accessibility issues.

And:

Verify that the contact form really validates data on the server side and not only with JavaScript.

This is the core of vibe coding. Instead of writing each line yourself, you guide the AI as it works on the project.


12. Make sure the contact form is real, not just visual

AI can easily create a form that looks good but does not actually work.

That is why you should explicitly ask:

Make sure the contact form actually works in production on PHP cPanel hosting. Validate all required fields on the server, validate the email address, limit input lengths, escape user-controlled output, include CSRF protection and basic anti-spam protection. Do not trust JavaScript validation alone.

The contact form can include:

  • name;
  • email;
  • phone, if needed;
  • subject;
  • message.

Do not let the AI simply insert raw user input into email headers because that can create security problems.

You can also ask:

Review the contact form specifically for header injection, XSS, CSRF and obvious spam abuse risks.

For a more advanced production website, you can later integrate CAPTCHA or a transactional email provider, but a PHP contact form is sufficient for this basic tutorial.


13. Create .gitignore

In the root of the project, you should have:

.gitignore

For example:

.env
node_modules/
.DS_Store
*.log

Never commit:

  • cPanel passwords;
  • database passwords;
  • SMTP passwords;
  • SSH private keys;
  • API keys;
  • production .env;
  • other credentials.

If the AI has inserted a password directly into a PHP file, ask:

Remove all hardcoded credentials and move all production-specific secrets outside the Git repository.


14. Review what the AI changed

Open GitHub Desktop.

On the left, you will see all files that were added or modified.

When you click a file, you can see the exact changes on the right.

You do not have to understand every line of code, but check whether:

  • AI deleted something it should not have;
  • it changed many unrelated files;
  • it added passwords or API keys;
  • it added strange dependencies;
  • it left TODOs or placeholder code;
  • the contact form really has backend processing.

Then enter a commit message such as:

Initial company website

and click:

Commit to main


15. Publish the repository on GitHub

In GitHub Desktop, click:

Publish repository

Keep this option enabled:

Keep this code private

Then click:

Publish Repository

The source code is now stored on GitHub, but it is not publicly available.


16. Sign in to Zemi.mk cPanel

After the Zemi.mk hosting package is activated, you will receive your cPanel login details.

Inside cPanel, you will find tools for:

  • Files;
  • Domains;
  • SSL;
  • PHP;
  • MySQL;
  • Git;
  • Node.js;
  • Cron Jobs;
  • Backups;
  • Security.

For deployment, the main tool we need is:

Git Version Control

If Terminal/SSH is required for working with a private repository and it is not enabled on your account, SSH access can be enabled on request by Zemi.mk support.


17. Connect the private GitHub repository to cPanel

Because the GitHub repository is private, cPanel needs permission to read it.

The cleanest approach is to use a Deploy Key.

A Deploy Key is an SSH key that gives cPanel read access only to a specific repository.

You are not giving cPanel your GitHub password.

You are not giving it a Personal Access Token.

And you are not giving it write access.


18. Create a Deploy Key

In cPanel, open:

Advanced → Terminal

Enter:

ssh-keygen -t rsa -f ~/.ssh/my-company -b 4096 -C "zemi-cpanel-github"

When asked for a passphrase, leave it empty and press Enter, because the server-side deployment needs to be able to use the key without requiring manual password entry each time.

You will get:

~/.ssh/my-company

and:

~/.ssh/my-company.pub

The file without .pub is the private key and should never be shared.

The .pub file is the public key.


19. Configure SSH for GitHub

In Terminal:

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Then:

nano ~/.ssh/config

Add:

Host github.com
    IdentityFile ~/.ssh/my-company

Save with:

Ctrl + O

then Enter, followed by:

Ctrl + X


20. Copy the public key

Enter:

cat ~/.ssh/my-company.pub

You will see a long line beginning with something like:

ssh-rsa AAAA...

Copy the entire line.


21. Add the Deploy Key to GitHub

Open the repository on GitHub.

Go to:

Settings → Deploy keys → Add deploy key

For Title, enter:

Zemi.mk cPanel

Paste the public key into the Key field.

Leave:

Allow write access

disabled.

The production server only needs to read the source repository, not modify it.

Then click:

Add key


22. Test the connection

In cPanel Terminal:

ssh -i ~/.ssh/my-company -T git@github.com

The first time you connect, you may be asked to confirm the GitHub host key.

Check that the host is github.com and confirm.

If authentication is successful, GitHub will display a message saying that you have authenticated successfully but that shell access is not provided.

That is normal.


23. Create .cpanel.yml

cPanel uses .cpanel.yml to determine what should happen during deployment.

For our company website, all publicly accessible files are inside:

public/

Assume that the domain uses:

/home/CPANELUSERNAME/public_html/

Then .cpanel.yml can look like this:

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/CPANELUSERNAME/public_html/
    - /bin/cp -R public/. $DEPLOYPATH

Replace CPANELUSERNAME with the username shown in cPanel.

If the website is hosted on an addon domain or subdomain, go to:

cPanel → Domains

and check its exact Document Root. Use that path instead.


24. Why do we deploy only /public?

It is not good practice to place the entire repository inside public_html.

The repository may contain:

  • .git;
  • README files;
  • development files;
  • configuration files;
  • local scripts;
  • other files that should not be publicly accessible.

That is why we intentionally deploy only the production web directory.

This keeps the setup cleaner and safer.


25. Commit .cpanel.yml

GitHub Desktop will show the new .cpanel.yml file.

Use a commit message such as:

Add cPanel deployment

Then:

Commit to main

and:

Push origin

GitHub now also contains the deployment configuration.


26. Clone the GitHub repository in cPanel

In cPanel, open:

Files → Git Version Control

Click:

Create

Leave this enabled:

Clone a Repository

On GitHub, open:

Code → SSH

and copy the URL, which will look similar to:

git@github.com:USERNAME/my-company.git

Paste it into:

Clone URL

For Repository Path, you can use:

/home/CPANELUSERNAME/repositories/my-company

Do not place the repository directly inside public_html.

For Repository Name, you can use:

Company Website

Then click:

Create

cPanel will clone the private repository.


27. Perform the first deployment

In:

cPanel → Git Version Control

find the repository.

Click:

Manage

Then:

Pull or Deploy

If .cpanel.yml is valid, you will have the option:

Deploy HEAD Commit

Click it.

cPanel will take the contents from:

public/

and deploy them to:

public_html/

Open your .mk domain.

Your AI-built company website is now live on Zemi.mk hosting.


28. Check that SSL is active

The website should work through:

https://

Zemi.mk hosting includes SSL, and you can check its status in cPanel through SSL/TLS or the relevant AutoSSL interface.

A production contact form should never be used over an unencrypted HTTP connection.


29. Test the contact form

Do not stop after checking whether the website simply opens.

Send a real message through the contact form.

Check:

  • whether the form accepts a valid name;
  • whether it rejects an invalid email address;
  • whether required fields are truly required on the server side;
  • whether the message is actually delivered;
  • whether success and error messages are clear;
  • whether HTML or script input in the message field is not executed;
  • whether refreshing the page causes unwanted resubmission;
  • whether the form is usable on mobile.

You can also ask the AI again:

Perform a security review of the contact form. Check server-side validation, CSRF protection, header injection risks, XSS risks, input length limits and obvious spam abuse. Do not change the design unless necessary.


30. Your everyday vibe coding workflow

Once the setup is complete, future changes become much simpler.

Suppose you want a new references section.

In Cursor:

Add a new client references section on the homepage. Match the current design system, make it responsive and do not change unrelated sections.

The AI makes the changes.

Review them in GitHub Desktop.

Then:

Commit → Push origin

In cPanel:

Git Version Control → Manage → Pull or Deploy

First:

Update from Remote

then:

Deploy HEAD Commit

The new version is live.

The full workflow looks like this:

Idea
 ↓
AI agent
 ↓
review changes
 ↓
GitHub Desktop
 ↓
Commit + Push
 ↓
GitHub
 ↓
cPanel Update from Remote
 ↓
Deploy HEAD Commit
 ↓
Zemi.mk hosting
 ↓
LIVE

31. Can deployment be automated later?

Yes.

cPanel also supports push deployment, so a more advanced user can eventually move to a workflow where a Git push automatically triggers the deployment.

However, for a beginner, the manual step:

Update from Remote → Deploy HEAD Commit

is actually useful.

It gives you one final control point before an AI-generated change becomes the production version.

Once you become comfortable with Git and deployment, automation is the natural next step.


32. What if the AI breaks something?

Git lets you track the history of the source code and return to a previous version.

But the production website is not only source code.

If you later have:

  • a database;
  • uploads;
  • email data;
  • dynamic content;

then backups become an additional layer of protection.

Zemi.mk provides up to two daily off-site backup copies, while JetBackup/Backuply and incremental backup mechanisms make it easier to manage available restore points.

With vibe coding, this becomes even more important because you can make in ten minutes a number of changes that used to take an entire working day.

Git protects the history of your code.

Backups protect your production environment and data.


33. What if you want to build a full application instead of a company website?

The same basic workflow still applies.

An AI coding agent does not have to create only presentation websites.

You can ask it to build:

  • a customer portal;
  • an admin panel;
  • a booking system;
  • a catalog;
  • a custom CRM;
  • an ERP module;
  • a dashboard;
  • a REST API;
  • a PHP/MySQL application;
  • a Laravel application;
  • a Node.js backend;
  • a SaaS prototype.

The difference is that the more complex the application becomes, the more important it is to tell the AI what production infrastructure is available.

For example:

This application will run on Zemi.mk cPanel shared hosting. Use only technologies and services compatible with that environment. Do not require Docker, Kubernetes, root-level daemons or infrastructure that assumes a dedicated VPS.

This helps the AI choose an architecture that matches the environment where the application will actually run.


34. Node.js is also available on Zemi.mk cPanel hosting

The Zemi.mk hosting environment also includes Node.js Selector, so you are not limited to PHP.

Through:

cPanel → Setup Node.js App

you can create a Node.js application, select an available Node.js version, application root, startup file, production mode and environment variables.

This allows AI to build a Node.js backend or even a complete Node.js web application, provided that it is compatible with the CloudLinux/Passenger environment.

For such a project, tell the AI from the beginning:

Build this Node.js application for Zemi.mk cPanel hosting using CloudLinux Node.js Selector and Passenger. Do not require Docker, root access or separate system daemons. Keep all credentials in environment variables and preserve compatibility with the hosting environment.

Node.js is already a separate topic and deserves its own detailed tutorial, but it is important to know that vibe coding on Zemi.mk does not end with HTML and PHP.


35. React and Vite can also be used

If you want AI to build a React or Vite frontend, Node.js may only be required during development and build.

For example:

npm run build

may generate:

dist/

which can then be deployed as a normal static website.

If the project also includes a real Node.js backend, the backend can be configured through Node.js Selector.

That is why you should always ask the AI:

Does this project need a persistent Node.js server in production, or can the final frontend be deployed as static files?

The answer will tell you which deployment model you need.


36. Do not blindly deploy AI changes to production

Vibe coding does not mean that you should stop checking what is happening.

Be particularly careful when AI changes:

  • contact form logic;
  • authentication;
  • database queries;
  • file uploads;
  • payments;
  • user permissions;
  • .htaccess;
  • API integrations;
  • email sending;
  • production configuration.

A good prompt before a commit is:

Review everything you changed, make sure no unrelated files were modified, check for obvious security issues and prepare the project for commit. Do not deploy anything and do not expose production credentials.

Then you review the diff and decide whether the change should go live.


37. Why does hosting still matter in the AI era?

AI lowers the barrier to creating web projects.

A company that previously had to hire a developer for every small change can now build prototypes, landing pages, internal tools and even complete applications much faster.

But AI does not replace:

  • the domain;
  • DNS;
  • the server;
  • PHP or Node.js runtime;
  • the database;
  • SSL;
  • backups;
  • security;
  • uptime.

When the website becomes a real part of the business, infrastructure matters even more.

Zemi.mk hosting provides 99.9% uptime, SSL, cPanel, CloudLinux, LiteSpeed, Imunify360, Git Version Control, PHP/MySQL, Node.js Selector and a backup system.

AI makes development faster.

Hosting turns the code into a real website that needs to remain available.


38. Solo, Business or Premium?

For the company website we built in this tutorial, Solo is the logical starting point.

If the company later needs more websites, a larger project, more storage or additional applications, it can move to Business or Premium.

If the project becomes significantly more resource-intensive, Turbo versions with higher limits are also available.

The important part is that you do not need to know from day one how large the project will become.

You can start with a simple company website and tomorrow use the same Git/AI/cPanel workflow for a much more serious application.


From a prompt to a real website

A few years ago, someone without development experience would have had a hard time building a serious business website with custom code, a working contact form, version control and production deployment.

Today, AI coding tools have dramatically lowered that barrier.

Cursor, Codex, Claude Code, GitHub Copilot or Windsurf can help build the project.

Git remembers every version.

GitHub stores the source code.

cPanel deploys it.

And Zemi.mk hosting provides the domain, SSL certificate, PHP and Node.js runtime, backups, security layer and infrastructure where the website actually runs.

With Solo, Business and Premium hosting, a free .mk domain with the initial registration, Git Version Control, Node.js Selector, PHP/MySQL, Composer, Cron Jobs, 99.9% uptime and up to two daily off-site backups, you can start with an empty folder and an AI prompt and end up with a real website running on your own domain.

Prompt. Review. Push. Deploy. Live.

Vibe coding on Zemi.mk.

For a long time, web hosting was built for people, websites, and automated scripts.

In 2026, that is no longer enough.

More and more often, the thing accessing the internet is not just a person clicking a button or a bot following predefined rules. It is an AI agent that can independently read websites, use APIs, write code, analyze systems, try different approaches, and take actions on behalf of a user.

And sometimes, it goes further than intended.

This year, OpenAI disclosed a security incident in which its models, during cybersecurity testing, chained together multiple vulnerabilities and reached production infrastructure outside the originally intended test environment.

Anthropic reported similar findings. During its evaluations, Claude managed in several cases to reach real organizational systems that were not part of the assigned task.

Australia saw a much more ordinary, but perhaps even more telling example. An AI agent tasked with helping a user book a gym session discovered a weakness in the booking system and used it to make changes that a normal user was not supposed to be able to make.

This does not mean AI has suddenly become some autonomous army attacking the internet.

It means something much more practical.

The internet has a new type of user.

An AI agent does not behave like a traditional bot

A traditional bot executes predefined instructions.

An AI agent can observe what is happening, make decisions, change its approach when something does not work, and keep going until it completes the task.

That is a major advantage when the agent is working for you.

The same capability becomes a security problem when it encounters a badly configured server, a vulnerable plugin, an unprotected API, or a system that was simply never designed for this type of automation.

With AI, discovering and exploiting weaknesses can become much faster and much cheaper.

So the question is no longer only whether your website uses AI.

The question is whether the infrastructure it runs on is ready for an internet where AI is everywhere.

AI-ready hosting does not mean putting a chatbot on your homepage

The term “AI-ready” can easily become just another marketing buzzword.

For us, it has a much more concrete meaning.

AI-ready infrastructure means a server environment with isolation between users, controlled resources, layered security, rapid vulnerability patching, reliable backups, fast recovery, and enough computing capacity for modern web applications.

That is why much of what is becoming important in the AI era did not begin at Zemi.mk in 2026.

We started building this foundation back in 2015

In December 2015, we wrote about introducing CloudLinux, LVE, and CageFS into our hosting infrastructure.

At the time, AI agents were not part of the conversation.

ChatGPT did not exist.

But the principle was the same as it is today: one user or one compromised application should not be able to endanger the entire server.

With CageFS, every hosting account runs in an isolated environment. With LVE, CPU, RAM, I/O, process counts, and other resources can be controlled on a per-account basis.

If one website has a problem, it should not be able to bring the entire server down with it.

More than a decade ago, that was good hosting architecture.

In the AI era, it becomes even more important.

Security needs multiple layers

There is no single technology that can make a server secure.

That is why our infrastructure does not rely on one.

Today, Zemi.mk Linux hosting packages use CloudLinux isolation, Imunify360 anti-malware protection, DDoS protection, SSL, Cloudflare CDN, and Anycast DNS.

Each layer solves a different problem.

One limits what a compromised account can do.

Another detects malware.

Another protects against network-level attacks.

Another provides faster and more resilient DNS.

Security is not a button you switch on once.

It is an architecture.

Reaction speed is becoming part of security

In April 2026, a critical vulnerability related to cPanel/WHM authentication was disclosed.

Our response was simple.

We proactively restricted access to cPanel and Webmail until the official security patch was installed.

Websites continued running normally.

That principle is going to become increasingly important.

In a world where automated tools can discover and begin exploiting a new vulnerability very quickly, it is sometimes not enough to know that a patch is coming.

You need to know what you are going to do in the meantime.

Backup is no longer just for “I accidentally deleted something”

AI agents can perform a very large number of operations in a very short period of time.

That is one of their biggest advantages.

And one of the reasons a good recovery system is becoming even more important.

Zemi.mk hosting infrastructure provides up to two offsite backups per day, with up to 30 days of history and the ability, through JetBackup, to restore entire accounts, individual folders, databases, or email accounts.

Because security does not end with trying to prevent something from happening.

Good infrastructure must also answer the next question.

What if it still happens?

AI applications also require more resources

The other side of the AI era is not security. It is the applications themselves.

More and more web services will communicate with OpenAI, Anthropic, and other AI platforms through APIs. They will process more requests, run background processes, work with larger amounts of data, and depend on fast databases and caching.

That means modern hosting cannot stay at the resource levels of ten years ago.

Our Turbo hosting packages today provide up to 4 CPU cores, 5 GB of RAM, up to 200 concurrent processes, NVMe storage, Redis and Memcached caching, and LiteSpeed infrastructure.

For applications that require their own environment, Managed Cloud VPS provides dedicated CPU and RAM resources, a private environment, monitoring, security updates, backups, and the ability to maintain separate production and test environments.

We are not claiming that you will train a large language model on ordinary shared hosting.

That would not be serious.

But a large share of AI applications will not work that way at all.

The model will run in the cloud. Your web application will communicate with it through an API.

And that application still needs somewhere to run quickly, reliably, and securely.

A new internet is not beginning. The way we use it is changing.

AI will not replace the internet.

It will populate it.

Alongside people, search engines, and traditional bots, millions of agents will move across the web, reading, comparing, buying, booking, programming, communicating, and taking actions.

Some will work for your customers.

Some will work for your company.

Some may be looking for weaknesses in your systems.

Infrastructure has to be ready for all of them.

At Zemi.mk, we have been building much of that foundation for more than a decade.

User isolation. Controlled resources. Layered protection. Offsite backups. Fast security response. Cloud infrastructure. Fast DNS. More processing power. Readiness for modern applications.

The technology around us is changing.

The underlying principle is not.

Good hosting has to be fast when everything is working, isolated when something goes wrong, and ready for what comes next.

The AI era has already begun.

When launching a new online project, the domain and web hosting often appear to be the simplest parts of the process. Choose a name, register the domain, activate hosting, and move on.

In practice, these two services form the infrastructure on which almost everything else depends: the website, business email, DNS records, SSL certificates, subdomains, applications and, in some cases, an organisation’s entire digital communication layer.

That is why serious companies and projects do not choose their domain and hosting provider solely on price. Stability, control, technical competence, proper domain management and the provider’s ability to respond when something genuinely matters become far more important.

Zemi.mk has been built around those principles.

Zemi.mk is a specialised service for .mk and .мкд domains and an official registrar for Macedonia’s national domain extensions. Unlike global hosting platforms where .mk is simply one extension among hundreds, Macedonian domains are at the core of what Zemi.mk does.

That distinction matters.

A domain is not simply another product in a shopping cart

For a serious project, a domain is a long-term digital asset.

A brand is built on it. The website operates from it. Business email uses it. Over time, it accumulates links, indexed pages, search signals, direct traffic and recognition among customers.

Choosing a domain should therefore involve more than checking whether a name happens to be available.

At Zemi.mk, domain search is enhanced with AI analysis that can provide an expert perspective on the name being considered: what types of projects it may suit, where its strengths lie, where it may create friction, and how it performs from the perspective of branding, length, readability, pronunciation, local relevance and future use.

That creates a meaningful distinction between simply checking availability and making an informed decision.

A domain can be available and still be a poor choice.

It may be too long. Difficult to pronounce or remember. It may describe the company’s current service too narrowly and restrict the brand later. It may work well in Macedonian but become problematic if the business expands regionally or internationally.

The AI tools on Zemi.mk are not intended to make the decision for the customer. They add another layer of analysis before the domain becomes part of the company’s identity.

An official .MK registrar, not merely an intermediary

With national domains, there is an important distinction between a registrar, a reseller and a company that simply offers domains as an additional service.

Zemi.mk is an official registrar for the Macedonian national .mk and .мкд domains.

This means that working with Macedonian domains is not a secondary product inside a much larger catalogue of unrelated services. It is a specialised area of the platform’s operations.

For the customer, this matters because behind a simple registration interface are processes involving registrant data, renewals, DNS configuration, changes of information, transfers, documentation and interaction with the national domain registration system.

When a domain forms part of a company’s critical infrastructure, understanding those processes is worth considerably more than a small difference in registration price.

Domain and hosting in one infrastructure

Domains and web hosting are technically separate services, but in a real-world web project they operate as one system.

DNS must direct the domain to the correct server. SSL certificates must work correctly. The website must remain reachable. Email requires properly configured MX, SPF, DKIM and other DNS records. Redirects and subdomains need to operate without conflicts.

When the domain is managed in one place, hosting in another, DNS somewhere else and technical support by a fourth provider, a simple issue can quickly become a chain of support tickets in which every provider insists the problem belongs to somebody else.

Zemi.mk enables companies to manage their domain and hosting infrastructure as connected services.

That does not mean every customer must keep every component with one provider. Good infrastructure should remain flexible. But when the domain, DNS and hosting are supported by the same team, diagnosing and resolving problems can become considerably simpler.

Support matters most when something stops working

The difference between providers is rarely obvious when everything is functioning normally.

It becomes obvious when it is not.

When a DNS change does not behave as expected. When a website becomes unavailable. When email stops arriving. When a domain urgently needs to be renewed, a configuration needs to be changed, or a production problem needs to be investigated.

In those situations, the fact that a service was marginally cheaper offers very little value.

What matters is having a provider that understands the system.

Zemi.mk is built as a local service with direct support and specialised knowledge of the Macedonian domain and hosting market. For businesses operating in Macedonia, this means working with a team familiar with the local ccTLD, the procedures surrounding .mk domains and the infrastructure issues commonly faced by Macedonian online projects.

Local infrastructure for a local market

For a company whose primary market is Macedonia, .mk is a natural choice for its main domain.

The national ccTLD immediately places the project in a Macedonian context and establishes a clear connection between the brand and the market it serves.

Local orientation, however, does not imply limited technology.

A modern web project requires the same infrastructure principles whether it receives one hundred visitors or hundreds of thousands: reliable DNS, valid SSL, fast servers, backups, security, a stable PHP and database environment, properly managed email and infrastructure capable of growing with the project.

Zemi.mk combines specialised knowledge of the .mk namespace with the infrastructure required by modern websites, online stores, corporate systems and other internet projects.

For serious projects, continuity matters more than the introductory price

A domain may remain in use for ten, twenty or more years.

A successful website will rarely remain unchanged for that long. Technology changes, hosting plans evolve, traffic grows, subdomains are introduced, applications are migrated, DNS records change and new services are added.

Choosing a provider is therefore also choosing a partner capable of supporting the project through different stages of its development.

The cheapest solution in the first year is not necessarily the cheapest solution over five years.

Poor domain management, lost account access, unclear ownership, incorrect DNS configuration or a badly executed migration can create damage far greater than the cost of the service itself.

This is why businesses that treat their online presence seriously look beyond the initial registration price.

Zemi.mk is built around domains

There are hosting companies that also sell domains.

There are domain marketplaces that additionally offer hosting.

Zemi.mk is built around the principle that the domain is the starting point of a digital identity.

From domain search and AI-assisted name analysis, through .mk and .мкд registration, DNS and domain management, to web hosting and the infrastructure required after registration, the objective is to allow customers to build and maintain their projects in one coherent environment.

For a new project, this means a simpler start.

For an established company, it means clearer infrastructure and fewer points of failure.

For a serious business, it means that the domain — one of the most important and longest-lived components of its digital identity — is being managed by a service specialised in precisely that field.

That is why successful companies and projects do not choose Zemi.mk merely to register an address.

They choose it because the domain, hosting and infrastructure behind them need to keep working when the project becomes much larger than it was on the day its first domain was registered.

The New Year promotion continues into 2016. Every new web hosting package purchased from Zemi.mk until January 15 comes with a FREE .mk domain. Now, with hosting starting from only 999 denars per year, you receive a .mk domain worth 699 denars completely FREE!

12376285_926533454088497_9071936589919654925_n

How?

Purchase one of our hosting packages, then add the domain you want to your cart. One of our administrators will activate it for you, free of charge!

Happy holidays!
Zemi.mk,
Your favorite national domain registrar!

Domain registration on Zemi.mk is completed in just three simple steps.

First, log in to the system. If you do not have a user account yet, you can create one through the registration form available here.

After logging in, from the “Domains” menu, select the “Search” submenu. Here you can check whether the domain you want is free and available for registration.

If the domain is available, you will proceed to the page where you can choose the desired domain for registration from several available options. By clicking the “Add to cart and continue to setup” button, you will move to the page for setting up the domain contacts and nameservers. On the same page, you can also choose the payment method: “By invoice” or “By payment card”.

If you choose to pay by invoice, a proforma invoice will be generated and made available for download. It will also be sent to the email address you used to register on Zemi.mk. The domain will be registered after the payment for the service has been properly confirmed.

If you choose to pay electronically by payment card, the domain will be registered instantly and will be available for use and management immediately.

By clicking the “Continue” button, if you selected payment by invoice, your order will be confirmed and the proforma invoice will be sent to your email address.

Otherwise, you will be redirected to the cart, from where you can proceed to payment by card.

Zemi.mk does NOT store your payment card details. The entire payment process is handled through the Uni Bank system, with which we have a cooperation agreement and which is responsible for processing electronic payments.

Softaculous auto-installer allows you to install web applications with just one click. A large number of applications are available for simple installation through Softaculous, including portal applications, complete e-commerce solutions, CMS platforms, blogs, forums, and much more. In addition to simplifying the installation of these types of applications on your hosting account, Softaculous also offers the option to create backups, allowing you to back up your installations at any time.

You can view the complete list of web applications available through Softaculous here.

Softaculous is available to all users of Linux shared web hosting purchased from Zemi.mk, and upon customer request, it can also be installed on any dedicated server using a Linux operating system, with an appropriate additional fee.

The most commonly installed web applications through Softaculous are: WordPress, Joomla, phpBB, Magento, PrestaShop, and others.

softaculous_big

CloudLinux OS is an operating system created for the needs of companies that offer shared web hosting, developed by CloudLinux Inc. CloudLinux is based on the OpenVZ kernel and is compatible with CentOS/RHEL packages.

The primary purpose of CloudLinux is to improve server stability and security, and to optimize the performance of the “tenants” who have leased space on the server by isolating them, assigning them dedicated resources, optimizing database performance, and more.

CloudLinux OS offers a modified kernel based on the OpenVZ kernel, adding a set of original and fully functional features. The main benefit of using this operating system is Lightweight Virtual Environment (LVE), an isolated environment with its own CPU, memory, IO, number of processes, and other limits.

What is CageFS?

CageFS is a virtualized, isolated file system that separately isolates each user, or “tenant”, on the server and prevents users from seeing each other, accessing sensitive server information, and similar data. CageFS also protects against a large number of hacking attacks, including most privilege escalation attacks involving users, as well as attacks that expose information about other “tenants” on the server.

View the CloudLinux OS hosting packages on Zemi.mk at the following link.

cloud-architecture

MailChannels Cloud Corporate Mail completely eliminates IP blacklisting problems associated with compromised email accounts or spam. The cloud-based system uses artificial intelligence to find the most suitable way to deliver each email message, monitors user activity, and limits spamming. Its ResponseAnalytics™ technology understands why messages are rejected by the recipient’s server, helping identify compromised accounts and improving the reliability of email delivery.

These technologies automatically help prevent the sending IP address from being added to blacklists by sorting outbound email traffic by risk category and delivering messages through thousands of different, constantly monitored MailChannels IP addresses.

The maximum number of sent messages per domain is 4,800 per day, or 200 messages per hour per domain.

More information about MailChannels is available at the following link: [http://www.mailchannels.com/](http://www.mailchannels.com/)