Start typing to search across invoices, services, domains, tickets, and more...
For a company with headquarters in mainland China and branches abroad, the most balanced place to host a self-managed ERP, OA and CRM server is usually Hong Kong on a China Telecom CN2 GIA route: fast for the China HQ, directly reachable from overseas offices, and with no ICP filing required. IMIDC offers Hong Kong CN2 GIA VPS and dedicated servers for Odoo, ERPNext or Nextcloud/OnlyOffice, with Moscow (CN2) and Los Angeles as alternatives for Russia-trade and US-centric firms.
Takeaway: one server that both the China HQ and the foreign branches can use comfortably beats two systems that must be synchronised.
| Hosting location | Access from China HQ | Access from overseas branches | ICP filing | Typical fit |
|---|---|---|---|---|
| Mainland China cloud | Fastest | Variable, often slow across the border | Required for websites on ports 80/443 | China-only operations |
| Hong Kong (IMIDC, CN2 GIA) | Fast, stable at peak hours | Good from Asia, Europe and the US | Not required | China HQ + Asian/global branches |
| Moscow, Russia (IMIDC, CN2) | Good via CN2 | Best for Russia and CIS offices | Not required | China–Russia trading companies |
| Los Angeles, USA (IMIDC, 9929/CN2) | Acceptable via optimized routes, higher latency | Best for US offices | Not required | US-centric branches, US sales teams |
The CN2 GIA route matters most during evening peaks, when ordinary international routes from mainland China often congest. Test from the HQ office with mtr to the IMIDC test IP before buying.
Takeaway: choose by business process, not by feature list; many companies run an ERP plus Nextcloud side by side.
| Stack | Covers | Tech | Licence (check current terms) |
|---|---|---|---|
| Odoo Community | Sales, CRM, purchasing, inventory, invoicing, HR basics | Python + PostgreSQL | LGPLv3; Enterprise edition is paid |
| ERPNext (Frappe) | Accounting, manufacturing, inventory, HR/payroll, CRM | Python + MariaDB + Redis | GPLv3 |
| Nextcloud + OnlyOffice | OA: file sharing, online documents, calendar, chat, approvals via apps | PHP + database + document server | AGPLv3; OnlyOffice Docs community edition has a concurrent-connection cap |
Takeaway: ERP load depends on concurrent users and reports, not head count; plan for month-end peaks.
| Named users | Odoo / ERPNext | Nextcloud + OnlyOffice | Suggested IMIDC product |
|---|---|---|---|
| Up to 20 | 4 vCPU, 8 GB RAM, 100 GB SSD | 4 vCPU, 8 GB RAM, storage as needed | Hong Kong CN2 GIA VPS (larger plan) |
| 20–100 | 8 cores, 32 GB RAM, SSD RAID 1 | 8 cores, 16–32 GB RAM | Hong Kong dedicated server |
| 100–300 | 16+ cores, 64 GB RAM, database on its own server | Separate document server node | Two dedicated servers, custom via sales |
For Odoo, a common starting point is workers = CPU cores × 2 + 1, with about 1 GB of RAM per worker plus PostgreSQL's share. These are planning estimates; watch CPU and database latency during the first month-end close.
Takeaway: Docker Compose plus a reverse proxy with automatic HTTPS gives you a reproducible deployment in under an hour.
# /opt/erp/docker-compose.yml - Odoo 17 + PostgreSQL 16
services:
db:
image: postgres:16
environment:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: change-me
POSTGRES_DB: postgres
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
odoo:
image: odoo:17.0
depends_on: [db]
environment:
HOST: db
USER: odoo
PASSWORD: change-me
command: ["--proxy-mode", "--workers=5", "--max-cron-threads=1"]
volumes:
- odoo-data:/var/lib/odoo
- ./addons:/mnt/extra-addons
ports:
- "127.0.0.1:8069:8069"
- "127.0.0.1:8072:8072"
restart: unless-stopped
volumes:
db-data:
odoo-data:
# /etc/caddy/Caddyfile - automatic HTTPS in front of Odoo
erp.example.com {
encode gzip
reverse_proxy /websocket* 127.0.0.1:8072
reverse_proxy 127.0.0.1:8069
}
# Start everything
cd /opt/erp && docker compose up -d && systemctl reload caddy
Point erp.example.com to the server IP, keep ports 8069/8072 bound to 127.0.0.1, and open only 80/443 (plus SSH from your admin IPs). For ERPNext, the official frappe_docker repository provides an equivalent compose setup; for an OA suite, Nextcloud All-in-One is the quickest path:
# Nextcloud All-in-One (Nextcloud + optional OnlyOffice/Collabora, Talk, backups)
sudo docker run -d --init --sig-proxy=false --name nextcloud-aio-mastercontainer \
--restart always -p 8080:8080 \
-e APACHE_PORT=11000 -e APACHE_IP_BINDING=127.0.0.1 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest
# then open https://203.0.113.10:8080 once to finish setup, and close 8080 afterwards
Takeaway: one identity per employee, with 2FA and instant off-boarding, matters more across borders than in a single office.
auth_oauth module supports OAuth2/OIDC providers; ERPNext: "Social Login Key"; Nextcloud: the user_oidc app.# Keycloak as the company identity provider (OIDC), behind the same reverse proxy
docker run -d --name keycloak --restart unless-stopped -p 127.0.0.1:8180:8080 \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRAP_ADMIN_PASSWORD=change-me \
quay.io/keycloak/keycloak:26.0 start \
--hostname=https://sso.example.com --http-enabled=true --proxy-headers=xforwarded
Takeaway: back up the database and the filestore together, keep copies in a second region, and test restores.
#!/bin/sh
# /usr/local/bin/erp-backup.sh - nightly, run from cron at 01:30
set -e
D=$(date +%F)
mkdir -p /backup
cd /opt/erp
docker compose exec -T db pg_dump -U odoo -Fc mycompany > /backup/odoo-db-$D.dump
docker run --rm -v erp_odoo-data:/data -v /backup:/out alpine \
tar czf /out/odoo-filestore-$D.tgz -C /data filestore
export RESTIC_REPOSITORY=sftp:[email protected]:/srv/restic/erp
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic backup /backup /opt/erp
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune
find /backup -mtime +3 -delete
Send the restic repository to a second IMIDC location such as Tokyo or Taipei, keep the encryption password outside the server, and restore into a test instance once a quarter. ERP data without matching attachments is only half a backup.
Takeaway: hosting in Hong Kong avoids ICP filing but does not remove data-protection duties; get local advice. This is not legal advice.
Takeaway: start in Hong Kong unless most users or legal requirements point elsewhere.
IMIDC sales can quote custom RAM, storage and RAID layouts, and the free migration service can move an existing Odoo, ERPNext or Nextcloud instance.
Hong Kong on a CN2 GIA route is usually the best compromise: fast and stable from mainland China, directly reachable from abroad, and no ICP filing. IMIDC offers Hong Kong CN2 GIA VPS from $18/mo and dedicated servers from $139/mo for this purpose.
No, ICP filing applies to servers inside mainland China. You still need to follow applicable laws on content and personal data, including PIPL rules on cross-border transfers.
Odoo is strong in sales, CRM and inventory with a large app ecosystem; ERPNext is fully open source and strong in accounting and manufacturing. Both run well in Docker on an IMIDC server and both support Simplified Chinese.
IMIDC operates both: Hong Kong with China Telecom CN2 GIA and Moscow with a CN2 route to mainland China, which suits China–Russia trading companies that need a CRM close to both markets.
Choose a Hong Kong CN2 GIA VPS or Hong Kong dedicated server, or for other markets the Moscow dedicated server and USA dedicated servers. To move an existing system, see free migration, and for sizing advice contact IMIDC sales or open a ticket.