I recently revisited my entire hosting setup for both client projects and my own websites. After years of bouncing between different solutions ā some too complicated, others too limiting ā I think Iāve finally found my sweet spot with a combination of Ploi and Hetzner Cloud. In this article I want to share it with you (and also document it for my future self).
FYI: Iāve included affiliate links. If you decide to try them out, Iāll receive a small commission.
Managing expectations
What I want from a hosting setup:
- Connect a (GitHub) repository
- Instant deployment on push, ideally with different actions for different branches
- Free, automatic SSL certificates
- Play nicely with file-based content management systems like Kirby ā¶
- Simple (file) backups
- Modern UI (you wouldnāt believe what Iāve seen)
Managed servers or managing servers?
Managed servers
Among others, Iāve used managed servers by Strato, IONOS, All-inkl, DomainFactory, Hostinger and Host Europe. They always felt a bit limited when it comes to deployment and they charge (some, a lot of) money for things like SSL certificates or backups. Not to mention their ancient user interfaces ā· .
Managing servers
On the other hand, Iāve experienced a lot of stress managing servers myself for some years, so I swore Iād never touch that topic ever again. Nothing like waking up on a nice Sunday morning to urgent emails about a server being down to make you question your career choice. It sure is nice to have full control, but not at the expense of this kind of stress.
Something in between?
Iāve searched for āsomething in betweenā for a long time ā a solution that gives me control without requiring a degree in server administration.
Ploi: the perfect middle ground
As they tell you on their own website, they ā(ā¦) take all the difficult work out of your handsā and I have to say itās true. It bridges that gap between fully managed and self-managed in a way that feels just right.
Iāll show you how it looks when I create a new site. Because Iām a very visual person myself, I took screenshots āø of each step.
1. Creating a server
Most sites donāt need a single server for themselves. But for completeness sake, letās create our first server from scratch. This whole workflow is totally focused on my needs and because Iāve settled on Kirby a long time ago, weāre going to create a server for a Kirby site.
First, we press the āCreate serverā button and choose a provider:

Iām using Hetzner here but there are other options, too. Even a āCustom serverā one, but Iām not quite sure how that works.
Now we can configure some server details:

The first select input is āCredentialsā, referring to the different API keys you can set up in Profile ā Server providers. This way you can easily use different (client) accounts for the same server provider.
While I enjoy the automatically generated server names ā¹ , you can also choose a custom name.
Server OS and server type I rarely touch, leaving it at the latest Ubuntu and āServerā respectively.
Depending on your project and server provider, you want to select a powerful enough server plan. Most of the time I use Hetznerās smallest shared vCPU plan. Iāll go into detail about hosting with Hetzner Cloud further down.
Webserver, PHP version and database depends on your project but so far I always used NGINX, latest PHP and no database.
Now Ploi handles all the technical setup and we just have to wait a bit.
2. Creating a site
After Ploi installed our server we can add our first site. This is where things get interesting:

After entering your domain, youāll have to decide whether to use Kirbyās public folder setup or set the web directory to /
.
The only setting I touch here is the āWebserver templateā. Iāve created a Kirby template with the Moritz StĆ¼cklerās NGINX boilerplate in Profile ā Webserver templates. This way I can select āKirbyā here and have the same NGINX configuration for every new site.
3. Connecting a repository
Now our site is created and youāre presented with this screen:

We want to install a GitHub repository so after selecting the first option, there are some additional fields showing up. I think this is all quite self-explanatory and they did a really good job with the UI.
Because I have a custom deploy script for Kirby set up in the Scripts view, I choose it in the last select field. The default deployment script works just fine, but for Kirby sites using the pages cache, I added a command that clears the cache for the site domain using a variable:
cd {SITE_DIRECTORY}
git pull origin main
echo "" | sudo -S service php8.3-fpm reload
# Clear pages cache for site domain
rm -rf {SITE_DIRECTORY}/site/cache/{SITE_DOMAIN}/pages || true
echo "š Application deployed!"
Now that we installed our repository we want the site to be deployed every time we push. This is surprisingly easy and we just have to enable āQuick deployā in the āRepositoryā view:

The branch youāve installed will now listen for the push event and deploy the site immediately. As someone who likes to surprise clients and partners by how quickly some changes can be made, I really appreciate the speed.
4. Setting up a SSL certificate
Encrypting your site with a free Letās Encrypt certificate is super simple. Just click on the SSL tab in your site and enter the domains you want to encrypt. It will then automatically renew:

Thatās it
Congrats, youāve created a new server, a new site, connected a repository and installed an SSL certificate. Additional sites are super easy now.
Pricing
Ploi starts at 8,00Ā ā¬ per month with 5 servers included. Iām now at the āUnlimitedā plan which has some advanced features I need āŗ and costs 30,00Ā ā¬ per month.
If you want, you can use my affiliate link for signing up.
Sending emails with MailerSend
While you can setup sendmail in Ploi, I wouldnāt recommend it. As they mention in their docs, your mails will probably just end up in spam folders. If you want to send emails, you need a service specialized in that. Iām currently using MailerSend by a recommendation of Tobi and it works great with my server setup.
Setting up domains
To use a service like MailerSend, youāll need to verify your domain first. This involves adding some DNS records to prove you own the domain. I liked the āautomaticā verification they offer, even allowing you to forward an email with instructions to your client or their service provider:

Using MailerSend in Kirby
After verifying a domain, you get SMTP credentials (username and password) that you can then use to send emails. In Kirby, itās super easy to set up your transport configuration globally in the config:
'email' => [
'transport' => [
'type' => 'smtp',
'host' => 'smtp.mailersend.net',
'port' => 587,
'security' => 'tls',
'auth' => true,
'username' => 'ā¦',
'password' => 'ā¦'
]
],
Now every form you set up will use the MailerSend transport settings and you even get some nice statistics about how well your clients are doing (and how many emails get rejected):

This feels like a very robust setup now. Relying on sendmail, I sometimes had breaking changes on servers that I didnāt even notice, breaking contact forms for my clients š±.
Pricing
MailerSend is free for 3,000 emails per month, with additional 1,000 email costing $1.00 each. For 50,000 emails youāre paying $28 per month in the āStarterā plan. Thatās the one Iām currently using.
If youāre interested, you can use my affiliate link to sign up and try it out.
Hosting with Hetzner Cloud
Now, finally something about the actual servers. After trying various providers, Iāve settled on Hetzner Cloud for several reasons:
- Price-to-performance ratio
- European data centers
- Reliability
- Simple, pretty interface
- Easy team management for client servers
Connecting Hetzner to Ploi
If you want to use Hetzner Cloud with Ploi, youāll just have to create an account there and generate an API token for your account:

After entering these credentials in Ploi, it can now create servers and manage them in your name. Youāll almost never look at the Hetzner Cloud UI, which is a shame because I think itās really pretty.
Choosing a plan
For most Kirby projects, I use their CAX11 plan with 2 vCPUs, 4GB RAM, and 40GB NVMe SSD storage. This is more than enough for most Kirby projects with very good performance. Iāve run sites with thousands of daily visitors without breaking a sweat.
Fun fact: I once migrated a client from an expensive 25,00Ā ā¬ per month managed hosting to this plan, and their site load time decreased significantly.
Pricing
Hetznerās CAX11 plan costs just 4,59Ā ā¬ per month. They have various other plans if you need more power, but for most Kirby sites, this entry-level plan is more than sufficient.
Hereās an affiliate link with 20,00Ā ā¬ cloud credits if you want to try it out.
Final thoughts
This setup has transformed how I approach hosting for both client projects and my own sites. Itās a good balance between control and convenience ā I can focus on building websites without worrying about server management headaches.
Whatās your current hosting setup? Have you tried any of these services? Iād love to hear about your experiences or answer any questions over on Mastodon.
- There are hosting providers with incredibly slow hard disks, unsuitable for a file-based content management system like Kirby. I also encountered servers with weird caching issues that need special configuration for every single site. ↩
- Iām always getting laughed at by programmer friends about the fact I prioritize how software looks, but itās quite important to me. Sure, most importantly it should āworkā, but it doesnāt hurt if the UI doesnāt hurt my eyes. ↩
- If youāre stumbling over this article in the future and notice that some screenshots look outdated, please let me know. ↩
- Two of my favourites: ādreamy-squirrelā and āsassy-chipmunkā. ↩
- Among others: Unlimited servers, automatic file backups, team management and site monitoring. ↩