Roots Discourse

Designing A Modern WP Hosting Platform


#1

What do you want from a modern Wordpress hosting platform?

I’m currently designing a modern WordPress hosting platform and want to hear from you! The focus is on providing the best experience for WordPress engineers, think heroku or digital ocean meets Wordpress.

What would you expect from a modern WP hosting platform?

Feel free to leave your answer here, or if you would like to respond in private, email tom@digitalengine.io

If you are open to giving extended feedback or you would like to give feedback on the interface, please email me.


#2

Hi Tom, that’s kind of an odd question to ask here, to my ear anyway. The trellis software handles all the complexities usually associated with hosting, or many of them, so the need for a platform is limited. I’ll give you my best ramble though, maybe it’ll be useful to you.

What Trellis Solves

The mission

Trellis’ primary goal (as far as I can tell, I’m not part of the core team at all), is to make sure you get exactly the same environment between your local development, staging, and finally production. It also wants the configuration required to be non-brittle and as automated as possible.

##The play
With minimal config (albeit a pretty steep learning curve if you’re new to ansible), it will install a virtual machine with your full LAMP stack and your wordpress sites for local development. It will also log into a remote server with a fresh OS (Ubuntu 16) and install the identical stack/sites. Things get even more awesome if you use Bedrock and Sage.

This is a huge advantage, because firstly it eliminates the chance of something working on your local machine (let’s say you’re using the latest version of PHP), but failing on your host (which might be running a different version). Best of all, you don’t have to think about it all (but you can hack it to the core if you want).

It also means you can have true local development, and yet easily deploy your sites remotely, all from the same toolset right out the box :heart_eyes:. All of this doesn’t require a platform, indeed a platform could/would break the ability to use Trellis!

What functionality would be even better?

A lot of what I’m about to mention has been discussed on these forums, or is already under development over on git. I’m also discussing a situation using the whole Roots ecosystem.

  • Database/content migration built in, also backup tools.
  • Better CLI/GUI for seeing updates to parts and dependencies of the Roots ecosystem across multiple Trellises and Sites.
  • Even smoother integration with Digital Ocean (pet favourite in these parts) or other hosts.

The thing which isn’t often discussed is point 2, the clearer CLI/GUI. The issue I’m facing as I build more Trellis instances, each running at least one site, is keeping track of what needs updating where- both from the trellis repo, and in-terms of composer requirements (see bedrock). Part of the strength of Bedrock is also its weakness- the dev specifies the plugins, themes, and dependencies (and versions of them) which will be deployed, if something gets an update, you have to change the composer file and push it. You can allow users to make these changes on the remotes through the normal Wordpress GUI, but then you no longer have an authoritative version of the site to deploy (since no-one tells your repo that User Alex has updated to Wordpress X with Plugin Y).

There are Wordpress plugins allow you to build dashboards of sites, and track site usage and updates available. I feel like this behaviour as regards updates is effectively outdated by treating Wordpress (and it’s plugins/themes) as a dependency of your project (yay!). What we don’t have is the ability to easily see the updates, or track/manipulate site usage- in-fact using Roots software can make this harder.

##Wait, why would one person need to keep track of all of that?
Okay so I’m a pretty poor business person at this point- I’m a one man team trying to do maintenance and monitoring on all these sites on the side of developing new ones. A perfectly sane response is to say ‘hire help, change more dollar’. I just can’t help but feel that the Roots software gets 3/4 of the way to making managing Wordpress perfect, and has the trenches dug for that final assault. At the moment, that final functionality isn’t part of the Roots scope, so it’s not a failing, I just long for more.

#Conclusion
I don’t need a hosting platform, Trellis exhausts the need for one, and there are excellent hosts out there who provide the servers (Digital Ocean, also GoDaddy has identically priced offerings and great customer service). I do still need to help me maintain these sites- I hadn’t thought that a host would be able to solve those issues, but please do prove me wrong :stuck_out_tongue_winking_eye:


#3

You got some feedback (including a recommendation of Trellis from yours truly) on your Reddit post, too.


#4

To piggyback on @thisolivier’s notes, Trellis also lets you keep your entire project in a single Git repository, which makes handing a site off to another developer as simple as granting them access to the Git repo and sharing the vault_pass.

The next developer simply clones the repo, enters the vault_pass and is immediately ready to deploy to staging or production.

This fixes the fundamental difficulty with trying to keep WordPress under version control, something I had struggled with for years before coming to Trellis: once you deploy your site, no matter how judicious you are, production is going to get out of sync with Git. Someone will update a plugin, or you’ll need to make a hotfix in production, and now you have to figure out how to merge those changes.

Trellis does a better job than any other tool I’ve found at discouraging this kind of thing by 1) preventing plugin and theme updates on production by default, 2) making creating (or re-creating) a local dev environment MUCH simpler than other tools do, and 3) making deployment as easy as typing ./deploy.sh production mysite.com.

Trellis is the only platform I need because it isn’t a platform; it’s a set of tools that let my platform be anywhere.


#5

Thanks a lot for the feedback! Roots has certainly inspired a lot of my thoughts on this.

It sounds like you and @MWDelaney prefer to manage hosting on your own, and Trellis is a great tool for that.

I agree with your ideas about better functionality. I envision a very easy to use interface that is very much like Digital Ocean, but with much richer functionality around managing wordpress provisioning, migration, and workflow.

What if there was a platform that had all the things you love about Trellis, but with an interface for easier management, and maintenance is done for you?


#6

The main things to love about Trellis are the symmetry of the development environment with any other deployment, and (as @MWDelaney points out), the ease of keeping an authoritative codebase (I personally prefer having trellis and my sites as separate sub-repos, but it doesn’t make much difference).

#In a platform, really?
##Keeping it consistent
Your platform is going to manage the installation back end of the wordpress sites- unless you provide a virtualised server to run on people’s local machine’s, you can’t ensure a developer will have the same environment. Even if you do, the setup is proprietary, meaning moving sites off your platform will be a pain (though in theory, a good business move), and making the setup less hackable.

The codebase

Then you have the issue of your authoritative source. You’d want to make sure the devs can still have a codebase in whatever repos they like. Actually, you could improve on the situation with Trellis by having the platform automatically register updates and plugins to the composer file and commit to the ‘Platform Branch’ of the project. That would be very cool.

##The GUI/CLI
Of course your final stage is how to pull the relevant info from wordpress to give a dashboard of ‘what needs updating’. If you were to fork Bedrock you could probably get the info you need from it, but if you’re allowing dev’s to have their own repos, the structure won’t be stable across sites, and you’ll need hooks for registering new .json files with dependencies. Even then you’re assuming compliant well educated users- quick look round the Wordpress forums would tell you that’s not the average.

##Hosting and hackability
My final point would be that managing your hosting and managing your platform are similar in Trellis vs Tom2 Platform, the only traditional management of my Trellis server I have to do is when bug-fixing, or when I’m adding my own functionality. But honestly, as long as I had NVM and access to the site root, I’d probably be happy. Being able to add modules to the platform itself on a per-account basis would be a bonus- but then you’re really talking about Meta-Wordpress OS (sounds fun, might be horrific).


#7

Would def capitalize WordPress correctly :wink:

No but in all seriousness (I was serious), there are a lot of things for me that Trellis still doesn’t solve personally. The biggest thing for me is having to be a SysAdmin… I don’t want to have to manage versions of PHP, or fix vulnerabilities if there are issues. I want to build websites, and have an easy way to deploy them. We recently landed on Kinsta because they will allow my team to do Trellis deploys, so we all run Trellis locally, but still have a modern way to make sure that our production sites are taken care of.

I liked this comment a lot, so I’d echo it.

We spent a long time looking for our next platform to put WordPress on, and the big thing was that I just didn’t want to have to be the one to fix things when everything broke on that side. We’re good at writing WordPress Plugins, Themes, and other stuff like that. Not Ansible configs.

A GUI could def. help the more beginner user, but wouldn’t be required. I’d love to have an easy way to get some of the people we hire for building themes to deploy to staging without having to teach them how trellis deploys work. I have endless feature requests actually haha. Being able to have a themer submit a PR to staging branch, and have it automatically run a gulp build when I approve the PR? Yes please!

Hey, want to take care of everything? Help us with a CDN, S3 uploads. It’s not impossible setting that up, but it’s cool if it’s one less thing you have to do. LetsEncrypt? Etc?


#8

That’s already taken care of with continuous integration/deployment servers. For sure, it’s extra set up and another service to potentially pay for. However, the popular ones that are available (Circle CI, Codeship, Travis, etc.), do this exceptionally well.

Having the host take care of this wouldn’t necessarily be a bad thing. I guess the thing would be that it would have to be somewhat opinionated in order to keep variables to a minimum and running smoothly. If it’s opinionated to use Trellis, I wouldn’t say that’s a bad thing :wink:


#9

Trellis is awesome because it’s built with a legitimate automation platform for infrastructure and IT, Ansible, which is scale-able from spinning up a single small VM on Digital Ocean and hosting a single site. To automating your whole entire IT / web business. There is no limit to what you can do with the Roots stack and Trellis.

For example my modded version of Trellis (using a modified Bedrock setup for sites) is set up to fully automate and version control our biggest web server, staging server, my home local dev setup, and office dev setup and it keeps track of all of our SSL certificates and individual website configurations and tweaks. But it is seriously awesome. The big server is a GCE n1-standard-8 (8 cores 30GB RAM, it’s actually way overkill but their pricing is cheap really) and using Google Cloud SQL as the database. It runs I think currently 80 or 90 production Wordpress websites, all configured with their own PHP pools and sockets (currently working on Firejail to chroot each website in its own env) , the busiest site is like 120k US / 500k worldwide in Alexa ranking. So between that and all the other sites it handles some serious traffic day to day.

The reason I’m saying all this is because I never would have built the setup we have without Roots and Trellis and all the hard work by everyone continuing even to this day. I still merge in almost all the major changes from the master branch of Trellis. You guys have literally changed my life by being here, no joke.

As for the modern WP Hosting platform I would envision a modified version of Bedrock put inside possibly a Docker Container that gets spun up and you could configure it with a Web GUI spin off of Trellis. With all the goodies like https://www.siteground.com/wordpress-hosting.htm lets you have. Who wants to build it?


#10

Sounds like you would like to have full flexibility on the engineering side while having the option to not have to deal with all-of-the-things, plus an easy workflow for non-engineers.

I think we are on the same page here! Definitely want to take care of everything that can be taken care of that lets you stick to writing WordPress Themes & Plugins.

Would love to hear your other feature requests! It’s the accumulation of getting the small details right that make a great product.

PS. I do sometimes capitalize WordPress correctly!


#11

On it!

What would you want to manage in the Web GUI spin off of Trellis?


#12

If you really are undertaking this, it was executed correctly, and you had good support people in place (this is always the biggest issue with places that claim to be “managed” hosting) you would definitely grab a market share of the more advanced but don’t like to spend their day on a black screen developers.

I think the key is to set yourself apart by how you structure everything as far as the install is concerned. I don’t know of anything managed that lets you work with WP and plugins / themes as dependencies and get the none standard structure /app/ vs /wp-content/ and /wp/ in front of the core files, which right there cuts down on 95% of the web scanning botnets and losers looking for vulnerable installs and plugins. (I’m estimating without any real research here, but it seems like a probable percentage doesn’t it? :stuck_out_tongue_winking_eye:)

As far as the web GUI I would think you would want to let people manage pertinent PHP options for their pool, NGINX options as well as possibly letting the user edit their actual config files if they wanted something out of the normal wheelhouse (you could just set it up to run nginx -t to validate the config before actually reloading anything). I would assume all the Nginx cache options and SSL stuff as well. Multisite would be big. One click staging is key.

Personally I’m way to much of a control freak to not manage everything myself on GCE or AWS but a majority of the people don’t want to or don’t have time/knowledge to dig in and set up everything and maintain it moving forward.


#13

This is a major pain point for me. If anyone has come up with any semblance of a solution, I’d love to hear about it.