Le truc, c’est de viser ce qui **répète** (assets), ce qui **burst** (pics), et ce qui **sature** (gros transferts). ## 1) Odoo “sites web” : là où tu peux gagner gros Odoo sert beaucoup de contenu *identique* (assets, images, pièces jointes). Ça se cache très bien **au VPS**. ### À faire au VPS (reverse-proxy cache) - **Cache long** pour les assets versionnés : - `/web/assets/*` - fichiers statiques thème/website - **Cache prudent** pour les médias/attachments : - `/web/content/*` (souvent images/documents publics) - **Micro-cache** (1–5 s) pour les pages publiques *anonymes* (anti-burst) : énorme ROI quand tu as des pics. Même 5 secondes de micro-cache peut diviser tes hits backend par 10 sur un pic. ### Réduire le poids - Activer **gzip/brotli** (au VPS) pour HTML/CSS/JS/JSON. - Forcer des images plus petites (WebP si ton pipeline le permet). - Vérifier que tes pages publiques ne tirent pas des méga-images “full-res”. ## 2) Nextcloud : gains réels, mais plus limités Nextcloud est majoritairement **auth + personnalisé + WebDAV** ⇒ cache “full” non. Par contre : ### Ce que tu peux cacher sans risque (au VPS) - **Assets statiques** Nextcloud (JS/CSS/fonts/images) : `/core/`, `/apps/`, `/dist/`, `/themes/` (selon ton layout). - Résultat : moins d’aller-retour maison pour le “bruit” de l’UI, surtout quand plusieurs utilisateurs se connectent. ### Ce que tu optimises surtout autrement (pas via cache) - **Limiter la concurrence** et **plafonner le bulk** : - limiter le nombre de téléchargements simultanés - plafonner le débit par connexion (ou par IP) - **Contrôler les partages publics** (si c’est ça qui mange ton upload) : - expiration des liens publics - limiter taille max / quotas - éviter “gros dépôt public” tant que tu es à 50 Mb/s ## 3) Le trio gagnant pour ton 50 Mb/s 1. **QoS/shaper à la maison** (cap à \~45 Mb/s + fq_codel/cake) → stabilité immédiate. 2. **Edge cache au VPS** pour Odoo + assets Nextcloud → réduction du trafic répétitif. 3. **Rate-limit / limites de transferts** (au VPS et/ou à la maison) → un client ne te tue pas. ## 4) Exemple concret (Nginx cache au VPS) – simple et safe Tu peux garder HAProxy pour le routage, et mettre Nginx devant pour le cache (ou l’inverse). Exemple Nginx “edge cache” : ```nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=EDGE:200m max_size=30g inactive=7d use_temp_path=off; map $http_cookie $has_cookie { default 1; "" 0; } map $http_authorization $has_auth { default 1; "" 0; } # Odoo - assets cacheables location ^~ /web/assets/ { proxy_pass http://odoo_home; proxy_cache EDGE; proxy_cache_valid 200 7d; add_header X-Cache $upstream_cache_status always; } # Odoo - médias (à valider selon ton usage) location ^~ /web/content/ { proxy_pass http://odoo_home; proxy_cache EDGE; proxy_cache_valid 200 1d; add_header X-Cache $upstream_cache_status always; } # Odoo - microcache pages publiques (GET sans cookies/auth) location / { proxy_pass http://odoo_home; if ($request_method != GET) { set $skip 1; } if ($has_cookie = 1) { set $skip 1; } if ($has_auth = 1) { set $skip 1; } proxy_cache EDGE; proxy_cache_bypass $skip; proxy_no_cache $skip; proxy_cache_valid 200 2s; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cache $upstream_cache_status always; } ``` Même si tu n’actives que **/web/assets/** + micro-cache 2s sur pages publiques, tu vas le sentir. ## 5) La question qui détermine la meilleure optimisation (1 seule) Ton upload est surtout mangé par : - **visiteurs des sites Odoo** (trafic web public), ou - **transferts de fichiers Nextcloud** (downloads/shares/sync) ? Dis-moi “Odoo” ou “Nextcloud”, et je te donne le réglage prioritaire (cache/micro-cache vs plafonds/rate-limit) avec des valeurs concrètes adaptées à ton 50 Mb/s.