Fifty client websites spread over a dozen hosting logins is a memory test you will eventually fail. The same fifty sites on one DirectAdmin reseller account is a list you can sort. The difference is the structure you put in on day one: who owns which account, what limits it has, and where you look when something is slow.
Two levels, and what each is for
A reseller account in DirectAdmin gives you two views, switched from the top bar:
- Reseller Level is where you manage accounts: create users, define packages, suspend, back up, and see everyone's usage in one table.
- User Level is where a single site is managed: domains, mailboxes, databases, SSL, files.
You have no Admin Level and no root on reseller hosting. The web server configuration, PHP builds, firewall and mail queue belong to the host. If the levels are new to you, the Evolution skin tour shows where everything sits.
One user per client, not fifty domains under one user
DirectAdmin will let you add many domains to a single user account. For client work, do not. Give each client their own user.
| One user, many domains | One user per client | |
|---|---|---|
| File isolation | All sites share one system user and can read each other's files | Each client is a separate system user |
| A hacked plugin | Can reach every site in the account | Stops at that client's account |
| Resource limits | One set of limits shared by all sites | Limits per client |
| Client leaves | You untangle files, databases and mail by hand | One backup file, hand it over |
| Non-payment | Cannot suspend one site cleanly | Suspend one user |
The exception is a client with several sites of their own: those can share that client's user, since they share an owner.
Tip: pick a username convention before the first account and keep to it, for example the first eight letters of the client's domain. Usernames appear in file paths, database names and backup file names.
Packages: three are enough
A package is a set of limits you assign to users. Create them at Reseller Level → Account Manager → Manage User Packages. Three covers most agencies:
| Package | Disk | Domains | Mailboxes | For |
|---|---|---|---|---|
site-basic |
1 GB | 1 | 5 | Brochure sites |
site-standard |
3 GB | 2 | 20 | Most WordPress sites |
site-shop |
8 GB | 3 | 30 | WooCommerce, media-heavy sites |
The figures are examples. Changing a package later applies to every user on it: one edit instead of fifty. The fields are described in creating packages and user accounts.
Tip: always set a disk limit, even a generous one. Without it, one runaway backup plugin writing archives into wp-content can fill the whole reseller pool overnight, and then every client's mail and uploads fail together.
Login-as: support without passwords
At Reseller Level → List Users, each account has a Login as action. It puts you inside that client's User Level, and a link at the top brings you back. You never need the client's password.
Because you see exactly what the client sees, it is also the quickest way to answer "where do I click".
PHP version per site
Sites age differently. An old build with an abandoned theme may need an older PHP while a new one should run a current release. On our platform PHP versions from 7.4 to 8.5 are selectable per site, so one old site does not hold back the other forty-nine.
The setting is at User Level. Depending on how the server is built it is either the PHP version selector on the domain's page under Domain Setup, or Select PHP Version on a CloudLinux server. Changing the PHP version in DirectAdmin covers both.
Keep a register of which site runs which version. Any site on an end-of-life version is a conversation to have with that client, with a quote attached.
SSL that renews itself
Each domain gets a free Let's Encrypt certificate from the SSL Certificates page at User Level, and DirectAdmin renews it automatically before it expires. Issue it with the www name included and turn on the force-HTTPS option. The steps and the failure cases are in free Let's Encrypt SSL in DirectAdmin.
Renewal fails when a name on the certificate no longer resolves to the server. A monthly sweep from your own computer catches that before the client's customers do:
for d in acme-builders.co.uk greenleafcafe.com northdental.co.uk; do
end=$(echo | openssl s_client -servername "$d" -connect "$d:443" 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)
echo "$d $end"
doneList all your domains. A date only a couple of weeks away means that domain's renewal has probably been failing.
Backups at reseller level
There are three layers, and you want all of them.
- The host's backups. On our reseller plans, daily off-site backups are kept for 14 days.
- Reseller-level backups. Manage User Backups at Reseller Level backs up all or selected users, once or on a schedule, to a local path or to a remote FTP or SFTP destination. Each user becomes one
tar.gzcontaining files, databases, mail, DNS and settings. - A user-level backup before risky work. At User Level, Backup/Restore makes the same kind of archive for one account. Take one before a major update or a redesign.
Tip: local reseller backups are stored inside your own disk pool. Send scheduled backups to a remote destination, and download and delete one-off local ones.
The backup file is also your handover format: it restores on any DirectAdmin server. Test it by restoring one client into a spare account twice a year.
Finding the heavy accounts
The List Users table shows disk and bandwidth used per account, and the columns sort. When one account stands out, log in as that user and find the cause.
If SSH is enabled for the account, these work as the user, with no root needed:
# Biggest directories in the account
du -h --max-depth=2 ~ 2>/dev/null | sort -rh | head -n 15
# Mail storage per mailbox
du -sh ~/imap/*/* 2>/dev/null | sort -rh | head
# Backup archives and logs left inside sites
find ~/domains -type f \( -name "*.zip" -o -name "*.tar.gz" -o -name "error_log" \) \
-size +100M -exec ls -lh {} \;Without shell access, the File Manager shows directory sizes and the mailbox list shows usage per mailbox. The usual causes: old backup archives inside wp-content, mailboxes nobody empties, and an error_log that has been growing for years.
For CPU and memory, a CloudLinux server gives each account its own limits and a resource usage page at User Level showing when the account hit them. A slow site with a graph pinned at the limit is a caching or plugin problem, not a server problem.
WordPress Manager
If most of the fifty are WordPress, DirectAdmin's WordPress Manager at User Level is worth learning. It lists the installs in the account, installs a new site with its database in one form, logs you in to wp-admin without a password, resets an admin password when a client is locked out, and makes a staging copy to test changes on.
With SSH and WP-CLI available, wp plugin list --update=available and wp core verify-checksums, run in the site's public_html, make a quick weekly check.
A weekly routine that takes twenty minutes
- Sort List Users by disk; look at the top five.
- Read the backup result messages in the panel.
- Apply updates on a fixed day, staging first for fragile sites.
- Run the certificate sweep once a month.
Fifty sites managed this way is steady, dull work, as hosting should be. The structure fits a 50-account plan such as Partner Pro on our reseller hosting, and it is the same at ten sites.