Bitrix Push & Pull Server: Installation and Optimization
When notifications about new tasks, messages, or order status changes don't arrive in Bitrix24, the culprit is almost always an incorrectly configured Push & Pull server.
Without it, the system uses Long Polling, causing delays of 30+ seconds and additional server load. We take on the full configuration of this component: from Node.js installation to integration with the pull module and WebSocket connection testing. Contact us for a free project assessment.
How Push & Pull Works: Architecture and Components
The Push server is a separate Node.js process that maintains persistent WebSocket connections with user browsers. The PHP backend sends messages to the Push server via HTTP, which then broadcasts them to all connected clients. Components:
| Component | Purpose |
|---|---|
| Node.js (Push server) | Manages WebSocket connections and broadcasts notifications |
push.sender module (PHP) |
API for sending push messages from Bitrix |
pull module (JS) |
Client-side subscription to notifications in the browser |
Why WebSocket Is Better Than Long Polling
WebSocket provides real-time bidirectional communication without constant HTTP requests. In tests, it is 2–3 times faster than Long Polling in delivery speed and reduces CPU load by up to 60%. For online stores, this is critical: an order status change notification arrives instantly, not after 30 seconds. At 5000 concurrent connections, WebSocket uses 60% less memory than Long Polling, significantly saving server resources. According to Bitrix documentation, implementing WebSocket (websockets) in Bitrix can reduce server infrastructure costs by up to 30%.
How to Set Up the Push Server in an Hour
Installing Node.js LTS and the bitrix-push-server package takes no more than 15 minutes. Configuration takes another 10 minutes, nginx setup 5 minutes. The remaining time goes to Bitrix integration and testing. In complex cases (e.g., clustering), the process may take up to 3 days.
Installing Node.js (LTS)
Use the official NodeSource repository for the LTS version:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs node --version # v20.x.x npm --version Configuring the Push Server
Install the Bitrix Push Server package via npm or download from marketplace.1c-bitrix.ru. Example configuration file /etc/bitrix/push-server.json:
{ "security": { "key": "SECRET_KEY_HERE" }, "server": { "port": 8893, "hostname": "0.0.0.0" }, "serverHTTPS": { "port": 8894, "hostname": "0.0.0.0", "key": "/etc/ssl/private/site.key", "cert": "/etc/ssl/certs/site.crt" }, "log": { "level": "info", "file": "/var/log/bitrix-push-server.log" } } SECRET_KEY_HERE is a long random string. Use this same key in the Push module settings in Bitrix.
Configuring nginx for WebSocket Proxying
The Push server listens on ports 8893 (HTTP) and 8894 (HTTPS). Add to your nginx configuration:
location /bitrix/subws/ { proxy_pass http://127.0.0.1:8893/bitrix/subws/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_read_timeout 3600; proxy_send_timeout 3600; } location /bitrix/sub/ { proxy_pass http://127.0.0.1:8893/bitrix/sub/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_read_timeout 3600; } location /bitrix/rest/ { proxy_pass http://127.0.0.1:8893/bitrix/rest/; proxy_set_header Host $host; } Integration with the Pull Module in Bitrix
In the administrative interface: Settings → Product Settings → Module Settings → Push and Pull. Specify:
- Public path:
https://yoursite.ru/bitrix/ - Private path:
http://127.0.0.1:8893/bitrix/ - Signature key: the same
SECRET_KEY_HERE
After saving, check in the browser (DevTools → Network) — WebSocket connections to /bitrix/subws/ should appear.
Auto-Start via systemd
Create /etc/systemd/system/bitrix-push.service:
[Unit] Description=Bitrix Push Server After=network.target [Service] Type=simple User=www-data ExecStart=/usr/bin/bitrix-push-server --config /etc/bitrix/push-server.json Restart=always RestartSec=5 [Install] WantedBy=multi-user.target Start it: systemctl enable bitrix-push && systemctl start bitrix-push.
What’s Included in Turnkey Setup
- Audit of current server and Bitrix configuration
- Installation of Node.js LTS and the bitrix-push-server package
- Creation of a configuration file with a unique security key
- Configuration of nginx for WebSocket proxying (HTTP and HTTPS)
- Integration of the
pullmodule in the Bitrix admin panel - Setup of auto-start via systemd
- Testing of WebSocket connections and notifications
- Delivery of documentation and access details
Common Mistakes When Setting Up the Push Server
- Security key mismatch between config and Bitrix settings
- Firewall blocking ports 8893/8894
- Missing
mod_proxy_wstunnelmodule in nginx - Incorrect public path (must end with
/bitrix/) - Using an outdated Node.js version (below 18)
Comparison: WebSocket vs Long Polling
| Parameter | WebSocket | Long Polling |
|---|---|---|
| Delivery latency | 100–500 ms | 20–30 sec |
| CPU load | Low | High (constant HTTP requests) |
| Memory usage for 5000 connections | ~200 MB | ~500 MB |
| Setup complexity | Medium (requires nginx) | Low (works out of the box) |
Our Work Process
- Analysis — we study your current architecture and load.
- Design — we determine the optimal configuration (ports, keys, nginx).
- Deployment — we install and configure the Push server.
- Testing — we verify all real-time scenarios (chats, notifications, cart).
- Documentation — we deliver final configs and instructions.
Estimated Timelines and Cost
Setup takes from 1 to 3 business days depending on infrastructure complexity. Cost is determined after analysis of your project. Our team has 10+ years of experience configuring Bitrix and 40+ successful projects. The price includes a 14-day warranty on operation.
For more on WebSocket technology, see Wikipedia. Order a turnkey Push server setup — get a free consultation and project assessment.

