Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To install SilverStripe on a VPS, provision PHP 8.1–8.3 with the required extensions, install the project with Composer, point your web server at the project’s public/ directory, create a root-level .env file, build the database, and then complete the setup at /admin. The public/ boundary is a security requirement: application code, configuration, and Composer’s vendor/ directory must remain outside the webroot.

What you need before installing

SilverStripe CMS 5.2 and later currently supports PHP 8.1, 8.2, and 8.3. Current Silverstripe CMS server-requirements documentation (accessed in 2026) specifies a minimum PHP memory_limit of 48M. For a real site, choose a VPS size based on expected traffic, uploaded-asset volume, scheduled jobs, and database workload; no universal CPU, RAM, or storage figure is established by the platform documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Component Requirement or supported choice Why it matters
PHP 8.1–8.3 for SilverStripe CMS 5.2+ Unsupported PHP versions can prevent Composer installation or produce runtime errors.
PHP extensions ctype, dom, fileinfo, hash, intl, mbstring, session, simplexml, tokenizer, and xml Core framework and module functionality depends on these extensions.
Image processing Either gd or imagick Required for image manipulation and thumbnail generation.
Database connector A PHP connector for the database engine you select Allows the installer and application to connect to the database.
Database engine MySQL or MariaDB are the built-in commercially supported options. PostgreSQL, SQL Server, and SQLite are third-party or community-supported choices. Support level affects troubleshooting and module compatibility.
Dependency manager Composer 2 SilverStripe is installed and upgraded through Composer.
Web server Apache or Nginx with PHP-FPM All requests must be routed to public/index.php.

You also need a domain or temporary hostname, SSH access with a non-root deployment account, DNS pointed at the VPS, and a database plus database user. Install TLS before exposing an administrator login to the public internet.

Choose Apache or Nginx

Both servers can run SilverStripe. Apache’s quick-start path is simpler because the project includes public/.htaccess and public/assets/.htaccess; Apache must have mod_rewrite enabled and permit those files with an appropriate directory override policy. Nginx does not read .htaccess, so its configuration must express equivalent routing and file-security rules explicitly.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Deployment concern Apache Nginx
URL rewriting Uses the supplied public/.htaccess with mod_rewrite. Uses try_files and an explicit fallback to index.php.
PHP execution Normally connects to PHP through the distribution’s PHP handler or PHP-FPM integration. Requires a PHP-FPM upstream or Unix socket in fastcgi_pass.
Asset handling The supplied assets rules help route and protect uploaded files. Add an explicit assets location; return 404 for files that do not exist and pass non-file paths to the framework.
Reverse proxy and TLS Configure proxy headers and TLS in the virtual host or upstream proxy. Configure the same headers, TLS settings, and trusted proxy behavior in the server block or proxy.
Automation Configuration is familiar where Apache is already standard. Explicit configuration is highly reproducible, but every rule must be maintained in deployment files.

Prepare the VPS

1. Create an application account and directory

Use a dedicated account for the site rather than running Composer or deployment scripts as root. Pick a directory such as /var/www/my-project and make the account that owns the release files distinct from the web-server service account when your operating system supports that arrangement. The web-server account will need read access to the public tree and write access only where SilverStripe must generate files.

2. Install the PHP runtime and extensions

Use your VPS distribution’s package manager to install PHP 8.1, 8.2, or 8.3, the PHP-FPM service if you select Nginx, Composer 2, and every extension in the requirements table. Confirm the command-line PHP version and loaded modules before creating the project. A mismatch between the PHP binary used by Composer and the PHP-FPM binary used by the web server is a common cause of “works in SSH, fails in browser” errors.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set memory_limit to at least 48M. That is the documented minimum, not a performance recommendation; image-heavy sites, large imports, and complex modules may require more memory after observing real workload behavior.

3. Create the database and credentials

Create an empty database and a dedicated user with a strong, unique password. Grant that user the permissions needed by the application on its own database. Record the exact database name, server hostname, username, and password; they will be placed in the root-level .env file. If the database is on another host, confirm firewall rules, TLS requirements, and the hostname that PHP must use instead of localhost.

Install SilverStripe with Composer

Change to the directory in which the application should live and run the official project-creation command:

composer create-project silverstripe/installer my-project

Composer creates my-project, resolves the framework and module dependencies, and places managed packages in vendor/. Do not move vendor/ into the public directory. If Composer stops because an extension or PHP version is missing, correct the runtime rather than forcing the install with an ignore-platform option; bypassing platform checks can leave an application that cannot run under PHP-FPM.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

After the command completes, the important layout is:

  • my-project/public/ — the only directory that should be exposed by the web server.
  • my-project/public/index.php — the front controller for rewritten requests.
  • my-project/public/assets/ — generated and uploaded public assets.
  • my-project/app/, configuration, and other application files — kept above the public boundary.
  • my-project/vendor/ — Composer-managed dependencies, also above the public boundary.

Configure the environment and database

In the project root, create a file named .env. It must be next to the project’s application files, never inside public/. Restrict its permissions so ordinary users cannot read database credentials.

SS_DATABASE_CLASS="MySQLDatabase"
SS_DATABASE_NAME="DB_NAME"
SS_DATABASE_SERVER="localhost"
SS_DATABASE_USERNAME="DB_USER"
SS_DATABASE_PASSWORD="DB_PASSWORD"
SS_DEFAULT_ADMIN_USERNAME="admin"
SS_DEFAULT_ADMIN_PASSWORD="A_LONG_UNIQUE_PASSWORD"
SS_ENVIRONMENT_TYPE="live"

Replace every example value with the credentials and administrator name you actually created. The example uses MySQL-compatible configuration. A different supported database engine needs the class and connection settings documented for that driver; do not leave MySQLDatabase in place when the server is using another engine.

Keep .env out of version control and deployment archives unless your secret-management process deliberately encrypts it. In CI/CD, inject the production values at deployment time or write the file from a protected secret store.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Point the web server at public/

Apache configuration

Set the virtual host’s DocumentRoot to the absolute path ending in my-project/public, not to the project root. Enable mod_rewrite, allow the supplied public/.htaccess to operate, and grant the virtual host access to the directory. The supplied public/assets/.htaccess also needs to remain in place.

DocumentRoot /var/www/my-project/public

<Directory /var/www/my-project/public>
    AllowOverride All
    Require all granted
</Directory>

The exact virtual-host syntax and PHP-FPM wiring differ by distribution. Add your normal TLS certificate, access/error logs, and PHP handler settings. If Apache serves a blank page or downloads PHP source, PHP is not connected to the virtual host; if every path returns a 404, rewrite support or the directory override is usually missing.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Nginx configuration

Set root to the same public directory and pass non-file paths to index.php. The following is a pattern, not a drop-in configuration: change the server name, TLS directives, log paths, and PHP-FPM socket for your VPS.

server {
    root /var/www/my-project/public;
    index index.php;

    location ^~ /assets/ {
        sendfile on;
        try_files $uri =404;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location ~ .php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

The official file-security pattern for assets serves an existing file and returns 404 when it does not exist; requests that are not actual files must still reach the framework. Add rules that prevent access to hidden files and configuration files, and never configure Nginx to expose the project root. Validate the configuration and reload Nginx before testing the domain.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set permissions without exposing secrets

The web-server service account needs read access to the public tree and write access to public/assets/ and the temporary or cache locations used by the application. Grant the smallest practical write scope. Do not make the entire project writable by the web server and do not solve permission errors with a world-writable mode.

Projects that use GraphQL may also need the generated .graphql-generated directory and public/_graphql handled during a build or deployment. Confirm which account runs build commands and ensure that account can create the generated files before handing the release to PHP-FPM.

Protect uploaded and private assets

Disable PHP execution for uploaded assets. Protected assets must not be directly downloadable merely because a file exists under an assets directory. For stronger isolation, set SS_PROTECTED_ASSETS_PATH="../.protected/" so the protected store is outside public/. Test both an authorized and an unauthorized request after enabling this arrangement.

Build the schema and sign in

From the project root, run:

vendor/bin/sake dev/build

This creates or updates the database schema and initial framework data. Run it with the same PHP version and environment variables that the web process will use. A database connection error means the host, port, credentials, driver, firewall, or PHP connector is wrong; a missing-table error usually means the build did not complete successfully.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Once the build finishes, open the site’s domain and then visit /admin. Sign in with the administrator credentials from .env, change the initial password if your operational policy requires it, and remove any temporary setup artifacts that your deployment process created.

Reverse proxies, HTTPS, and hostnames

If the VPS is behind a load balancer, CDN, or TLS-terminating reverse proxy, preserve the valid Host header and correctly forward the scheme and client-IP headers according to your proxy’s documented trust model. SilverStripe uses the host when constructing links such as password-reset URLs. An incorrect host or scheme can produce links that point to an internal hostname, use HTTP instead of HTTPS, or fail behind a proxy.

Redirect plain HTTP to HTTPS at the edge or web server, but make sure the application is aware that the original request was secure. Test login, password-reset generation, canonical URLs, and uploaded-asset links through the public hostname rather than only from localhost.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a repeatable production deployment

A safer production workflow builds a release in CI and deploys a known package to the VPS instead of running an ad-hoc Composer update on the live server. Keep the dependency lock file, install the exact locked versions, and generate application resources as part of the release process.

  1. Check out the intended commit and run Composer installation in a clean build environment.
  2. Inject production secrets separately; do not commit the live .env file.
  3. Ensure generated resources such as public/_resources/, recipe-generated files, and GraphQL schema directories (when used) are included or generated deterministically.
  4. Publish the release so the web server points to its public/ directory, then switch the site to the new release atomically where possible.
  5. Run vendor/bin/sake dev/build using the release’s dependencies and verify the result before accepting traffic.
  6. Retain the previous release for a rollback, while keeping database migrations and application changes coordinated.

Composer-managed modules normally remain in vendor/; front-end assets required by those modules are mapped into public/_resources/ during the build. A deployment that copies only PHP files but omits generated resources can appear installed while pages are missing styles, scripts, or module assets.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Post-install verification checklist

  • Load the home page over HTTPS and confirm the expected hostname appears in generated links.
  • Open /admin, authenticate, and confirm the CMS can load dashboard data.
  • Create or edit a page and verify that database writes succeed.
  • Upload an image and confirm that files are written under public/assets/ with the intended ownership.
  • Request a nonexistent URL and confirm SilverStripe’s error page is returned rather than a server directory listing.
  • Request a known asset and confirm it is served; request a missing asset and confirm the server returns 404.
  • Attempt to fetch .env, files under app/, and files under vendor/ through the browser; none should be publicly readable.
  • If protected assets are enabled, test an authorized download and an unauthorized direct request.
  • Review PHP-FPM, web-server, and application logs for warnings after the first build.
  • Verify scheduled jobs, backups, log rotation, and monitoring before declaring the site ready.

Troubleshooting common failures

“Composer says my PHP version or extension is unsupported”

Check the PHP binary used by the shell, then list loaded modules and compare them with the required extension list. Install the missing extension for the same PHP minor version and rerun Composer. Also check that the web server’s PHP-FPM pool is not using an older binary.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Every URL except the home page returns 404

Confirm that the document root is public/, not the project directory. On Apache, enable mod_rewrite and allow the supplied .htaccess. On Nginx, add the try_files $uri /index.php?$query_string fallback and reload the validated configuration.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The site shows a permissions error when uploading

Check ownership and write access on public/assets/ and the application’s temporary/cache paths. Grant write access to the service account only for those locations, then retry an upload while watching the PHP-FPM and web-server logs. Avoid changing the whole project to mode 777.

PHP source is downloaded or displayed

The request is reaching the web server without a PHP handler. Verify PHP-FPM is running, the configured socket or upstream exists, and the virtual host or server block sends .php requests to it. Never leave source exposure enabled on a public hostname.

Password-reset links use the wrong domain

Inspect the reverse proxy’s forwarded host and scheme headers. SilverStripe uses the host header when constructing those links, so an internal proxy hostname or an untrusted header can produce unusable URLs. Correct the proxy configuration and test through the public domain.

Assets or GraphQL output are missing after deployment

Compare the release contents with the build output. Confirm that public/_resources/, public/_graphql, and .graphql-generated are generated or copied when the installed modules require them, and that the web-server account can read them.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ongoing maintenance

Keep PHP within the SilverStripe-supported range, update Composer dependencies through a controlled release process, and test upgrades on a staging copy before production. Back up the database and uploaded assets together; a database-only backup cannot restore images and documents, while an assets-only backup cannot restore page content or configuration state.

Review the webroot after every deployment, confirm that .env, app/, and vendor/ remain outside it, and periodically test that protected assets cannot be fetched directly. Monitor disk usage, PHP-FPM failures, database capacity, and failed administrator logins so a full disk or exhausted worker pool does not become an unexplained CMS outage.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.