- Docs
- Troy Server
- Server Installation
Install Troy Server
Troy Server transforms a WordPress site into your personal plugin repository.
Requirements
| Requirement | Version |
|---|---|
| WordPress | 6.8+ |
| PHP | 8.4+ |
| MySQL | 8.0.19+ |
| HTTPS | Required |
About PHP 8.4:
Troy Server uses modern PHP features to keep the codebase clean, fast, and maintainable. For example, it can parse readme subsections on demand via property hooks. Quality hosts support PHP 8.4. If yours doesn't, move to another host.
Use a Dedicated WordPress Install:
Run Troy Server on its own WordPress installation—even a $10/month VPS will do.
Why: Your server will be bombarded with update requests from your users. Every active plugin adds overhead to those update requests—a bloated WordPress install slows every API response.
No Caching or Translation Plugins:
Do not install caching plugins (WP Super Cache, W3TC, LiteSpeed, etc.) or translation plugins on your Troy Server. They interfere with REST API responses and cause update failures for your users.
Quick Install
Download the Package
Download the Troy Server installer:
Upload to WordPress
In your WordPress admin:
- Go to Plugins → Add New.
- Click Upload Plugin.
- Choose the ZIP file.
- Click Install Now.
Activate
Click Activate Plugin.
The installer will:
- Download and activate Troy Client.
- Install Troy Server.
- Deactivate itself when done.
Refresh After Activation:
WordPress doesn't reload admin menus when a plugin is activated. Refresh the page once to see the Troy Server menu items.
Set Your Composer Vendor Name:
After installing, go to Troy Server → Setup in your WordPress admin.
Set your Composer vendor name before sharing any Composer URLs. Treat this value as permanent — changing it later breaks updates for anyone already using your repository.
After Installation
Your Troy Server exposes these API endpoints at your WordPress URL:
| Endpoint | Description |
|---|---|
/ping | Health-check response. |
Test your installation by visiting https://repo.example.org/ping in your browser:
{
"status": "ok",
"message": "pong",
"time": "2026-03-01 17:03:42"
}
Hosting Recommendations
Good choices:
- Any VPS (DigitalOcean, Linode, Hetzner, TransIP, Vultr—even the cheapest tier).
- Cloud hosting with PHP 8.4+ (AWS, Google Cloud, Oracle Cloud, Azure, Cloudways).
- Managed WordPress hosts that support PHP 8.4.
Not ideal:
- Shared hosting (shared CPU and no persistent OPcache mean slow API responses for your users).
- Home servers (residential power and internet lack the uptime your users depend on).
- Hosts with aggressive resource limits or PHP worker caps.
HTTPS is Required
Troy Server only serves updates over HTTPS. Troy Client refuses non-HTTPS connections. This is intentional—security isn't optional.
On a VPS, you can get a free SSL certificate from Let's Encrypt.
Set Up Real Cron
WP-Cron piggybacks on incoming requests, adding latency to API responses. Replace it with a real cron job:
Disable WP-Cron
Add this line to wp-config.php:
define( 'DISABLE_WP_CRON', true );
Add a System Cron Job
Set up a cron job that runs every minute:
* * * * * curl -s https://repo.example.org/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Next Steps
Your server is ready. Now add your first plugin.
