3rd December
Bumped nginx to v1.27 for all new bundles
For new ingress platform upgraded projects, the static cache can now be set to Vary based on the end user's country. Allowing country-specific content (or redirects) whilst still using full static caching
25th November
Added the Manual Backups Addon.
8th November
Added the "Filesystem Logs" feature, which can be toggled in your project's Logs page.
31st October
In the past, Servd has returned `"X-XSS-Protection: 1; mode=block` headers to protect folks on older browsers. However, the amount of requests from such browsers has got so low that on balance it's now less secure to include it by default. Instead of removing it across the board, we've moved the header into your project environment's Headers pages so you can control whether you want to return it or not. New projects won't have the `X-XSS-Protection` header added by default.
30th October
Added "Browser Notification" notification channels. You can now receive push notifications for any kind notification that Servd sends out, including Custom Notifications.
25th October
Released Custom Notifications feature. You can now receive notifications for when syncs complete, bundles finish creating, environments finish cloning and when Spike Protection finishes scaling.
24th September
Made various speed improvements to the Servd dashboard.
23rd September
IP Address blocklists and allowlists now support IPv6 addresses.
19th September
The default trailing slash behaviour has been changed from "Remove trailing slashes" to "Ignore" to avoid potential redirect loops when moving traffic to Servd.
A commit's branch is now considered when deciding whether a bundle needs rebuilding or not.
17th September
Fixed a static caching bug which would sometimes cause query params to be ignored in cache keys.
Only Allow Connections From Trusted Sources panel on the Access Control page has been replaced with a Reverse Proxy panel which allows a project to specify custom reverse proxies and optionally restrict connections to those coming through it. This now also works with our new ingress platform.
11th September
7th September
Added the "Build Order" field in the Node Build Step section UI + tidied things up a little.
6th September
Instead of "Restarting All Instances", it's now possible to restart individual project instances in the Troubleshooting section of your project.
5th September
Added Saudi Arabia as a supported billing country.
7th August
The "Additional Queue Runner" addon can now be taken out by projects on the Starter plan.
5th August
Switched to using env vars to tell the Servd Plugin which Asset Platform version to use, removing reliance on an external API. The API will still be used in local dev to keep that automated.
30th July
Added a button to the dashboard to clear all asset platform and static file caches in one go.
Speculatively fixed a bug which would prevent new asset platform configurations from populating over the entire CDN network, leaving some PoPs responding with errors messages.
7th July
Added the ability to add multiple Team Domains to a project, allowing for the testing of multisites and also attaching custom domains to multiple environments.
3rd July
Added a fix to show SQL errors in task logs during failed database imports. This had been lost due to a change in the mysql stderr output in recent versions.
Added nag banners to our dashboard to upgrade to the latest asset platform and ingress platform.
25th June
Added the Metrics > Traffic page to the dashboard for Ingress Platform upgraded projects which shows a 30 days history of Requests, Page Views and Visits with optional Host segmentation. Lots more stuff to come for this page (including making the styling actually work) so keep an eye on it.
18th June
Improved validation for the primary domain subdomain field in the Domains page.
30th May
In a project's SMTP settings page, you can now see how many emails are left for the month. The value updates every hour.
11th April
Full support for 'min' 'max' and 'fillmax' fit modes on our asset platform and accompanying Servd Plugin updates to use them depending on transform upscale settings.
servd.dev domain now has full DNSSEC enabled, so any projects using CNAME DNS records can also have full DNSSEC
8th April
New Scheduled Command Addon for adding additional cron-jobs.
19th March
Bundles can now be created with PHP 8.3!
Basic auth challenges can now be restricted to specific paths by adding regex patterns in the dashboard basic auth settings. This allows you to say, put another layer of auth on your control panel, or keep specific front-end pages private.
A few miscellaneous bug fixes for team domains, spike protection validation and logging.
14th March
Update to logging to allow the last 15 mins of logs to display initially when visiting the Logs page in the dashboard. Useful to check for errors related to a recent event without needing to download a bunch of Logs to look through
Started rollout for updated handling of image upscaling on the asset platform. Newly introduced 'min', 'max' and 'fillmax' fit modes make it easy to disable upscaling. Accompanying Servd Plugin updates to be released shortly.
3rd March
New logging platform! Logs are now stored for at least 30 days. We've also switched to using Craft's default log format for collecting log metadata like stack traces. We'll be rolling out support for collecting on-filesystem log files shortly.
21st February
Released new nginx base image containing logic to explicitly block the X-Redirect-Url request header.
8th February
Updated all our Composer 2 base bundle images to include Composer v2.7.0.
22nd January
Added the ability to include or exclude specific query params from static cache keys. Allowing analytics params to be ignored, or a specific list to be allowed, increasing cache hit rates when configured.
21st January
Added support for transforming HEIC images to the Asset Platform V3
16th January
Rolled out an upgrade process to the new Ingress Platform for existing projects
2nd January
Released our new DDoS protection, WAF and routing platform for newly created projects.
Bumped default database version for new projects to MariaDB 11.1.3 to fix an index corruption bug
Added a static caching exclusion for any zero byte, empty responses to try to resolve a very elusive static caching race condition
🎉 2024 🎉
13th December
All webhooks that match the pushed branch will now trigger, instead of just the first.
3rd December
Asked PHP not to advertise its version number when using non Craft PHP scripts
Added pagination to the Path Redirects page in the dashboard
3rd November
Added more copy buttons to the database and asset platform credential fields in the dashboard.
Restructured the HTML of the various credential fields to avoid trailing whitespace from being accidentally copy and pasted.
Condensed the database credentials section so it's a bit more scannable.
Added a new "Full URL" field to the database credentials to allow the details to be quickly import into database clients, such as TablePlus.
2nd November
Added the Additional Queue Runners addon 🎉
1st November
Added the ability to view metrics up to 48 hours into the past.
Added a new "Response Codes" graph to the metrics page.
Reduced the time it takes to pull commits for manual repository connections.
27th October
Added a Servd override for the `resourceBasePath` Craft general config setting. It will always be set to `web/cpresources` now.
When your dashboard session expires, but you attempt to access a specific URL, you'll now be redirected to that URL when you successfully log in.
"Override Active" is now displayed next to each asset CDN stat on a project's plan page for which we have manually set up an override for.
Asset CDN access is now refreshed when a project is reactivated, upgraded or downgraded.
19th October
Added a new "Relaxed" rate limiting option which permits 10 req/s with a 20 req burst.
6th October
Jump bar added to the servd dashboard
Made page headers somewhat more consistent between different sections of the dashboard
4th October
Started rolling out an update to how internal DNS is handled within our clusters. This should fix the occasional DNS lookup error we've seen when PHP attempts to connect to Redis or MySQL and make everything slightly faster as an added bonus.
3rd October
Updated all PHP base images with a patch for the libwebp RCE exploit. We don't believe it was directly exploitable within Craft projects, but better safe than sorry!
28th September
Updated PHP 8.1 and 8.2 base images to include avif encoding binaries and enabled avif encoding in GD
26th September
Rejigged the bundle select section of the dashboard with lots of good stuff:
11th September
Updated the way the PHP and Redis handle connection pooling. This should allow for faster connections between Craft and Redis and also reduce associated CPU and network latency overhead with these connections. Requires a new bundle to be built.
Updated the way PHP connects to the database to reduce the amount of internal DNS quries it needs to make, which will lead to faster database connections and a reduction in edge case errors related to internal DNS resolution. Applied on your next Sync.
25th August
Added the new Headers page 🎉
11th August
The atomic database imports setting is now enabled by default for new projects.
9th August
Introduced the new Troubleshooting section to the dashboard that contains useful links for resolving issues.
Added the ability to restart all project instances in case of emergencies.
25th July
Released an update to the mutex config included in Craft 4 projects to help prevent some deadlock errors when working on Entries with Neo/Supertable/Matrix fields. Included in bundles built after today.
21st July
Released the new Additional PHP instances addon.
29th June
It's now possible to create a new teams via the "Create a Team" button in the Team fly-out sidebar menu.
You can now find out the asset platform version your project is running on in your project's Assets page.
Project overview pages now integrate with our Status page to report any active incidents relevant to the project.
22nd May
Update to the Servd Plugin to fix some issues with asset syncs between the Asset Platform and Local Volumes
Fix applied for an issue with Asset Platform V3 which was incorrectly tracking asset storage levels when a project changed between plans
18th May
Added PHP 8.2 support
17th May
Adjusted nginx config to ensure that PURGE requests for clearing the static cache ignore any defined path redirects
Automatically exclude any Craft preview URLs (live preview or those with preview tokens) from the static cache
8th May
Relaxed the restriction on the task-runner that prevented multiple tasks of the same kind (e.g. syncing, creating a bundle) from being enqueued at the same time. This means that webhooks which are fired in quick succession will no longer get rejected if a sync or bundle creation is already in progress. They'll just get queued up and run sequentially instead.
25th April
12th April
Tweaked the way static cache exceptions work in order to remove an edge case bug when working with stand alone php files
11th April
Added some behind-the-scenes config to control whether the optimize step runs during clones, dump uploads and backup restores.
17th March
Added support for 'letterbox' image cropping to the Servd plugin
15th March
Added Node v18 to our list of available Node Build Step versions.
14th March
When checking a domain's DNS record via the dashboard domains page, we now look out for AAAA records that you may want to remove once you point you point your DNS towards Servd.
Renewal failure emails now contain info on project deactivation.
We now send emails to project members who have the project activity preference ticked when a project is deactivated due to non-payment.
9th March
Added the option to enable basic auth just for a project's servd.dev vanity domain. Can be useful if you want to prevent access to your site via that domain.
27th February
Fixed a race condition when cloning a database and bundle atomically that could lead to a small window where the previous bundle and new database are connected. Normally not a problem, but we've observed Craft 4 upgrades that would corrupt the plugin table data when this happens.
24th February
Fixed a bug that could occur if you started setting 2FA up, started doing something else, and then came back to finish setting it up.
22nd February
Added a fix for a crash that would occur when using an empty repo during the create project flow.
15th February
Reorganised the database connection details section of the "Access Control" page. It now includes the database name, which can now change when atomic imports are enabled.
13th February
Cloudflare DNS integration has been restored to the dashboard after a brief hiatus.
12th February
Fixed a crash that would happen when selecting node versions 16 and 17 in the create project flow.
7th February
Fixed a task runner crash when adding a load balancer addon.
Tweaked payment confirmation buttons so they disable after being clicked.
3rd February
Fixes for some atomic import edge cases.
1st February
Adjustments to networking permissions to further restrict unnecessary inter-cluster comms
Some more database connection changes ahead of atomic clones being released
30th January
Rolled out some back-end changes to support upcoming atomic database clones.
Tweaked some log collection configuration to prevent occasional crashes when dealing with massive log lines
Neatened up some billing code and added tweaks to cover a few more Enterprise-y use cases 🕴
27th January
New cluster, eu-west-4. Now broadcasting from a new data centre in Frankfurt 🇩🇪
Bug fix for displaying line items on invoices when a payment is < $1
Bug fix for failed audit log creation which doesn't fit in our database
🎉 2023 🎉
21st December
Fixed a bootstrap crash caused when a project's log component was defined as function instead of an array.
9th December
Fixed "Invalid Date" issue when displaying the SMTP credit top up date.
Plan page now displays all the unit prices of all the addons.
8th December
Added the ability for teams to get access to custom regions when creating new projects.
5th December
Updated the Servd plugin to allow the default image optimisation strategy to be changed. Before JPGs and PNGs were automatically served as WEBP if the browser supported it. Now this can be turned off, or changed to use AVIF by default, with a fallback to WEBP.
16th November
Trailing slash removal / addition redirects are now ignored for all POST requests and actions urls
Database connections are forced to use utf8mb4 to ensure Welsh flags 🏴 can make it into the database
9th November
Added gzip content encoding for JSON URLs.
8th November
Renamed "Background Task Isolation" to "Dedicated Queue Runner" across app.servd.host and servd.host.
Updated the dashboard's static caching and CORS sections to collapse when not enabled. This avoids confusion when the "Save" button is submitted in each of these sections, but the toggle is still turned off.
Reduced the number of dashboard sections that change height after their initial data is loaded. Should make navigating around pages less disorientating.
Added a few more section heading tooltips, that link out to the Servd docs.
7th November
Added a card to the overview Heads Up section that warns you if your payment card is expired.
Improved the Heads Up card links. They now generally take you to more useful places now,
4th November
Added the ability to update basic auth usernames and passwords
Different environments can now have different basic auth username and passwords.
3rd November
Updates to PHP base software to allow modular bundle builds. This allows us to create a collection of common modifications for bundles (like installing extra software) and then opt project in/out as required.
Updated nginx to treat BunnyCDN as a 'trusted' proxy service
PHP version updates to latest stable
1st November
Improved warnings, messaging and documentation around the dashboard Dev Mode setting.
31st October
Fixed bug that was preventing renewal failure emails from being sent.
29th October
Fixed the URL destination of the overview page "Renew Now" button that's shown in the Heads Up section when a renewal fails.
26th October
Fixed a bug that would clear a user's project permissions if they weren't a team manager.
19th October
Released Cross-Domain Redirects feature. You can now restrict path redirects to only kick in for requests to specific domains. E.g. if you have a multi-site with many domains, you might only want a redirect to activate for one specific domain.
17th October
Task logs can now be viewed in almost real time. So you can see what your bundle builds are up to.
Bundle build tasks can now be cancelled at any time from the Task Logs view.
Fix for a bug with static cache purging.
Fix for a bug which would reset video cdn settings upon project subscription renewal.
4th October
Added a new billing team permission. Team managers can now restrict access to billing information and billing email notification on a per-team-member basis.
3rd October
Released the new Overview and Metrics pages. 🥳 The overview page now displays a lot of high-level information about what's going on with your project.
26th September
The environment variables sections has been moved to its' own dedicated section, along with a few improvements to its' loading states.
21st September
A few tweaks to make Craft 4's fluent db config files work without making everything explode
18th September
Node build steps can now have environment variables set which are applied during both `npm install` and your build command execution
16th September
Added notification emails for projects which exceed their video streaming or asset storage allowances
5th September
Added an update to how Craft's mutex's are handled which should help to prevent some instances of database locks and unexpected behaviour when multiple users are editing related content
15th August
Improved handling of database storage resizing when running in cluster mode
9th August
Added a fix to the Servd Plugin for some missing session handler functionality in yii2-redis which should prevent a few session related bugs that we've seen appear in a few projects.
Fixed a bug which would cause problems with Craft 4 projects that had no composer.lock file checked into the git repo
29th July
Added some fixes to support Craft 4.2's new config files
7th July
Added a few various tooltip links around the dashboard to help explain bundles and backups.
http:// and https:// protocols are now stripped from domains when setting up an SMTP account.
1st July
Added a change to the import and clones tasks to only optimize the database that is being targeted.
30th June
Added the internal ability for server-level headers to be added on a per-project-environment level. Let us know if you're interested in this for your project.
20th June
Fix for logger bug with Craft 4 projects.
14th June
Added the ability to configure static file cache header values so you can set your CSS to cache for 1 year and save a few bytes travelling over the interpipes.
Added the ability to disable blocking of common vulnerability scan URLs (such as `/wp-admin` and `/xmlrpc.php`). It was a little draconian of us to assume you didn't want your Craft SP to use the `/wp-admin` prefix (you heathens...)
13th June
Rolled out database updates to all custom plan projects
Refactored billing code (about time). It will now batch multiple renewals for a team on the same day into a single payment and invoice. Less paperwork 🙌
Upgraded ingress load balancers in all clusters to latest stable
Fixed a couple of SSL cert bugs which were impacting one cluster. This should ensure that all servd.dev vanity URLs now have a valid SSL cert in use.
Lots of necessary behind-the-scenes changes to get everything lined up for the next big cluster software upgrade
2nd June
Updated the Domains page to allow free text, whole-domain redirects. You can now redirect to a path or an external domain
26th May
Plugin updates to prevent accidental rehydrations of objects in dynamicInclude contexts
New base images for PHP
23rd May
Rolled out some database updates for new projects to reduce the risk of OOM errors
20th May
Added the ability to force all outbound traffic to use a static IP address, allowing projects to be whitelisted for access to 3rd party APIs.
18th May
GitLab invalidated all of their access tokens. Hilarity ensued.
16th May
Began rolling out some changes to project databases, including general updates, memory management and pre-OOM monitoring to ensure clean shutdowns. Updates will be rolling out gradually to all projects.
13th May
A few fixes here and there for background stuff
Fixes to the Servd Plugin for Craft 4
A few changes to make Advanced Log Output work well with Craft 4
12th May
Added 'deferred payments' which includes the option for projects to pay via invoiced bank transfer. This is available on request for projects on annual plans.
Changed the 'Asset Platform Storage' addon to 'Asset Platform Boost' and included additional file downloads and video streaming bandwidth within the same cost.
Fixed a bug which was randomly giving project renewals a 10% discount (!!!) Don't worry, we won't try to collect the difference 😆
We changed accountants and had to rewrite some of our Invoice automations. This will make no difference to you, but it makes me happy.
This website has been updated to Craft 4!
5th May
Fix for hanging database imports, caused when an SQL error occurs for large database dumps.
4th May
Gave the environment redirects section a spring clean. Redirects are now editable, contain a bit better validation to avoid nginx crashes and have better loadings states.
Fix for bug that occurred when deploys move from one server to another.
28th April
Two factor auth code input now autofocuses.
27th April
Task runner updates to reduce information sharing between different components
26th April
Added anchors to documentation headings to make it a bit easier to link to specific bits of content on longer pages.
Added the ability to clone assets from local using the clone environment dashboard tool.
24th April
Added a "Repair Database" button to the dashboard "Build & Deploy" settings section. Occasionally we see project database CPU usage max out after the db schema is updated. Running the database repair task performs `mysqlcheck -o` under the hood, which resolves the high CPU usage.
Fixed a bug with the bundle deploy activity items which resulted in the wrong bundle name being rendered.
20th April
Fixed an error that occurred when a 3DSecure card auth challenge is triggered during a plan addon purchase.
Servd plugin v2.5.4 release.
19th April
Added the ability to delete bundles. See the resolved suggestion for more details.
18th April
Added an email confirmation step during sign-up. New users will have to confirm they own their address before they can create projects.
Blocked disposable email addresses from being used for new users.
13th April
Video is now supported on the Asset Platform, it's just a plugin update away
Fixed a regex bug when Servd is set to 'add' trailing slashes which was causing an additional, unnecessary redirect to be returned.
9th April
Some initial changes to how images are stored on the Asset Platform which should allow us to vastly increase the cache miss image TTFB in the US. Further updates for this coming over the next few days which will actually start making an impact on user-facing requests.
Improved handling of the situation in which a user has access to a team, but not any projects within that team.
Added a null state to the project overview page 🤷
4th April
Started grabbing screenshots of projects to display on the project dashboard pages.
31st March
Released v1 of the new projects dashboard page!
Fix for error when authenticating with Bitbucket.
23rd March
Added several "helper" dashboard URLs that will redirect users to the URLs of their last used team and project. E.g https://app.servd.host/logs will redirect to the logs page of your last used project.
22nd March
Added the "Activity" navigation button to the dashboard sidebar.
21st March
When setting up webhooks, you can now specify how your branch name gets matched. The default is "it should match exactly" but there's also options to match against the start/middle/end of the branch name should you want to auto-deploy on a specific branch prefix or suffix.
We've now begun tracking important project events for the new upcoming "Activity" page. This'll help your team understand what's been going on with your project recently, and should help us provide better support when you need it. 🤝
17th March
Advanced Log Output is now available to be enabled in the Servd Dashboard. This allows us to parse your Craft logs so that we can display them nicely in the Servd Logs viewer and it'll let us do some other fun stuff later down the line.
16th March
Released manual backups. Now you can create full backups whenever you like. No more need for emergency trousers when performing a large Project Config update! 👖
7th March
Now only users who have access to projects will receive billing emails (e.g. renewal success/failed emails) about them. Previously, everyone in the team which owned the project would receive them, even if they didn't have access to the project. 🙈
Introduced "Project Billing" contact preferences in the User Settings section. This allows you to specify if you want to receive billing emails for specific projects.
Added a fix for an nginx config bug which would occasionally break static files for CP logged in users when static caching was enabled.
4th March
Launched the eu-west-3 cluster.
Made a change to our task runner that will prompt it to fall-over to another mirrored, off-gitlab repository should gitlab.com ever be down in the future. Fortunately, this means the task runner won't be impacted by future gitlab.com outages.
1st March
A tiny tweak to subscription renewal logic to allow us to process more renewals in fewer batches
28th February
Further experimentation with timeouts on the Servd Task Runner
Fixed a bug related to the recent multiple queue runners update which spawned more queue runners than expected
26th February
Log filter dropdown is now sorted alphabetically.
When changing the log filter dropdown, it updates the URL with a query parameter. This can be shared to allow others to immediately see a filtered view of the log data.
24th February
Made the number of queue runners configurable.
21st February
Rolled out a new database build with MariaDB 10.6 for new projects. Existing projects will be updated in batches during maintenance windows as it'll cause a few seconds of downtime.
18th February
Added a fix for listing BitBucket repos during the Create Project flow. Their API doesn't paginate properly (just returns the same results on every page) so we were ending up in an infinite loop of API requests. We now just do a single call for the 1,000 most recently updated repos in your account.
Enabled registrations from South Africa.
17th February
Initial release of PHP 8.1 (Beta for now because it's missing our New Relic integration)
Added a fix for git repos hosted on Azure which were failing to pull because Azure only support a single, deprecated encryption algo for SSH connections (wat?)
16th February
Added a 2 hour timeout for all tasks that are run by the task runner, tasks that reach run past this limit will automatically exit.
15th Feb
Added Asset Platform usage tracking to the Plan page in the dashboard. We'll be revealing more about this soon.
Added a robot to our live chat during out of hours periods. He's currently a bit simple, but we're all hopeful he'll eventually develop into a successful member of the team.
Reinstated this ChangeLog page (so meta)
Launched new 'Solutions' pages so you can hopefully be convinced that Servd is good
Made some changes related to BlackFire and NewRelic integrations. These still need a little bit of testing, but they're gonna be 🔥
6th August - 15th February 2022
We got busy and neglected the changelog, so here are some highlights:
New cluster, us-east-3
There's a new Feature Suggestion page in the dashboard where you can, suggest, features...
We've added the ability to manage you contact preferences on the User Settings page, so you can choose which teams and projects you get updates for.
2 factor auth has arrived! Always best to be protected. You can set it up on the User Setting page.
We've added an SMTP service to our offering. Get 200 free email sends per month. If you've connected your Servd project to CloudFlare, we'll even set up all your DNS records for you so you don't end up in the dreaded SPAM bin.
When creating a new project, you can now specify your own project slug! But we still provide a suggestion based on the classic approach - we're still waiting for long-cat (is long) to appear.
A new Plan Addon to get yourself a Development Environment. This works in exactly the same way as your staging and production environments, but is optional.
Bundles are now tagged with the Craft version that they contain. We also make a sneaky note of your other composer package versions for a yet-to-be-announced feature 🤫
We've updated our base software a bunch of times to get all the latest PHP fixes available for you.
The Servd Plugin has had some work done, and now looks younger. It can force FeedMe to log to the main Log Output instead of insisting on writing to the filesystem. It has a much improved system for purging the static cache. Loads of improvements for `{% dynamicInclude %}` tags.
The Logs viewer has been completely rebuilt and is now actually quite good. More updates for this coming soon...
6th August
Fixed a bug which allowed subscribed projects to be transferred to teams with no billing info set.
Improved handling of 3rd party git repo connections when removing users from teams.
2nd August
Replaced the mechanism used to perform asset clones when using the Clone Environment functionality. This should now be much (much) faster to complete in the majority of circumstances.
30th July
Volume discounts for Teams with 10+ subscribed projects
Fixed a bug which would reset a project's name when the repo or connection type was updated
Deployed an update to the Servd Asset Platform to allow images to be streamed through the CDN layer, rather than buffered. This should increase performance of image loading for larger images.
23rd June
Bitbucket API connectivity to speed up listing of commits when building a new bundle
22nd June
The behaviour of trailing slashes on URLs is now configurable
11th June
Fixed a couple of bug in the Servd Plugin and released 2.3.1
8th June
Removed a few nginx rules which were preventing legitimate traffic for working as expected
Fixed a bug which could prevent deployments from succeeding if no bundles at all had been selected for deployment
7th June
Cleaned up log output from Run a Command in the dashboard
Added a new cluster: eu-west-2
25th May
Fixed another bug related to addons carrying over during subscription renewals
24th May
Fix for maintaining plan addon status during renewals
Pagination for invoices on billing page
Changed the project deletion warning email to dispatch 4 days in advance instead of 2 in case emails are delivered on a weekend
Lots of database optimisations for upcoming migration from MariaDB to Percona Cluster
20th May
Updates to dashboard styling to help prompt for project Sync changes and added some sticky breadcrumbs to help with general navigation
19th May
Release of private IP and load balancer addon + a few namespacing fixes for it too
16th May
Fixes for header handling when using ESI sub requests
3rd May
Released direct integration with CloudFlare allowing projects to manage their DNS records directly within the Servd dashboard and get (almost) zero-config DNS hosting and DDoS protection.
28th April
Set the default version of Composer to 2 for all new projects. This should help to avoid errors during the first bundle build.
Released 'Addons'. The ability to add additional features to your base plan. Starting with additional asset platform storage.
26th April
Updated the Servd plugin to purge the static cache for all URLs related to an Entry, not just the one for the default site.
25th April
Updated Composer to the newest version to remain compatible with GitHub's new oAuth token format
Added Cross-Origin-Resource-Policy headers to images coming from the Asset Platform's optimiser which allows these images to be accessed within JS code.
25th March
Reorganised storage for backups and temporary file uploads. This is step 1 towards improving the compatibility of the asset platform with additional S3 tools (like Transmit)
Added reminder emails for projects which are about to renew on an annual subscription
Fixed a bug in the Servd Plugin which prevented non-admin users from performing manual Cache Purges
23rd March
Allow spike protection in 6 and 12 hour periods for projects which only require a short bump in resources
Fixed logging output on Spike Protection servers
21st March
Released local development tools and associated platform updates
19th March
Fixed a bug with rate limit calculations which was limiting some users unnecessarily
10th March
Released functionality for direct shell access into running containers
5th March
Released Spike Protection feature which allows scaling any project up to a large server for a 24h period to handle expected traffic spikes
20th February
Reorganised the main nav bar in the dashboard and made team switching a bit more obvious
Added the ability to add avatars to teams so it's super clear which team you are currently using
Moved the 'Invite a Client' functionality to its own page because it was confusing when nested within a specific Team's settings page
Fixed a few bugs related to team and project selection states
Added docs link to nav bar
19th February
Updates to allow projects to be moved between teams so you can transfer existing projects over to client accounts
18th February
Static site backups (you don't know about these yet) can now exclude domain names from file keys
Projects with database read replicas now restrict the use of those replicas to only the main PHP containers. Queues, crons and post-deploy tasks now use the master DB exclusively because they sometimes do things in parallel that are impacted by replication lag
Final tweaks to allow projects to run additional environments if they're included in their custom plan
Fix an issue when reading git commit history from repos using a manual repo connection when it contained a tag with the same name as a branch
Improved database export speed when performing environment clones
Ensured post-deploy tasks only execute when an environment's bundle has actually been changed
12th February
Fixed a bug which prevented the webhook settings from displaying properly for newly created projects
10th February
Many more updates to the Servd Plugin to help with more efficient static caching and purging
PHP 8 base images made available. Currently in beta but are working fine on several projects
Fixed a bug which would cause the Sync required button to not change after saving path redirects
Altered the post-deploy tasks logic so that they only run for a specific environment if the bundle deployed to that environment changes. This prevents caches being cleared unnecessarily
5th February
Fixed an issue which could cause session data to be cleared during deployments under certain conditions
Updated ProxySQL which is used as the router for external database connections in order to fix an issue with MySQL 8 charsets
3rd February
Many changes to the Servd plugin to improve the performance of static cache tagging against URLs
2nd February
Fixed a bug in the Servd Plugin which was causing errors due to use of a deprecated function
Improved memory management for static caching components
Finished setup for new cluster us-east-2 which will operate alongside but independently from us-east-1
Fixed a bug related to GB VAT numbers (AKA, the Brexit bug)
29th January
Prevented duplicate cache exceptions which would cause nginx to panic and continually restart.
Allowed cache exceptions to have a trailing slash which can be used to match subpaths of a particular segment value but not the segment value itself.
Added support for Composer 2 during the bundling process. Composer selection box can be found on the Project Settings > Build & Deploy page.
28th January
Updated the build process for PHP base images. It now uses a fancy matrix build in GitLab CI in order to generate different PHP versions mixed with different Composer versions 🕴
Improved the method by which the bundling process decides whether to try to install the `yiisoft/yii2-redis` package.
Improved log output for composer operations during bundling.
Dashboard update to allow configure static cache skip for logged in users.
Added manual static cache purge buttons to Entry page in the Craft CP when the Servd plugin is installed.
27th January
Added logic to make the static cache skip for logged in users optional. Pending dashboard update to add a switch for this.
Fixed a bug with database import error output.
Added some cleanup for imported SQL dumps which contain properties which require SUPER privileges.
26th January
Released an update bundle build process which should make builds faster moving forward.
Added the preliminary work for streaming task log output.
Removed the annoying 'TTY' error from the 'Run a Command' output.
Preparatory work for upcoming cluster upgrades.
21st January
Fixed a bug which allowed arrays to be passed from the dashboard as enumerated objects by some browsers. No idea which browser or why, but now it can't.
Released Servd plugin v2.1 which contains support for tag-based cache invalidation. URLs are tagged with the ids of the Craft elements which are used to populate them and when any of these elements is updated the cache for the URL is purged.
18th January
Improve response format from endpoints which the Servd plugin communicates with
13th January
Allow CORS headers to be added and restricted to specific origin domains or request paths.
12th January
Added some default headers to nginx to improve XSS security.
11th January
Added a fix for projects which include a `craft` cli script file in their repo with windows line endings. These are now converted to unix during the bundling process to prevent it causing problems when deployed to the platform.
10th January
Allow projects to have 2 webhook targets to allow automated deployments from 2 different branches. We advise you only use this if you also use fast-forward branch merges to ensure exactly the same commit (and therefore Servd bundle) is used by both branches.
Added webhook support for Azure DevOps.
7th January
Fixed a bug introduced with Nginx R13 which changed the way user who are logged into the Craft CP are treated by the static caching layer.
6th January
A hash representing the bundle version which is currently deployed is now included as the environment variable `SERVD_BUNDLE_HASH`. You can make use of this to perform cache busting of any compiled assets which are baked into the bundle.
Released Nginx (R13) which is a complete rewrite of the nginx configuration. This will allow additional functionality as described on the Base Software Versions page
Fixed a couple of buttons in the dashboard which were supposed to open the live chat but didn't. Now they do.
5th January
The Servd plugin now allows URLs for files and images stored in the Servd Assets Platform to be fully customised using placeholders for specific URL segments.
A project's `.git` folder is now included in any build tasks which allows node modules to grab commit info and use that however it likes.
🎉 2021 🎉
14th December
Assets within the Servd Assets Platform can now have their cache busted from within the Craft Control Panel - just look for the big red button. (Servd Plugin v2.0.3)
24th November
Increased the connection timeout for mysql which could be hit by exceptionally long running background tasks
Tweaked some settings which determined where and how database backup tasks would execute
20th November
Static cache default TTL is now configurable
18th November
Launched new support tickets system with enhanced on-call alerting system for Enterprise projects: http://support.servd.host
Switched out old live chat for a new one (both this and the new ticket platform are from Freshdesk)
Launched new status page: https://status.servd.host
Fixed a UI bug when showing/hiding passwords in the dashboard
12th November
Released Servd plugin v2. A complete rewrite which also adds support for using ImagerX and Image Optimise with the Servd assets platform
11th November
Fixed a bug which could prevent cron jobs from executing to completion
4th November
Improved error messaging related to use of a single github/gitlab account and multiple Servd accounts
Allow users to detach github/gitlab accounts from their Servd user
2nd November
Fixed a dashboard bug which truncated imported environment variables by a single character
Improved loading state indicators during bundle creation
27th October
Improved cleaning of env vars added via the dashboard
22nd October
Rolling out improvements to the deployment process which ensures updates which do not contain any Craft migrations are truly zero-downtime. Previously they could cause a few seconds of 502 errors
Updated the build process to cache node_modules by default and do a few other things to speed up the build process in general
Added the ability to include environment variables within the node build step (UI pending, drop us a message if you need to use this in the mean time)
Improvements to the base nginx config which allows for a higher overall connection throughput
Moved all docker images (of which there are many) away from Servd's custom docker registry and onto Docker Hub, reducing the number of platform components we need to keep updated and maintained
11th October
Improved handling of Craft config files. Things no longer break if you have a multi-environment app.web.php file 🐳
8th October
Allowed users in Switzerland to register for an account.
Moved all project bundle storage away from a custom docker registry and onto docker hub which should prove to be more reliable and more cost effective.
30th September
Fixed a bug which could occur during database import if the SQL contained either a `CREATE DATABASE` or `USE` statement, or tried to use an unsupported collation from MySQL 8.
28th September
Increased the default read_timeout for Servd's ingress proxies. This prevents the connection being dropped prematurely when a PHP process outputs absolutely nothing for a long time. Sometimes they're just shy and we should all be a little more patient
Fixed a bug related to showing error messages when Stripe returns generic errors during billing actions
Fixed a bug related to drag + dropped .env files which had particularly interestingly formatted contents
23rd September
You can now drag and drop .env files into the dashboard in order to fill out environment variable during initial project creation or afterwards, because your day rate is to high to justify spending time copy + pasting
22nd September
Changed the method used to validate DNS records which should help to decrease the propagation time required during existing site transfers
Removed domains limitations from plans. You can now have all the domains you want
Added a hint to the plans and pricing page to make it clear that a plan applies to a single craft installation
18th September
Added ROOT_PATH and WEB_ROOT_PATH default environment variables to all projects because they're often needed and they're constant.
Updated the dashboard and create project flow to include these fixed env vars along with improved error messaging related to reserved env var names
10th September
Began moving projects over to a new database organisation which will allow for horizontal database scaling
Updated the image optimisation proxy code to allow for webp images
Fixed a bug with external database connections which would break when projects were re-deployed after initial enabling
Improved deployments so that if no changes have been made to a specific environment, it won't cycle its containers
Added better support for `db.php` files which contain multi-environment array keys
Fixed a bug which would impact projects that had a custom maximum assets storage value
Improved handling of assets during backup restorations. Previously this could return an error if a large number of files were being restored, even though it had actually completed successfully
28th August
The Servd dashboard now remembers the last team and project you were working with and defaults to that when you log in ensuring it doesn't default to an arbitrary team and project.
25th August
Added the ability to disable automated static-cache clears by the Servd plugin when entries are saved.
12th August
When building bundles the task runner will now check to see if `yiisoft/yii2-redis` is already included in `composer.lock`, if so it won't try to install it. This allows project owners to add the redis package to their project during local dev and speed up bundle builds by at least 30s. It also avoids occasional out of memory errors which composer might experience whilst trying to install redis from scratch.
6th August
Added the ability to replace the image optimisation domain in the assets plugin. Now you can proxy requests through a cloudflare worker in order to use your own domain.
5th August
Fixed a bug with image resizing which resulted in cropping when requested images were wider than 3000px (width was constrained but height was not adjusted to compensate).
Trying to optimise or resize animated gifs usually breaks, so now the Servd assets plugin will respect Craft's `transformGifs` settings. Setting it to `false` will use the original image in all circumstances, even if a transform is provided.
3rd August
Additional tweaks to ImageMagick configurations to prevent it from using both too much memory (causing 502's) and too little memory (causing weird image artefacts). Hopefully we've found a good middle ground now.
2nd August
Updated ImageMagick libraries and fixed a bug which could result in a 502 error when large images were uploaded
Released accompanying PHP base images (R7)
29th July
Released new Nginx base image (R10)
28th July
Release new PHP base images (R6)
Updated task bar styling in the dashboard so that task errors in particular are more obvious
27th July
Fixed a few bugs in the affiliate system
25th July
Set a new affiliates system live. Let us know if you'd like to be a tester for that.
Updated this site to Craft 3.5
24th July
Released v1.3.3 of the Servd Assets and Helpers Plugin which fixes a bug when creating new empty subfolders in a volume
21st July
Added an integration with Bitbucket webhooks. Docs updated here
20th July
Added a generic page builder to the servd.host site to allow creation of some service comparison pages. The first of which is Servd vs Laravel Forge
18th July
Added some CPU usage and inbound request graphs to the dashboard 📈
Also consolidated the info pages from each environment into a project overview page. It's similar to something we had previously, but a bit different, and with graphs. Getting the dashboard UX right is hard, ok?
17th July
Released Assets and Helpers plugin v1.3.2 which fixes a bug preventing asset's filenames from being updated
12th July
When a project is deleted its custom domains are now cleaned up properly to allow them to be associated with future projects
11th July
Improved error handling and retries for Task Runner tasks which fail to schedule for some reason. This should prevent tasks getting stuck in a 'working' state forever
10th July
Added a VAT reverse charge notification to relevant invoices. Software isn't all glamour.
Switched global load balancing from round-robin to ewma
Released Nginx (R9) which ensures the proper protocols are used in redirects for trailing and duplicate slashes
8th July
Fixed a bug which prevented clean deployments when both a cron job and a custom license file were defined on a project
5th July
Projects can now be attached to new repos or their connection method changed via the dashboard. This is useful if you change the name of a repo or stop using the API token which was used during initial project creation
28th June
Some updates to servd.host to make things look nicer and improve the plans and pricing information
Fixed some race condition issues with assets when performing environment clones
Fixed a bug with asset clones on the new Assets Platform introduced by a change to a dependent service
15th June
New assets platform goes live! 🖼️ This is no longer hosted on AWS, has a better caching strategy for transformed images, has cleaner URLs, is protected from abuse using security tokens and supports auto-detection of webp (which will be used for all images expect gifs).
12th June
Tweaked the way in which one-off and scheduled commands are executed to ensure there are no permissions issues with files or folders that they create
Implemented a behind the scenes mechanism which allows individual plan features to be tweaked on a per project basis
5th June
Added page titles to the dashboard! Now your browser's back menu might actually be useful
4th June
Tweaked a regex in the CI upload script which was excluding anything with `vendor` in its name, instead of just the `vendor` folder
Started inviting users to use Servd's built-in CI functionality, allowing projects to compile their static assets as part of bundle builds, because CI shouldn't be hard
26th May
Fixed a bug which could cause files with specific prefixes to not be included in new bundles
Database imports, backup restores and environment clones now show a confirmation dialog before proceeding. Safety first
25th May
Fixed a bug which could prevent asset files with multibyte characters in the filenames from being cloned between environments
22nd May
Has it been that long since the last update?! Things must be reassuringly stable...
Our log aggregation framework has been completely replaced, you can no longer free text search in recent log entries but...
You can now download your recent logs in a handy zip file
You can plug your logs into Papertrail or Datadog to get them pushed out to those platforms in real time
A new nginx revision is available (R8) which changes the logs to a more standard format. This should help with parsing by external services. It also prevents requests for `favicon.ico` being passed to PHP and wasting CPU
We began rolling out a new bundle build process which (for anyone interested) uses the fancy, new `buildkit` platform rather than `img` which we were previously using. This is in preparation for an exciting new feature which has been in the works for a couple of months. It's also significantly faster
Fixed some email copy which was outputting template tags instead of replacing them with real values. Only a real #{{ $profanity }} would let that kind of error reach production 🙄
You can now trigger the build and deploy webhook manually. Not only that, but you can also supply a tar archive of a craft application to use instead of pulling files directly from your git repo. This allows you to compile CSS and JS (or do whatever you want in any CI pipeline) and then push the results to Servd.
Fixed a bug in which not all repository branches were displaying during the create project flow
1st May
All new bundles are now auto-upgraded to the latest PHP and Nginx base software to make sure everyone can use all of Servd's new features and get security patches and important things like that.
PHP version selection (7.3 vs 7.4) has been moved into Project Settings so you don't have to click past it every time you build a new bundle - it hardly ever changes
The option to change the path for Craft within your git repo has been moved to Project Settings for the same reason - it never changes
Bundles are now built to include all of the contents of the Craft path within your git repo. This means you can include arbitrary files and folders in the same directory that houses your `composer.json` and they'll all end up in your bundle.
Many dashboard updates to support all of this new functionality, especially New Project setup which is now even friendlier! 💖
27th April
Released a new feature to allow both scheduled task execution and one-off execution of Craft CLI commands. Now you can garbage collect via the dashboard.
Many behind the scenes updates related to scheduling and resource allocation. Shouldn't be anything that you need to worry about though 😉
11th April
Allowed a /migrations folder to be included in bundles to allow custom migration scripts to be automatically executed during deployments
Domain names can now be associated with any environment so you can use 'staging.mysite.com' for your staging environment 🍾
8th April
Fixed a bug which showed 404 pages for projects which had exited a trial instead of redirecting to the 'Plan' page in order to prompt the user to extend or upgrade
Show the selected team and project in the sidebar on 404 pages if they are set in the URL structure
7th April
Began rolling out new CPU scheduling logic. Projects are able to use any available CPU time in the cluster to process user requests. CPU contention dials a project back down to its guaranteed resource limits.
2nd April
Big Dashboard reorganisation + cosmetic updates
Dashboard updates for IP white/blacklisting
Added controls for request rate limiting
Allowed static cache exceptions to be defined per-environment
28th March
New (much better) project deployment mechanism which incorporates updates for:
IP blacklisting
IP whitelisting
Scheduled tasks
Domains for staging environments
Dynamically provisioned additional environments
(Dashboard updates pending)
Significantly improved dashboard responsiveness
Allow users who are invited to a team to bypass GeoBlocking
Vastly improved log output for bundle creation tasks
16th March
Activated drip emails for new users
Cleaned up some unfortunate words in the project name generator
Fixed a bug which wouldn't keep external database access consistent when environments were enabled or disabled
13th March
Revamped transactional emails
Changed transactional email provider to AWS SES (previously Mailgun)
Created basis for a new drip email tutorial series for newly subscribed users
8th March
Initial support for arbitrary scheduled tasks (aka cron jobs)
19th February
Update project nginx containers to openresty to allow more advanced traffic routing logic
Improved static caching in preparation for fine grained static cache busting
Initial work on storage for manual database backups
12th February
All domains associated with a project now generate their own self-signed SSL certificates, no DNS needed. This allow Full encryption mode on CloudFlare without having to validate domain names in advance (very useful for existing site migrations)
10th February
Domains can be linked to projects before DNS records are created (so you can test using /etc/hosts entries) but SSL will not be enabled
Once DNS records have been validated SSL will be enabled and auto-https redirect will be enabled
You can now redirect from one domain to another (Requires Nginx 1.15 v1.0.24)
Fixed a randomly occurring issue with the Task Runner in which some tasks would fail, especially project syncs
6th February
Updated timeouts for detection of stalled instances to prevent VERY busy projects being killed unnecessarily. This was only causing problems during intense static site builds, but now it won't cause a problem anywhere.
19th January
Added free text search to repo list during project creation
Lots of docs + some demo videos 👌
18th January
Better dashboard response for environments which become disabled once a subscription ends ⛔
Improved task runner task isolation and cleanup routines
16th January
Added management for Composer authentication tokens
11th January
Added backup and restore functionality for postgres
10th January
Added V1 postgres support for enterprise clients
Reconfigured background queue runners for Enhanced and Pro plans
7th January
Added yearly billing plans 📅
5th January
Made a few tweaks to costs and features of plans
Added a new Plans and Pricing page to the marketing site
Updated styling for plan selection boxes throughout
A few task runner tweaks to improve task pickup speed
3rd January
Added a new demo video to the servd.host homepage
🎉 2020 🎉
31st December
Attach invoices to payment notification emails 💌
Allow billing notifications to be sent to additional email addresses (so your billing department can get a copy of invoices)
30th December
Allow users to update their name, email and password
Finally added a logout button
16th December
Deployed new, super-scalable, task runner infrastructure
Fixed a bug when creating a new project from a repo which has no 'master' branch
12th December
Added git to base images to allow composer to pull repo dependencies
Fixed a bug which caused webhook builds to use old base images
10th December
Release updated image optimisation service. This no longer gets upset about large result images
Warn users about projects which are approaching their deletion threshold (28 days inactive)
Automatically delete projects' data and assets when they reach their deletion threshold
4th December
Refactored network segregation
2nd December 2019
Added location selection to project creation flow to allow use of new US cluster in New York 🗽
Released PHP 7.4 base image
27th November 2019
Added permissive CORS headers to the Assets Platform CDN
Updated the Assets and Helpers Plugin to support image focal points and better match the crop/resize behaviour of Craft transforms 🖼
25th November 2019
Webhooks V1 released with support for GitHub and GitLab. Allows bundles to be created in response to push events on a specific branch and optional auto-deployment to a selected environment 📦
More assets documentation
22nd November 2019
Released client invites! This allows developers to invite their clients to Servd via a simplified onboarding flow which helps them to register, create a team, set up billing and invite you as a member of their team. No need to chase clients for hosting costs any more 🎉
Lots of Assets documentation
20th November 2019
Tweaked CPU throttling and PHP settings to better support bursts of traffic from static site generators
19th November 2019
Fixed a bug which occurred when bundles were built from a commit with an extra long commit message
18th November 2019
Made basic auth a configurable, per-environment setting because it doesn't play well with GraphQL which requires a Bearer token in the Auth header
17th November 2019
Fixed a bug when recording project hits and unique ip addresses. This should start showing something sensible now
16th November 2019
Updated all platform software
Improved resiliency of database storage
15th November 2019
Tracked down a 3rd party bug which was causing databases to be restarted during large SQL imports. Added temporary workaround until an upstream fix is available
Increased default database storage space to 5GB
14th November 2019
Fixed a bug which could appear with certain combinations of linebreaks in commit messages
Increased maximum DB upload filesize
Added a progress indicator to database uploads
Create some troubleshooting documentation for Git Submodules
13th November 2019
Released multi-member team support. You can send invites to new members via the Team Settings page. All team members will have access to all of the projects owned by the team
Teams can now be renamed so you can express yourself more readily
12th November 2019
10th November 2019
Significant updates to cluster scaling and headroom allocation decision making
9th November 2019
Released multi-currency support. You can now pay using 🇬🇧 GBP, 🇺🇸 USD or 🇪🇺 EUR. A default is selected based on your location during registration
Fixed a few SFTP bugs for assets
A few style tweaks
Use newest logo in email headers and on invoices
5th November 2019
A few cosmetic changes to the project overview page
Updated styling and functionality for the environment bundle selector
4th November 2019
Changed the way environments are managed in the back end which will allow for dynamic environment provisioning in a future update
2nd November 2019
Released backup restore functionality. Allows rollback of database, assets, application commit and software versions as a single operation. (This feature is awesome)
Applied updated sliding-panel styling to domains list
31st October 2019
Released improved backups system and interface
30th October 2019
Fix for invalid backup scheduling parameters
Tweaks to default database memory allocations
Prevent import operations before a project has been successfully deployed for the first time (database needs to be initialised before we can import into it!)
Added `.gzip` to list of allowed file types for database imports
Improved database import error messaging
Create default assets directories within assets platform on project initialisation
29th October 2019
Fix for trial ending notification emails not being dispatched
28th October 2019
Released PHP base image v1.1.0 which includes a fix for CVE-2019-11043
More private beta emails sent out
Default deploy SSH key length changed to 2048 to appease BitBucket overlords
Fix scheduling for projects with a weekly backup schedule
Require explicit confirmation of intent to delete projects
26th October 2019
Upgraded all clusters to K8s 1.15 (experienced 10 mins downtime due to non-optimal PV movement between nodes)
Created Create New Project documentation
25th October 2019
Craft's 'modules' folder is now optional in directory mappings
Improved email template header
Removed a default setting of 'craft_' from the DB_TABLE_PREFIX environment variable
Improved log rotation on some supporting servers
Improvements to domain instructions and error messages
Created SSL documentation
23rd October 2019
First Private Beta emails sent out