All Posts

How Web Agencies Can Simplify Client Hosting and Server Management

Posted by Rick on August 3rd, 2026
web-agencies-simplify-client-hosting-(1).jpg

Hosting client websites can be a useful source of recurring revenue for a web agency. It also gives clients one place to go when something goes wrong, rather than leaving them to deal with a hosting company that knows nothing about their website.

The difficulty usually appears as the number of clients grows.

A handful of websites can be managed with saved SSH connections, a spreadsheet and a few calendar reminders. Once an agency is responsible for dozens of websites across multiple servers, that informal approach becomes harder to maintain.

Developers need access. Freelancers come and go. PHP versions change. SSL certificates expire. Disks fill up. Background workers stop. Someone needs to know which provider account owns each server, where the backups are stored and what will happen if a client leaves.

A manageable hosting service needs a repeatable system. This guide covers the areas agencies should standardise, from server ownership and developer access through to deployments, monitoring, backups and billing.

Decide who owns the server

Before setting up a server, agree who will own the account with the infrastructure provider.

There are two common approaches.

The client owns the server account

The client creates the account with the cloud provider and pays the infrastructure bill directly. The agency is then given access to configure and manage the server.

This arrangement can make offboarding easier because the client already owns the infrastructure. It also keeps the provider contract and billing relationship between the client and the provider.

The downside is that the agency may need to work across numerous provider accounts, each with different login details, billing contacts and security settings.

The agency owns the server account

The agency creates the server within its own provider account and includes the infrastructure cost as part of the client’s hosting fee.

This gives the agency more control over provisioning, billing and technical standards. It is often easier to manage when the agency hosts a large number of smaller client websites.

However, the agency also becomes responsible for keeping accurate records. It must be clear which servers, backups, IP addresses and other resources belong to each client.

There is no single correct model. Some agencies use client-owned accounts for larger projects and agency-owned infrastructure for smaller managed hosting packages.

Whichever approach you choose, document it in the client agreement. The agreement should explain:

  • Who owns the server and provider account
  • Who pays the provider invoices
  • What happens if an invoice is not paid
  • Whether the client can request direct server access
  • What happens to the server when the contract ends
  • How long backups are retained after cancellation
  • Whether migration work is included during offboarding

Unclear ownership causes avoidable disputes, particularly when a client decides to move to another agency.

Standardise the hosting stack

Allowing every project to use a different operating system, server provider and deployment process creates unnecessary work.

A standard stack makes troubleshooting quicker and reduces the amount of specialist knowledge the team needs to retain.

An agency might standardise on:

  • One or two preferred cloud providers
  • A supported Ubuntu LTS release
  • Nginx as the web server
  • A defined set of PHP versions
  • MySQL or MariaDB for databases
  • Redis where application caching or queues require it
  • Git-based deployments
  • Supervisor for long-running processes
  • A consistent backup service
  • A standard monitoring and alerting setup

There will always be exceptions, but they should remain exceptions. A new framework, database or server configuration should be introduced because the project requires it, rather than because an individual developer happens to prefer it.

It also helps to define a naming convention.

A server named production-1 may make sense when it is created, but it becomes less useful once the account contains fifty similar servers.

Include information such as the client, environment, purpose and region:

acme-production-web-uk
acme-staging-web-uk
example-production-database-eu

Use the same naming approach for provider instances, ServerAuth records, monitoring services, backup jobs and internal documentation.

Avoid putting every client on one server

A single large server may initially seem cheaper than several smaller servers. It also creates a larger failure domain.

If the server runs out of disk space, suffers a configuration problem or requires an urgent reboot, every client on it may be affected. One busy website can also consume resources needed by unrelated clients.

Separate servers are particularly sensible when:

  • The client runs an important ecommerce website
  • The application handles sensitive information
  • The website receives unpredictable traffic
  • The project has unusual software requirements
  • The client requires a specific region
  • The client needs direct access to the server
  • The website has a separate staging environment
  • Downtime would have a significant business cost

Smaller brochure websites can still share infrastructure, provided they are isolated properly and the server has enough capacity.

Each website should have its own system user, database and deployment credentials. File permissions should prevent one website from reading another website’s files. A compromised application should not automatically give an attacker access to every other client project on the server.

Keep an accurate server inventory

Every agency offering hosting should maintain a central inventory of its infrastructure.

For each server, record:

  • Client name
  • Provider
  • Provider account owner
  • Server name and IP address
  • Physical region
  • Operating system and version
  • Server purpose
  • Websites hosted on it
  • PHP and database versions
  • Backup location
  • Monitoring status
  • Renewal or billing details
  • Responsible team members
  • Emergency contact details

This information should be accessible to more than one senior developer.

A hosting service becomes fragile when one person knows how everything works and everyone else needs to ask them before making a change. Documentation does not need to describe every package installed on the operating system, but another competent team member should be able to identify the server, gain authorised access and understand what it is responsible for.

ServerAuth can provide a central interface for servers from different providers, including existing servers that are already running. Its current server management tools cover areas such as website deployment, SSH access, firewalls, cron jobs, logs, databases, Supervisor processes and server monitoring.

Stop sharing SSH credentials

Shared passwords and shared private keys make access difficult to control.

Every member of the development team should use an individual SSH key. Their public key can be added to the servers they are authorised to access, while the private key remains on their own computer.

This provides several practical benefits:

  • Access can be removed for one person without affecting everyone else
  • Each developer is responsible for protecting their own private key
  • Password authentication can be disabled
  • The agency has a clearer record of who has access
  • Keys can be rotated without distributing a new shared password

Private keys should be protected with a passphrase. Developers can use ssh-agent or their operating system’s keychain to avoid entering that passphrase for every connection.

Access also needs to be reviewed when someone changes role or leaves the agency. Removing a user from Slack, email and the project management system does not remove their public key from a server.

Contractor access deserves particular attention. A freelancer working on one project rarely needs permanent access to every production server.

ServerAuth allows team members to manage their own SSH keys while account administrators control which servers and system users they can access. Access can also be restricted by day, time or date range, which is useful for temporary contractors and project-based work.

Give developers the access they actually need

Server access should follow the same principle as access to source code, billing systems and client records. People should have enough access to do their work, without receiving access to unrelated systems.

A front-end developer fixing CSS on a staging website probably does not need root access to its production server. A contractor maintaining one Laravel application does not need access to every WordPress website managed by the agency.

Useful access groups might include:

  • Senior infrastructure administrators
  • Production developers
  • Staging-only developers
  • Support staff
  • Temporary contractors
  • Client-specific teams

It is also worth separating routine server tasks from unrestricted shell access.

A developer may need to view logs, restart a queue worker or deploy a website. Providing those actions through a controlled management interface can reduce the number of occasions where someone needs to log in as a privileged user.

Use a consistent deployment process

Manual deployments often begin with a developer connecting over SSH, pulling the latest branch and running a few commands from memory.

This works until one of those commands is missed.

A deployment process should be written down and repeatable. At minimum, it should define:

  1. Which repository and branch are deployed
  2. Which user performs the deployment
  3. Where the application is stored
  4. How dependencies are installed
  5. How environment variables are managed
  6. Whether database migrations run automatically
  7. Which caches are cleared or rebuilt
  8. How front-end assets are compiled
  9. Which background processes need restarting
  10. How the previous release can be restored

Production deployments should come from version control. Developers should not edit production application files directly because those changes can disappear during the next deployment and may never make it back into the repository.

Automatic deployment can work well for lower-risk websites, particularly when it is triggered from a dedicated production branch. More sensitive applications may require an approval step before deployment begins.

ServerAuth supports deploying websites and applications from a connected repository, including common PHP applications and frameworks. It can also manage related services such as databases, cron jobs and Supervisor processes from the same interface.

Separate production and staging

A staging site gives developers somewhere to test updates without experimenting on a client’s live website.

It should be treated as a separate environment, with its own:

  • Domain or subdomain
  • Database
  • environment configuration
  • application secrets
  • deployment branch
  • system user
  • access rules

Avoid copying a production database into staging without considering the information it contains. Customer records, order details and personal data may need to be removed or anonymised.

Staging sites should also be protected from public access and search engine indexing. Password protection, IP restrictions or another authentication layer should be used where appropriate.

A useful deployment flow is:

Local development
      ↓
Pull request and review
      ↓
Staging deployment
      ↓
Testing and client approval
      ↓
Production deployment

Smaller projects may use a simpler process, but production should never be the first place where a substantial update is tested.

Monitor the things that cause real outages

A server being online does not mean its websites are healthy.

Basic monitoring should cover:

  • Website availability
  • SSL certificate validity
  • CPU load
  • Memory usage
  • Disk space
  • Database availability
  • Queue workers
  • Scheduled tasks
  • Backup completion
  • Error rates

Disk usage deserves particular attention. A server can continue working normally until a log file, backup directory or application upload fills the remaining storage. Once the disk is full, databases may stop accepting writes, deployments may fail and websites can begin returning errors.

Set warning levels early enough to allow someone to investigate. An alert at 98 per cent disk usage may arrive too late to prevent disruption.

Server load also needs context. A brief increase during a deployment or backup may be normal. Sustained high load, steadily increasing memory use or a sudden change in traffic deserves investigation.

ServerAuth monitoring tracks server load, memory and disk usage, with historical data available through its management interface. Its log viewer provides access to common system and service logs without requiring a separate SSH session.

Create a backup policy before it is needed

A backup is only useful when it can be restored.

Provider snapshots are helpful, but they should not be the only copy of important client data. They may be stored in the same provider account as the server, and deleting or losing access to that account could affect both the live server and its snapshots.

A basic agency backup policy should specify:

  • What is backed up
  • How frequently backups run
  • Where backups are stored
  • How long each backup is retained
  • Whether backups are encrypted
  • Who receives failure notifications
  • How often restores are tested
  • How quickly a restore should be completed

Website files and databases may need different schedules. Application code can often be recovered from Git, while customer uploads and database records cannot.

An ecommerce database might require frequent backups because losing a day of orders would be unacceptable. A small brochure website that changes twice a year may have less demanding requirements.

Define two targets for each hosting package:

Recovery point objective

How much recent data could the client lose after a failure?

Recovery time objective

How long should it take to restore the service?

A promise of “daily backups” says nothing about when the website will be restored or how much work may be lost. Recovery targets provide a clearer basis for planning and pricing.

Test the restoration process periodically. A backup job reporting success does not prove that the resulting files are complete, readable or sufficient to rebuild the website.

Manage cron jobs and background processes centrally

Scheduled tasks and long-running processes are easy to forget because they usually operate quietly.

Agencies commonly use cron jobs for:

  • Laravel’s scheduler
  • WordPress scheduled tasks
  • Database exports
  • Cache cleanup
  • Report generation
  • Sitemap generation
  • File synchronisation
  • Maintenance scripts

Long-running applications may also use Supervisor to manage:

  • Queue workers
  • Laravel Horizon
  • Symfony Messenger workers
  • WebSocket servers
  • Import processes
  • Notification workers

Keep a record of what each process does, which user it runs as and what should happen after a deployment.

A queue worker that continues running old application code after deployment can cause confusing faults. Deployment instructions should state whether workers need to restart and how that restart is performed.

ServerAuth includes web-based management for cron jobs and Supervisor daemons, allowing agencies to view and manage these processes alongside the server and website they belong to.

Plan routine maintenance

Servers need regular attention even when the websites on them appear stable.

Create a maintenance schedule covering:

  • Operating system security updates
  • PHP and database updates
  • Application dependency updates
  • Firewall reviews
  • User and SSH key reviews
  • Disk usage checks
  • Backup restoration tests
  • SSL certificate checks
  • Database cleanup
  • Log rotation
  • Monitoring reviews
  • Provider account and billing checks

Security updates should be applied promptly, but major version upgrades need planning. A new PHP or database version may affect older client applications.

Keep an up-to-date list of applications that depend on unsupported software. This gives the agency time to discuss upgrade work with the client instead of waiting for an urgent security or compatibility problem.

Maintenance work should also be included in pricing. A low monthly hosting fee may cover the server invoice while leaving no budget for updates, monitoring, backup checks and support.

Price the service around the work involved

The infrastructure bill is only one part of the cost of managed hosting.

A hosting price may need to cover:

  • Cloud server costs
  • Backup storage
  • Monitoring services
  • Server management software
  • Support time
  • Security updates
  • Routine maintenance
  • Failed deployment investigation
  • Account administration
  • Payment processing
  • Time spent communicating with the client

Keep website maintenance separate from hosting where possible.

Hosting covers the environment required to keep the existing website available. Maintenance covers changes to the website itself, such as CMS updates, plugin testing, framework upgrades, content changes and bug fixes.

Combining everything into one cheap package makes it difficult to explain why a major application upgrade is additional work.

A simple package structure could include:

Standard managed hosting

Suitable for brochure websites and smaller applications.

  • Shared or appropriately sized infrastructure
  • SSL certificate management
  • Daily backups
  • Availability monitoring
  • Routine server security updates
  • Support during business hours

Business managed hosting

Suitable for ecommerce websites and important business applications.

  • Dedicated server or stronger resource allocation
  • More frequent database backups
  • Staging environment
  • Resource monitoring
  • Deployment support
  • Faster support response
  • Regular recovery testing

Custom infrastructure management

Suitable for larger applications or unusual requirements.

  • Multiple servers or services
  • Custom backup schedules
  • Queue and process monitoring
  • Database servers
  • Load balancing
  • Private networking
  • Agreed recovery objectives
  • Planned maintenance windows

Clients should understand what is included, what response times apply and which work will be quoted separately.

Create an onboarding checklist

A checklist reduces mistakes and makes it easier for different team members to onboard clients consistently.

A practical onboarding checklist might include:

  1. Confirm the server ownership model
  2. Create or verify the provider account
  3. Enable multi-factor authentication
  4. Record billing and technical contacts
  5. Create the server using the agency naming standard
  6. Configure the firewall
  7. Create individual system users
  8. Add approved SSH keys
  9. Disable unnecessary password access
  10. Configure the website and database
  11. Connect the Git repository
  12. Set up the deployment process
  13. Configure cron jobs and background workers
  14. Enable SSL
  15. Configure backups
  16. Enable availability and resource monitoring
  17. Test a deployment
  18. Test a backup restoration
  19. Add the server to the infrastructure inventory
  20. Provide the client with support and escalation details

Store evidence of the completed checks with the client record. This is especially helpful when another team member needs to review the setup months later.

Create an offboarding checklist too

Offboarding should receive the same attention as onboarding.

When a client leaves, confirm:

  • The final service date
  • Who owns the provider account
  • Whether the server will be transferred or deleted
  • Which files and database exports will be supplied
  • How credentials will be transferred securely
  • Whether DNS changes are required
  • When agency access will be removed
  • When backups will be deleted
  • Whether monitoring and paid services need cancelling
  • Whether any outstanding invoices remain

Do not leave abandoned servers, monitoring checks or backup jobs running indefinitely. They continue to cost money and make the agency’s infrastructure harder to understand.

After the handover is complete, remove the client’s systems from normal dashboards while retaining any records required for contractual, accounting or legal purposes.

Build a service the whole agency can operate

A well-run hosting service should not depend on one developer remembering how every server was configured.

Standardise the infrastructure, document ownership, use individual access controls and make deployments repeatable. Monitor the resources that commonly cause failures and test the backups that would be needed to recover from them.

Centralising this work also helps agencies use whichever cloud provider suits each project without maintaining a completely different management process for every server.

ServerAuth brings server access, website deployments, monitoring, logs, firewalls, databases, cron jobs and Supervisor processes into one web-based platform. Existing servers can be connected, so an agency can improve its management process without first moving every client to a new provider.

The result is a hosting service that is easier to support, easier to hand over internally and easier to grow as the agency takes on more clients.

Server Management & Security doesn't have to be a full time job.

ServerAuth provides a whole host of management tools, from controlling who can access your server, to managing your website deployments. And with an ever-growing suite of tools you'll always be one step ahead!

Server Management Software Screenshot
ServerAuth
Server Management & SSH Security Software
 on X (Twitter)
Copyright © Peakstone Ltd
Registered in England & Wales No. 13996293
All Rights Reserved.
Solutions
Resources
Support
Customers
ServerAuth
The Legal Bits