CloudRate Pro.
Product documentation
A practical guide to installing the standalone PHP estimator, updating regional prices, building cost estimates, and using its reporting and sharing tools.
01. What is included
CloudRate Pro is a self-hosted AWS infrastructure cost estimator. It provides a customizable resource builder, month/year summaries, region comparison, 90-day shared estimate snapshots, PDF and CSV reports, and manual pricing administration.
Explore nine modeled services, customize usage, inspect individual charges, compare regions and download reports.
Refresh supported prices from AWS on demand, add custom rates, import CSV/JSON and review a simple update history.
Pricing is never guaranteed. The installation includes 19 AWS-published reference rates for US East (N. Virginia), plus clearly marked illustrative rates for all other unverified dimensions. Replace or validate illustrative rates before issuing customer quotations. AWS account-specific discounts, special billing tiers, credits and taxes are not modeled.
02. Installation — Easy Install Edition
No folder named public_html required: This edition is designed to upload and extract directly into the empty domain root of an Apache or LiteSpeed PHP 8.2+ website.
- In cPanel > Domains, find the Document Root for your intended domain. In File Manager, browse to exactly that folder.
- Upload the ZIP and extract its contents directly into that folder. Confirm that
index.php,assets/,_cloudrate/, and.htaccessare directly inside it; do not leave them inside an extra subfolder. - Enable PHP 8.2+, HTTPS and Apache/LiteSpeed
.htaccessrewrite rules. - Open
https://yourdomain.com/. The installation assistant automatically checks server requirements, URL routing and protected files. - Read the unique one-time installation code from the private file path printed on the installer. Use the hosting File Manager; never publish the code.
- Enter your administrator credentials and finish the wizard. Delete the uploaded ZIP from the domain root after successful extraction.
The installer requires a verifiable account home outside public web folders (or an explicitly configured CLOUDRATE_PRIVATE_STORAGE absolute path) and automatically creates a writable cloudrate-private-xxxxxxxxxxxx/ folder outside the public website to hold accounts, sessions, rates and saved estimates. PHP must have permission to write it. No database, Composer or WordPress is required for the core calculator.
Hosting compatibility: This one-ZIP edition targets Apache/LiteSpeed shared hosting. Nginx needs separately configured and tested deny/rewrite rules; do not deploy until private data access is blocked. Use a fresh empty site rather than overwriting an existing website.
Local development
php -S 127.0.0.1:8080 -t . router.phpRun this command from the extracted ZIP root; the development router blocks private files. Do not use PHP's built-in server as public hosting.
03. Administrator setup and login
The wizard at /install collects your administrator username, 12+ character password and one-time proof code. This code is stored outside the public website and is removed when the administrator account is created. It prevents an outsider from claiming a fresh site simply by visiting it first.
- Open the website and wait until installation checks pass.
- In File Manager, open
setup-token.txtat the exact absolute path displayed on the installer, outside the domain root. Copy the code and paste it into the installation form. - Create your unique administrator credentials; the account is saved privately and you are signed in automatically.
- Use
/control/loginfor later sign-ins. Password changes invalidate other login sessions. No default shared password is included.
Recovering a password
On hosts with SSH or a console, use:
php _cloudrate/bin/reset_admin.phpThis CLI-only operation requires hosting access. Never expose password reset as an unprotected public web page.
04. Update prices directly from AWS
The Update from AWS action does not require an AWS account or access keys. It retrieves a regional CSV file from the official public AWS Price List endpoint, checks rows against the supported calculation dimensions, and replaces matching local entries only.
- Open Admin → Refresh prices from AWS.
- Select Amazon EC2 or Amazon RDS.
- Select the AWS region you want to refresh.
- Click Update from AWS and confirm.
Keep the page open while the PHP server downloads and processes that region's price list. Large files can take time, and some hosting plans may impose limits.
- Review the result summary.
The panel displays matched entries, changed entries, unmatched keys, and ambiguous rates that were skipped.
- Refresh additional service/region combinations as needed.
Nothing runs on a schedule. All AWS downloads are administrator-initiated.
Exactly what official refresh supports
| Service | Automatically mapped | Not updated by this action |
|---|---|---|
| EC2 | Linux, shared tenancy, On-Demand instance-hours for configured instance types | EBS, transfers, dedicated instances, Spot, Reserved, Savings Plans, licenses |
| RDS | MySQL On-Demand DB instance-hours, Single-AZ and Multi-AZ for configured instance types | RDS gp3 storage, backup, I/O, proxy, alternative engines, special deployment models |
| Other modules | Not supported by one-click AWS refresh in v1.3.1 | Use verified manual imports or overrides |
Command-line alternative for large files
When your hosting plan limits long web requests but provides SSH or terminal access, run the same manual public importer using:
php _cloudrate/bin/update_public_rates.php --service=ec2 --region=us-east-1This command uses the same validation rules as the admin button. No cron or AWS credentials are needed. Administrator overrides are not overwritten by the EC2/RDS refresh.
What happens when a rate is missing?
If a target SKU is unavailable, unmatched, or ambiguous, the importer does not guess a price. It leaves the previous local entry in place and reports how many entries were not updated. The local catalog can therefore contain a mix of AWS-published reference rates, administrator-maintained rates and illustrative demo rates. Administrator overrides are preserved when using the AWS refresh button.
Public AWS file format
The server fetches official region-scoped files with this URL structure:
https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/
AmazonEC2/current/us-east-1/index.csvAWS documents regional price-list CSV/JSON files publicly at AWS Billing — Price List files. Data access is free, but your web host's bandwidth, disk, timeouts, and memory restrictions still apply.
Important: These CSV files are large. The application reads data as a stream, enforces a maximum file/row limit, and refuses to commit a partial catalog if the operation fails. For constrained hosting, use the manual price import alternative.
05. Edit rates and import pricing
Single-rate override
Use Edit a price manually to set an explicit price in one region. Choose the region, enter the internal pricing key and numeric USD-per-unit rate, then optionally include a source SKU. The resulting rate is labeled Administrator override — not AWS verified.
Bulk CSV import
Create a UTF-8 CSV file with headers region,key,rate,sku. Choose the file, validate, and confirm the import. The downloadable sample CSV is a structural template, not a price reference.
region,key,rate,sku
us-east-1,ec2.t3.medium,0.0416,VERIFY-THIS-EXAMPLE
us-east-1,ebs.gp3.gb,0.08,VERIFY-THIS-EXAMPLEBulk JSON import
Switch the import panel to JSON and paste an array of rate objects:
[
{
"region": "us-east-1",
"key": "ec2.t3.medium",
"rate": 0.0416,
"sku": "VERIFY-THIS-EXAMPLE"
}
]These numbers only illustrate data format. Review the rate, region, AWS SKU, operating system, pricing tier, and billing unit independently before using them.
Each import replaces matching region + key entries and preserves unrelated entries. Updates are written atomically and recorded in the admin history. Existing saved reports stay unchanged.
Rate units reference
| Rate key | Expected unit |
|---|---|
ec2.t3.medium | USD / Linux On-Demand instance-hour |
ebs.gp3.gb | USD / provisioned GB-month |
ebs.gp3.iops | USD / extra IOPS-month above included IOPS |
ebs.gp3.throughput | USD / extra MiB/s-month above included throughput |
s3.standard.gb | USD / GB-month (simplified first tier) |
s3.put.1000, s3.get.1000 | USD / 1,000 requests |
transfer.internet.gb | USD / outbound GB (simplified) |
rds.mysql.single.db.t3.micro | USD / On-Demand DB instance-hour |
rds.gp3.single.gb | USD / GB-month |
lambda.request.million | USD / million requests |
lambda.gbsecond | USD / GB-second |
nat.hour, nat.gb | USD / gateway-hour and processed GB |
alb.hour, alb.lcu | USD / LB-hour and LCU-hour |
cloudfront.gb, cloudfront.https.10000 | USD / delivered GB and 10k HTTPS requests |
dynamodb.read.million, dynamodb.write.million | USD / million request units |
For the complete set of keys and model limits, see _cloudrate/docs/PRICING.md in the download.
06. How the calculator works
Visitors select a region and add resources from the service library. Each resource has its own configuration. The browser sends those values to the PHP calculation engine; PHP validates inputs, finds the exact local regional rate for each implemented billing key, and returns an itemized cost result.
Sum of modeled monthly billing components for every configured resource.
Monthly modeled total multiplied by 12, not a guarantee of actual annual spend.
Example calculations
| Resource | Formula / approach |
|---|---|
| EC2 | Instance quantity × configured operating hours × regional instance-hour rate |
| EBS gp3 | Volumes × [storage GB × GB-month rate + eligible extra IOPS + eligible extra throughput] |
| RDS | Instance hours plus simplified provisioned database storage charges |
| Lambda | Million requests × request rate + calculated GB-seconds × GB-second rate |
| S3 | Simplified first-tier GB-month plus selected request and transfer components |
| NAT gateway | Gateway hours × rate + processed GB × rate |
When a needed regional billing key is absent, the resource is flagged incomplete. The result should not be treated as a complete estimate. The application never silently assumes the missing charge is zero.
Region comparison recalculates the same resource settings against selected AWS regions, exposing missing prices instead of fabricating regional percentages.
07. Supported resource models
| Service | Included estimate dimensions |
|---|---|
| Amazon EC2 | Linux On-Demand instances × quantity × hours |
| Amazon EBS | gp3 storage, above-included IOPS and throughput |
| Amazon S3 | Standard storage (simplified), PUT/GET requests and outbound transfer |
| Amazon RDS | MySQL instance-hours; simplified Single-AZ/Multi-AZ storage |
| AWS Lambda | Requests and configured GB-seconds, x86 simplification |
| NAT Gateway | Gateway running hours and processed data volume |
| Application Load Balancer | Load balancer hours and supplied LCU-hours |
| Amazon CloudFront | Simplified delivery traffic and HTTPS requests |
| Amazon DynamoDB | On-Demand read/write units and storage |
Not all AWS services, savings models or pricing dimensions are implemented. A configured region is not a promise that every selected resource has a price there.
08. Saving, sharing and reports
- Build your estimate and inspect the line items and warnings.
- Choose Save & share to create a snapshot.
The snapshot stores the configuration, calculated totals and the pricing metadata at the time of saving.
- Send the generated read-only link or download its PDF and CSV reports.
Saved links use random tokens, but anyone with the link can view the estimate.
- Use JSON export/import to transfer project configuration between installations.
Price refreshes do not change previously saved snapshots. To obtain a new estimate using refreshed pricing, reopen the configuration, recalculate and save a new snapshot.
PDF reports are generated by the PHP backend. CSV exports contain individual line items including units, quantities, rates and SKUs, while JSON is intended for configuration transfer and technical integrations.
Privacy: Share URLs are unguessable but not authenticated. Never place confidential customer or account details into shareable project names without explicit permission.
09. Embed on any website
You can embed the standalone calculator into an HTML website or CMS using an iframe. No WordPress plugin or external JavaScript package is required.
<iframe
src="https://your-domain.example/embed"
width="100%"
height="900"
loading="lazy"
title="CloudRate Pro cost estimator">
</iframe>Replace the example domain with the URL of your CloudRate Pro installation. Use HTTPS for production. If embedding should be restricted to particular sites, configure appropriate framing restrictions at your hosting or reverse-proxy layer.
10. Security & maintenance
- Extract the upload-ready package directly into the domain root. The
_cloudrate/source folder is protected by Apache/LiteSpeed.htaccess; account data and saved reports are automatically stored in a separate directory outside the web root. - Always use HTTPS for production. Session cookies are HTTP-only and SameSite=Strict; the Secure attribute is applied when PHP sees an HTTPS request.
- Passwords are hashed with PHP's
password_hash(). There are no hard-coded buyer credentials, shared demo administrator accounts, or browser-stored admin keys. - Administrator pricing writes require a verified session and CSRF token. Cross-origin submissions are rejected. Login attempts are rate-limited.
- Changing your password invalidates earlier sessions. Use the Sign out button when finished, especially on shared computers.
- Installation requires the one-time code in the outside-root private storage folder. It is removed after setup and the setup route redirects to sign-in after installation.
- Keep backups of
admin-user.json,rates.json,pricing-history.jsonandprojects/inside your automatically created private folder. Treat backups as private. - Do not disable the protective
.htaccessfiles or move the outside-root private folder into public_html. The installer checks access rules before account creation. - Maintain PHP, TLS, server permissions, proxy configuration, and host security updates. Independent production security review is recommended before accepting real customer data.
Account recovery from SSH
php _cloudrate/bin/reset_admin.php
Run the included checks
php _cloudrate/bin/test.php
php _cloudrate/bin/test_pricing.php
python3 _cloudrate/bin/test_install.py
The installation suite launches a local PHP server against an isolated temporary installation; it does not change your real administrator credentials. For a separate calculator HTTP test, start the PHP development server on port 8765 and run python3 _cloudrate/bin/test_http.py.
11. Accuracy & scope limitations
Do not sell or describe the included fixtures as live AWS pricing. Rates from an official public file reflect their source and publication date, but an AWS bill may include discounts, commitments, fees, tiers, minimums, account-specific conditions, and charges not modeled in this software.
- AWS public refresh is limited to eligible EC2 and RDS On-Demand instance-hour pricing keys.
- Other dimensions (storage, transfer, Lambda, S3 and the rest) must be verified and maintained separately.
- AWS bulk CSV file processing depends on the hosting provider's bandwidth, response timeout and PHP execution limits.
- Reservations, Savings Plans, Spot, free-tier eligibility, tax, specialized licensing and actual customer usage integrations are not implemented.
- CloudFront, S3 and some data transfer examples use simplified first-tier assumptions; high-volume estimates may require additional billing tiers.
- Support for 34 selectable region identifiers does not imply complete price coverage in all 34 regions.
- No automatic background price refresh is included. An administrator must initiate updates manually.
The included source files are provided for your own deployment and customization; test thoroughly and consult official AWS documentation before commercial use. CloudRate Pro is an independent tool and is not affiliated with or endorsed by AWS.
12. Troubleshooting
| Symptom | Recommended action |
|---|---|
| Setup token cannot be found | Open /install, then locate the one-time code at the exact outside-root file path shown by the wizard. Ensure PHP can write in the private account folder. |
| Setup token is rejected | Copy the entire token without spaces or line breaks. If the account is already installed, setup cannot be repeated. Sign in instead. |
| Admin page redirects to sign-in | Sign in at /control/login. Sessions expire after inactivity. Enable cookies and HTTPS on public hosting. |
| Sign-in is rate limited | Wait for the displayed limit to expire. Do not continuously retry an incorrect password; use CLI recovery if you have forgotten it. |
| Lost administrator password | On your own hosting, run php _cloudrate/bin/reset_admin.php in a secure terminal. A web-based reset is not intentionally provided. |
| Security token rejected when saving | Refresh the administrator dashboard and sign in again. Cross-origin requests cannot change pricing. |
| AWS refresh cannot download | Check outbound HTTPS, CA certificates, allow_url_fopen, server firewall, and timeout restrictions. |
| AWS refresh times out | Try php _cloudrate/bin/update_public_rates.php --service=ec2 --region=us-east-1 from the host terminal or upload a smaller validated import file. |
| Some prices still show samples | Only selected EC2/RDS instance-hour SKUs are mapped by one-click AWS import. Manually verify other service prices. |
| Saved PDF or share link fails | Verify index.php is in your current domain root, rewriting works, and the automatically created private projects/ directory is writable. |
13. Package contents and technical reference
YOUR DOMAIN DOCUMENT ROOT/
├── index.php Public routes and calculator
├── install.php Setup wizard template (HTTP access blocked)
├── control.php Login template (HTTP access blocked)
├── admin.php Management template (HTTP access blocked)
├── router.php PHP local development server only
├── .htaccess Rewrite + private-file protection
├── assets/ Calculator, admin and installer styles/scripts
├── _cloudrate/ INTERNAL (web access denied)
│ ├── .htaccess
│ ├── src/ Calculator, auth, API, installer, pricing
│ ├── data/ Region/catalog/example rates
│ ├── docs/ Buyer and API reference manuals
│ └── bin/ CLI tools and QA suites
├── README.md
├── INSTALL.md
└── START_HERE.txt
ACCOUNT HOME (OUTSIDE THE DOCUMENT ROOT)/
└── cloudrate-private-xxxxxxxxxxxx/
├── admin-user.json
├── sessions/
├── projects/
└── rates.json Created after first rate editRuntime files are stored outside the public website automatically. The original uploaded ZIP should be removed from the domain folder after extraction. For live server operation, check the Apache/LiteSpeed deny rules on the actual hosting account.