Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11You can self-host OroCRM on a Linux VPS with either the release’s Docker Compose stack or a native Nginx/Apache and PHP-FPM deployment. Start with a supported Linux distribution, SSD storage, at least 2 CPU cores and 2 GB RAM for a small single-server installation, then size upward for users, imports, integrations, and Enterprise services. Use the exact PHP, PostgreSQL, Node.js and PNPM versions required by your OroCRM release; put DNS and HTTPS in place before making the CRM public; and run workers under Supervisor or an equivalent process manager.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
What a production OroCRM VPS must provide
Oro’s current system requirements describe a typical single-server starting point of 2 CPU cores, 2 GB RAM and a fast disk, preferably SSD. That is a minimum starting point, not a universal production size. Active users, data volume, imports, integrations, background jobs and search services all increase consumption. A busy installation may need more memory and separate database, search or queue hosts.
As an Amazon Associate I earn from qualifying purchases.
Recommended Free Tools
| Area | Current requirement or recommendation | Planning note |
|---|---|---|
| Operating system | Linux distributions such as Red Hat, Ubuntu, Debian or Oracle Linux | Use the distribution and package versions supported by the exact Oro release. |
| CPU and memory | Minimum typical setup: 2 CPU cores and 2 GB RAM | Add headroom for users, integrations, imports and Enterprise services. |
| Storage | Fast disk; SSD recommended | Leave room for PostgreSQL growth, uploaded files, logs, backups and temporary build files. |
| Web server | Current stable or mainline Nginx, or Apache | Terminate TLS at the web server or an upstream proxy. |
| PHP | PHP 8.5 or newer; CLI and web server must use the same version | Set memory_limit to at least 1 GB and configure date.timezone. |
| Database | PostgreSQL 17.6 or newer | Enterprise documentation also lists Enterprise PostgreSQL/EnterpriseDB 18.3 or newer for Enterprise edition. |
| JavaScript tooling | Node.js 24.11.0 or newer but below 25; PNPM 10.7.0 or newer | Pin these versions during asset builds and upgrades. |
| Process control | Supervisor or another process controller | Use it for workers and scheduled/background processes. |
PHP must provide ctype, curl, fileinfo, gd, intl, json, mbstring, sodium, openssl, pgsql, pcre, simplexml, tokenizer, xml, zip, imap, soap, bcmath and ldap. MongoDB 2.0 or newer is optional when you use OroGridFSConfigBundle. Redis 8.4 or newer can improve caching; Tidy supports HTML-to-text conversion; pngquant and jpegoptim reduce stored image sizes; and Gotenberg 8.5.x or newer supports PDF generation.
Choose the deployment model before installing
Docker Compose
The Compose workflow gives you release-matched service definitions and a repeatable way to run PostgreSQL and, depending on the edition, Elasticsearch, RabbitMQ, Redis and MailCatcher. It is usually the quickest route for a new administrator because application and supporting-service versions are described together. Always use the Compose file shipped with the target Oro release rather than copying one from an older article.
#1 Best Overall
Oro’s Docker/Symfony instructions use the Symfony Local Web Server for convenience. That server is explicitly not intended for production. In production, place Nginx or Apache in front of PHP-FPM, use the application’s public document root, and configure a real hostname and certificate.
Native Nginx or Apache with PHP-FPM
A native deployment gives direct control over system packages, service accounts, filesystem permissions, TLS, Supervisor and operating-system monitoring. It also makes patching and version compatibility your responsibility. Older Community Edition instructions show the general shape of this method but contain obsolete CentOS, PHP and database versions; treat them as historical concepts only and substitute the current requirements above.
| Decision factor | Docker Compose | Native services |
|---|---|---|
| Reproducibility | High when the release’s Compose file is kept with the deployment. | Depends on your package and configuration management. |
| Isolation | Each service has a defined container and network boundary. | Services share the VPS operating system unless separately isolated. |
| Upgrade control | Pin image tags and review the release’s migration notes. | Pin OS packages and PHP extensions individually. |
| Backups | Back up database volumes and uploaded-file volumes, not just container definitions. | Back up PostgreSQL and application files directly. |
| Operational familiarity | Best if your team already operates Compose. | Best if you already manage Nginx, PHP-FPM, PostgreSQL and Supervisor on Linux. |
Prepare the VPS securely
- Create a non-root administrator. Add a named account with sudo access. Reserve root for emergency recovery and initial provider tasks.
- Apply operating-system security updates. Reboot when the kernel or core libraries require it, then confirm the expected distribution release.
- Configure a restrictive firewall. Allow SSH only from trusted networks where practical, and allow HTTP (80) and HTTPS (443) for the public web service. Do not expose PostgreSQL, RabbitMQ, Elasticsearch or Redis directly to the internet.
- Choose SSD-backed storage. Monitor free space as uploaded documents, logs, database tables and backups grow.
- Set time and hostname correctly. Consistent system time is important for logs, certificates, scheduled jobs and session behavior.
- Create separate identities. Use one administrative account for installation and updates and a least-privilege runtime account for the web and worker processes. Do not run the application as root.
Record the target Oro release and edition before installing any package. Requirements can change between releases, so do not mix a current application with package pins copied from the retired Oro 4.2 documentation.
Install the exact runtime versions
PHP and extensions
Install PHP 8.5 or the newer version explicitly supported by your release. Verify both interpreters independently:
php -v
php --ini
php -m
The command-line PHP used by Composer and Oro console commands must match the PHP-FPM version serving web requests. Check the FPM pool and web-server configuration rather than assuming the distribution’s default PHP is correct.
Rank #2
Set these values in the active PHP configuration:
memory_limit = 1Gor higherdate.timezoneto the region used by your organization- Disable the obsolete
detect_unicodesetting where it still exists in a configuration template.
Confirm every required extension is loaded in both CLI and FPM contexts. A frequent failure is installing an extension for one PHP version while the web server uses another.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →PostgreSQL
Use PostgreSQL 17.6 or newer. For Enterprise edition, the current requirements also list Enterprise PostgreSQL/EnterpriseDB 18.3 or newer. Create a dedicated database and login, restrict database listening and firewall access to the application network, and store credentials outside publicly readable application files.
Node.js and PNPM
Asset compilation requires Node.js 24.11.0 or newer but less than 25, plus PNPM 10.7.0 or newer. Pin the versions with your normal version-management method, then verify:
node --version
pnpm --version
Do not let an operating-system upgrade silently move Node.js to a major version outside Oro’s supported range.
Supervisor and optional components
Install Supervisor or an equivalent controller before enabling workers. Configure automatic restart, a dedicated runtime user, log destinations and a shutdown policy. Community installations commonly use PostgreSQL and MailCatcher in the documented Compose setup. Enterprise deployments can add Elasticsearch, RabbitMQ and Redis; Redis is also an optional cache in the general requirements. Plan memory and disk for every service you enable.
Rank #3
Install OroCRM with the release’s Docker Compose workflow
Obtain the application source and Compose files for the exact release and edition from Oro’s distribution channel. Keep the files under a controlled directory and protect environment files containing database, mail and application secrets.
- Review the Compose definition. Identify application, database, search, queue, cache and mail services. Confirm published ports; bind internal services to the private Docker network rather than a public interface.
- Start the services.
docker compose up -d
- Install PHP dependencies using the Symfony helper used by the guide.
symfony composer install -n
- Run the Oro installer. The documented command uses sample data and a local URL. Replace every example value, especially the password and URL, before execution:
export ORO_ADMIN_PASSWORD='use-a-long-random-secret'
symfony console oro:install -vvv
--sample-data=n
--application-url=https://crm.example.com
--user-name=admin
[email protected]
--user-firstname=CRM
--user-lastname=Administrator
--user-password="$ORO_ADMIN_PASSWORD"
--organization-name=Example
--timeout=0
--env=prod -n
The example intentionally disables sample data. Choose --sample-data=y only for a non-production evaluation. Remove the exported secret from your shell history and environment after installation, and create a normal administrator account with a unique password.
- Build and deploy assets. Use the release’s documented PNPM and Node.js commands, then check that compiled CSS and JavaScript are readable by the runtime account.
- Replace the development listener. Do not publish Symfony Local Web Server. Configure Nginx or Apache and PHP-FPM as the only public application path.
Build a native Nginx/PHP-FPM installation
- Install the supported Linux packages. Add the exact PHP version, all required extensions, PostgreSQL client tools, Nginx or Apache, Supervisor, Node.js and PNPM.
- Create application directories. Keep releases, writable cache, logs, uploaded files and secrets in deliberate locations. The web server should expose only Oro’s public document root, never the project’s configuration or vendor directories.
- Configure PHP-FPM. Select the supported PHP socket or port, set a suitable worker count for available memory, and apply the 1 GB-or-more memory limit and timezone. Ensure the pool runs as the runtime user.
- Configure Nginx or Apache routing. Forward PHP requests to FPM, serve static assets directly, preserve the original HTTPS scheme behind any proxy, and deny access to hidden files and configuration artifacts.
- Install dependencies and run Oro’s console installer. Use the same release-specific command and database credentials as the Compose deployment, but point the application URL at the real hostname.
- Register workers with Supervisor. Use separate programs where the release requires them, set autorestart behavior, and verify that the runtime account can write only where Oro needs it.
Do not copy an old Apache virtual host or PHP configuration unchanged. The legacy guide’s package versions are not a safe baseline for a current release.
Configure DNS and HTTPS before public access
- Create an A record for the CRM hostname pointing to the VPS public IPv4 address. Add an AAAA record only when IPv6 is configured and firewalled correctly.
- Wait for DNS propagation and verify that the hostname resolves to the intended server from outside your VPS network.
- Install a certificate from a trusted certificate authority and configure the web server for TLS.
- Redirect HTTP to HTTPS and set the application URL to the HTTPS hostname used by customers and integrations.
- Confirm that generated links, login redirects, cookies and webhook endpoints all use HTTPS.
Oro’s Community Edition environment guidance strongly recommends HTTPS for production public websites and requires DNS pointing to the server for remote access. Do not expose the installation using an IP address or a self-signed certificate for normal users.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Configure background jobs and edition-specific services
Community edition footprint
A minimal Community setup generally consists of the Oro application, PostgreSQL and a mail-capture service such as MailCatcher for development or testing. For production mail delivery, configure the supported SMTP service for your organization rather than leaving a development catcher exposed.
Enterprise edition footprint
Enterprise deployments may require Elasticsearch for search, RabbitMQ for messaging and queues, Redis for cache or session-related services, and MailCatcher in the supplied Compose environment. These components can dominate RAM and disk usage on a small VPS. If the 2 GB baseline cannot keep the database, PHP-FPM, workers and search service healthy, move services to larger or separate hosts instead of tuning below the documented requirements.
Worker verification
- Check Supervisor status after every reboot.
- Run a controlled background task and confirm completion in Oro’s logs.
- Watch for repeated restarts, memory exhaustion and growing queue depth.
- Keep worker logs separate from web logs so a noisy integration cannot fill the root filesystem unnoticed.
File ownership, secrets and routine operations
The web and worker processes should run as the dedicated runtime user. Installation, dependency updates and migrations should be executed by the separate administrative account with narrowly scoped sudo rights. This separation limits the damage from a compromised web process and prevents update artifacts from becoming runtime-writable.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- Store database passwords, SMTP credentials, encryption keys and API tokens in protected environment or secret-management facilities.
- Use restrictive permissions on application configuration and uploaded files.
- Rotate credentials when staff or automation changes.
- Keep operating-system, PHP, database, container and Oro release updates on a documented maintenance schedule.
- Review release-specific migration and licensing requirements before upgrading; public pages do not establish a universal entitlement model for every edition.
Backups and recovery you can actually test
Back up at least two independent data classes: PostgreSQL and Oro’s uploaded/application files. In Docker, database and file volumes need explicit backup jobs; recreating containers does not restore data. In a native installation, include the PostgreSQL cluster or logical dumps, uploaded documents, configuration secrets and any search or queue data that your recovery plan requires.
- Take encrypted, versioned backups on a schedule matched to acceptable data loss.
- Keep a copy outside the VPS so disk failure or account compromise cannot erase every copy.
- Record the Oro release, PHP version, database version and deployment files with each backup set.
- Restore to an isolated test host, apply the documented connection settings, and log in with a recovery administrator.
- Measure how long the restore takes and correct missing files, permissions or extensions before a real incident.
Troubleshooting the common first-install failures
The installer reports missing PHP extensions
Compare php -m with the FPM module list and confirm that the extension package belongs to the active PHP version. Restart PHP-FPM after changing its configuration, then retest through the web server.
CLI commands work but the browser fails
This usually indicates different PHP versions, FPM permissions, an incorrect document root or a web server rule that does not pass the HTTPS scheme. Check the FPM socket, service user, error log and the hostname used in --application-url.
Best Value
Assets are missing or unstyled
Verify Node.js and PNPM versions, rerun the release’s asset build, and ensure the generated public files are readable by the runtime account. A reverse proxy or CDN must point to the same public asset path as the origin.
Workers stop after reboot
Inspect Supervisor’s program status and logs, confirm that the service is enabled at boot, and check that the runtime user can read application configuration and write required cache or log directories.
Search, queues or cache fail in Enterprise
Check service health, network names and credentials inside the Compose network or private VPS network. Confirm that Elasticsearch, RabbitMQ and Redis versions match the release’s Compose definition and that the host has enough memory for all enabled services.
Users see redirects to an IP address or HTTP
Correct DNS, set the canonical HTTPS application URL, configure the proxy’s forwarded-protocol headers, and enforce the HTTP-to-HTTPS redirect at the edge web server.
Production readiness checklist
- Supported Linux distribution selected for the exact Oro release.
- SSD-backed VPS sized above the 2-core/2-GB starting point when workload or Enterprise services require it.
- Nginx or Apache configured with the public document root and PHP-FPM on the supported PHP version.
- All required PHP extensions installed in CLI and FPM;
memory_limitat least 1 GB; timezone set. - PostgreSQL 17.6 or newer, or the Enterprise database version documented for your edition.
- Node.js 24.11.0–24.x and PNPM 10.7.0 or newer pinned for asset builds.
- Supervisor or an equivalent controller managing workers and scheduled tasks.
- Enterprise search, queue and cache services deployed only when required and sized accordingly.
- DNS A/AAAA records resolve correctly; trusted HTTPS certificate installed; HTTP redirects to HTTPS.
- Non-root administrator and separate runtime account in use.
- Secrets protected, firewall restrictive, logs rotated and disk/RAM monitored.
- Encrypted PostgreSQL and file backups stored off-host and restored successfully in a test.
Frequently Asked Questions
Is 2 GB of RAM enough for every OroCRM installation?
No. Oro documents 2 GB as a minimum typical single-server starting point. Add memory for active users, imports, integrations and Enterprise search, queue and cache services.
Can I expose Symfony Local Web Server to customers?
No. Oro’s Docker/Symfony guide states that this server is not intended for production. Use Nginx or Apache in front of PHP-FPM with HTTPS.
Should PostgreSQL, Elasticsearch and RabbitMQ share one VPS?
They can on a small evaluation system when resources allow, but Enterprise services may require a larger VPS or separate hosts. Base the decision on measured memory, CPU, disk and queue/search load.
Quick Recap
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.




