Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot
The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...
Configurează STUN astfel încât browserul ICE să poată completa bidirecțional
Apeluri de la browser la browser, conectate la stratul SIP, dar nu audio în ambele direcţii. Căsuţa vocală (în sens unic Asterisk → browser) a funcţionat deoare...
Browser gazdă SIP WSS pe intern.kamocrm.com (cert real)
Browser-ii au refuzat conexiunea WebSocket la ************* cu cod închis 1006 pentru că Traefik îşi servea certificatul implicit autosemnat pentru acel nume ga...
Faceți configurarea WebRTC supraviețui repornire pod
Abordarea anterioară (http custom.conf cu [general] suprascriere) nu a De fapt, să-şi facă efectul pentru că Asterisk's INI parser nu onorează mai multe Secţiun...
Activează serverul Asterisk integrat HTTP pe :8089 pentru WebRTC /ws
A chan pjsip care, la rândul său, necesită serverul Asterisk încorporat HTTP pentru a fi difuzate. ă implicit FreePBX 17 instala nave cu acel server dezactivat...
Expune portul 8088 direct pe serviciul ClusterIP
Serviciul a avut doar port 80→8088 cartografiere. Servicii interne care utilizează - Nu. (de exemplu, VOIPservice API token cereri) au fost calendarul pentru că...
Adaugă eșuează2ban-config ConfigHartă pentru k1m1
Referințe de desfășurare eșuează2ban-config ConfigMap (jail.local + asterisc-security.conf) dar nu a existat, blocând pod la Muntele Volume. Setare și prevenire...
Permite/domeniul/prefixul traseului pe tema IngressRoute pentru CORS
Tema config la tema.kamocrm.com/domeniu/... nu a fost potrivit de regulile de rută existente (numai/public/ și/internă/au fost permise), așa că Traefik a return...
Se înlocuiește Coqui TTS cu Piper TTS (en US-norman-mediu)
Modelul Coqui VCTK nu are boxe numite vocea exacta a lui Norman [mediu]. Piper binar (~3 MB) și model (~60 MB) sunt descărcate de un container init pe prima cu...
Adaugă local net pentru Split-DNS / LAN client RTP fix
Telefoane pe același LAN ca și conexiunea k1m1 prin DNS divizat (domeniul rezolvă la 192.168.4.22 intern). Fără a local net, Asterisk încă face publicitate dome...
Contact vrăjitoresc persist = fix memorie și bloc SIP scanner la pornire.sh
- Injectaţi [res pjsip] contact=memorie în vrăjitorie.conf înainte de începerea tratamentului cu Asterisc; backend-ul implicit SQLite scade în tăcere toate cont...
Mută gazdaPath din MinIO (rclone FUSE) la local /var/lib/pbx
MinIO via rclone FUSE nu suportă CHmod POSIX sau Symlink () impusă de sistemul modulului FreePBX. Schimbat toate FreePBX și MariaDB gazduieste Volume path de la...
Wrap fwconsolă/amportal prin php pentru MinIO FUSE gazdăPath
/var/lib/asterisk este susținut de MinIO via rclone FUSE care nu suportă POSIX chmod, astfel încât scripturile fwconsole nu pot fi executate pe acest volum. sta...
Adaugă preStop cârlig și terminareGracePeriodSeconds
Containerele au fost obtinerea blocat în Terminare deoarece fundal Asterisc procesele continuate după apache2ctl (PID 1) ieșit. PreStop cârlig trimite SIGTERM t...
Adăugați bootstrap.php nevoie pentru a regenerat /etc/freepbx.conf
Instalatorul scrie freepbx.conf cu sursa de date=" și one once pentru bootstrap.php, care config.php depinde de încărcarea clasei FreePBX. Versiunea noastra reg...
Regenerează/etc/freepbx.conf la repornire
/etc este efemeră (nu o gazdăPath), deci /etc/freepbx.conf scris de Instalatorul este pierdut la fiecare repornire. Ramură adăugată pentru regenerare ea de la e...
Bypass start asterisk, așteptați priza de control în schimb
start asterisk foloseste Reporneşte, făcând ca bucla de aşteptare pentru Asterisk să fie atârnată. Acum porneşte. Asterisk direct prin safe asterisk (după ce a...
Start Asterisc în fundal, așteptați pentru ea, apoi executați instalator
Punctul de intrare.sh nu ruleaza FreePBX incursiune servicii. startup.sh acum reproduce pașii de configurare punctul de intrare, începe Asterisk în fundal, așt...
Lasă punctul de intrare să se ocupe de instalare, nu de pornire.sh
Instalator FreePBX (php install -n) necesită asterisk să fie deja Alergând. Startup nostru.sh a fost de asteptare înainte de a începe Asterisk, provocând "Error...
Mont /etc/asterisk numai, nu /etc, pentru a remedia eroarea PHP simplexml
Montarea întregului /etc ca gazdă Volumul Path corupea extensia PHP încărcare chiar și după însămânțare din imagine la timpul de instalare. Acum doar /etc / as...
Reducerea limitelor de procesor la raportul 2:1 pentru eliminarea supraangajamentului
Docs 4→1 core, jibri 4→2 cores, libretranslate 2→1 core, bergamot 2→1 miez, coturn 1→0.5 miez. Salvează ~7,5 nuclee off limite nod.
Comută la escomputers/freepbx:17 cu arhitectura corectă
obosit/freepbx nu are imagine FreePBX 17 (abandonată din 2022). escomputers/freepbx:17 (actualizat Apr 2026, Asterisk 21 + FreePBX 17) necesită un pod separat M...
Tls import de denumire, export fqdn cale; ruta de mail folosește TLSStore implicit
Un certificat/secret per FQDN astfel încât frunzele NC se potrivesc SNI (Safari)
Remove nonexistent postfix-lmdb package, install lmdb library instead
postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.
Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory
- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...
Switch Postfix sasl_passwd from hash to lmdb format
Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...
Set Traefik externalTrafficPolicy=Local to preserve client IP
With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...
Clean up legacy analytics deployment on each CI run
Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.
Strip X-Frame-Options header in iframe-compatible middleware
Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.
Reset document.title in rebrand() when React overwrites it
React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...
Replace "analytics" text nodes with "Kamo Analytics" instead of clearing
Use TreeWalker to remove all "analytics" text nodes from rendered DOM
The workspace nav title "analytics" comes from JS bundles loaded after auth, rendered as a text node next to the logo SVG. Uses TreeWalker to find and clear all...
Add guarded MutationObserver for client-side rendered logo/text
Login page and dashboard content is rendered by Next.js JS bundles, not in the HTML body, so sub_filter can't reach it. Adds a script with a busy-flag-guarded M...
Redirect favicons at nginx level, fix RSC payload escaping
- Serve favicon via nginx 302 redirect instead of trying to rewrite HTML/RSC payload href strings (cleaner, always works) - Fix RSC title replacement with pro...
Use pure sub_filter replacements instead of MutationObserver
MutationObserver caused infinite loop (DOM change -> observer fires -> DOM change). Switch to direct nginx sub_filter string replacements targeting both static ...
Comprehensive analytics rebranding for login page and dashboard
- Replace title dynamically (handles "Login | analytics", "Dashboard | analytics" etc.) - Replace "analytics" h2 text on login page with Kamo logo image - Repla...
Use MutationObserver to rebrand analytics client-side rendered UI
analytics is a Next.js app that sets title/logo via JavaScript after initial HTML load. Replaces static sub_filter approach with injected script that uses Mutat...
Purge incomplete model directories in init container
The service crashes on startup if it finds a directory in /models that has missing or partial model files. Add a sweep at init start that removes any directory ...
Remove GitHub LFS downloads, use only data.statmt.org models
GitHub raw URLs return LFS pointer files, not actual binaries. Drop enru/enar downloads entirely — LibreTranslate handles those locales. Only download the 4 pai...
Scale bergamot to 0, update image to mozilla/translation-service
Modelul Google Cloud Storage de descărcare găleată (bergamot-modele-sandbox) întoarce 404 pentru toate fișierele și firefox-translations-modele repo a fost arhi...
Scale bergamot înapoi la 1 replica
Bergamot a fost la 0 replici cu serviciul său încă înregistrat. FurnizorulRouter în TranslateService nu a avut întrerupător de circuit, astfel încât fiecare cer...
Elimină - restricție numai pentru încărcare de la libreTraducere
Toate pachetele lingvistice necesare sunt preinstalate pe volumul gazdăPath. --load-doar a fost prevenirea unor pachete de încărcare. Fără steag, LibreTraduceţi...
Foloseste startupProbe pentru LibreTranslate pentru a manipula descărcări lungi de modele
startupProbe cu 60 încercări x 30s = fereastra de pornire 30min pentru Descarcă modelul inițial. După ce pornirea s-a încheiat, viaţa normală şi sondele de preg...
Restrict LibreTraducerea la numai încărcați modelele de limbă acceptate
Utilizare --load-doar cu cele 22 de coduri lingvistice acceptate în loc de descărcarea tuturor modelelor disponibile (~sute de GB). Elimină --actualizează-model...
Elimină steagul invalid --load-awesome-ai-modele din LibreTraduce
Steagurile nu există în imaginea curentă libretranslate. Înlocuiește cu - modele actualizate pentru a asigura că pachetele lingvistice sunt descărcate la pornir...
Add LibreTranslate permission init container, scale Bergamot to 0
LibreTranslate was crashing with PermissionError on packages subdir. Added busybox init container to mkdir + chmod 777 the mounted hostPath before the main cont...
Ca ceea ce vezi de transport maritim?
Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.