Aktifkan built Asterisk dalam server HTTP pada: 8089 untuk WebRTC / ws
Sebuah protokol chan _ pjsip '= ws' transport rides di atas res _ http _ websocket, yang pada gilirannya membutuhkan built Asterisk 's-di server HTTP untuk dija...
Tambahkan transport WebRTC WSS untuk softphone peramban
Chan _ pjsip Asterisk sekarang mengikat angkutan WebSocket pada 0.0.0.0: 8089 dan Traefik mengakhiri TLS di * * * * * * * * * * * * * * * * * (port 443) sehingg...
Tampilkan port 8088 secara langsung pada layanan ClusterIP
Layanan hanya memiliki port 80 £8088 pemetaan. Layanan internal memakai * * * * * * * * * * * * * * * (mis. token API VOIPService permintaan) adalah waktu kelua...
Tambahkan fail2ban- config ConfigMap untuk k1m1
Pemindahan referensi kegagalan 2ban- config ConfigMap (jail.local + asterisk- security.conf) tetapi tidak ada, memblokir pod di MountVolume. Penyiapan dan pence...
Ijinkan / domain / path awalan pada tema IngressRoute untuk CORS
Konfig tema di theme.kamocrm.com / domain /... tidak cocok dengan aturan rute yang ada (hanya / publik / dan / internal / diijinkan), jadi Traefik mengembalikan...
Kegagalan Produksi dengan penjara PJSIP dan keadaan persisten
- Tambahkan fail2ban- configmap.yaml dengan [asterisk] dan [freepbx-web] penjara, eskalasi larangan peningkatan (1h Aver24h 130d), dungu LAN, dan custom asteris...
Ganti Coqui TTS dengan Piper TTS (en _ US-norman- medium)
Model Coqui VCTK tidak memiliki speaker bernama - menggantikan dengan Piper TTS yang memiliki suara norman [sedang] tepat. biner Piper (~ 3 MB) dan model (~ 60 ...
Integrate Coqui TTS with norman voice (VCTK p267)
- Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi ...
Add LAN DNS pod for split-DNS on k1m1
Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX...
Tambahkan lokal _ net untuk split- DNS / LAN perbaikan klien RTP
Telepon pada LAN yang sama dengan koneksi k1m1 via split DNS (domain resolve ke 192.168.4.22 internal). Tanpa lokal _ net, Asterisk masih mengiklankan domain ek...
Persist magic contact = memory fix and block SIP scanner in startuppsh
- Suntikkan [res _ pjsip] kontak = memori ke penyihir.conf sebelum Asterisk dimulai; backend SQLite secara diam-diam menjatuhkan semua kontak REGISTER - Block d...
Pindahkan jalur host dari MinIO (rclone FUSE) ke lokal / var / lib / pbx
MinIO via rclone FUSE tidak mendukung POSIX chmod atau symlink () - keduanya dibutuhkan oleh sistem modul FreePBX. Mengubah semua FreePBX dan MariaDB volume hos...
Lipat fwconsole / amportal via php for MinIO FUSE hostPath
/ var / lib / asterisk didukung oleh MinIO melalui rclone FUSE yang tidak mendukung chmod POSIX, sehingga skrip fwconsole tidak dapat dibuat dapat dieksekusi pa...
Tambahkan kail preStop dan terminal GracePeriodSeconds
Kontainer terjebak di Terminating karena latar belakang Asterisk proses terus berjalan setelah apache2ctl (PID 1) keluar. Kirim kait preStop SIGTERM ke Asterisk...
Tambahkan bootstrap.php membutuhkan regenerasi / etc / freepbx.conf
Pemasang menulis freepbx.conf dengan datasource = "dan suatu request _ once untuk bootstrap.php, yang config.php tergantung pada untuk memuat kelas FreePBX. Ver...
Regenerasi / etc / freepbx.conf saat restart
/ etc adalah fana (bukan hostpath), so / etc / freepbx.conf yang ditulis oleh installer hilang di setiap pod restart. Tambah branch lain untuk diregenerasi itu ...
Slip start _ asterisk, tunggu untuk kontrol soket
start _ asterisk menggunakan 'pidof asterisk' yang mengembalikan positif palsu pada pod memulai kembali, menyebabkan wait- for- Asterisk loop untuk menggantung....
Mulai Asterisk di latar belakang, tunggu untuk itu, kemudian jalankan pemasang
Intrypoint.sh tidak berjalan Pemasang FreePBX - hanya dimulai Layanan. startupsh sekarang mereplikasi entrypoint setup langkah, dimulai Asterisk di latar belaka...
Biarkan entrypoint menangani instalasi, bukan startup.sh
Pemasang FreePBX (pp install -n) memerlukan Asterisk untuk sudah menjadi lari. Bintang kami menyebutnya sebelum Asterisk mulai, menyebabkan "Kesalahan berkomuni...
Mount / etc / asterisk saja, bukan / etc, untuk memperbaiki kesalahan PHP simplexml
Mounting full / etc sebagai sebuah hostpath volume telah merusak ekstensi PHP memuat bahkan setelah seeding dari gambar - simplexml _ load _ file tidak terdefin...
Kurangi batas CPU ke rasio 2: 1 untuk menghilangkan overcommitment
Docs 4 £1 core, jibri 4 = 2 core, libretranslate 2 = 1 inti, bergamot 2 £1 inti, coturn 1 £0.5 inti. Saves ~ 7.5 core off node limits.
Ganti ke escomputer / freebbx: 17 dengan arsitektur yang benar
tidak ada gambar Freepbx 17 (ditinggalkan sejak 2022). eskomputer / freebbx: 17 (Apr 2026, Asterisk 21 + FreePBX 17) memerlukan sebuah pod MariaDB terpisah dan ...
Drop publik admin ingress; akses melalui http: / / k [12] m1: 8088
Admin UI sekarang magang - hanya di atas LAN / WireGuard di port 8088 (FreePBX 's nginx terikat langsung pada hostNetwork). Tidak ada rute Traefik, tidak Ayo En...
Sebarkan jembatan FreePBX 17 + Jigasi SIP pada k1m1 dan k2m1
FreePBX (melelahkan / freebbx: 17- terbaru) dijalankan dengan jaringan host sehingga SIP / RTP mempertahankan IP klien nyata, disematkan satu - per- nodeSelekto...
Tls penamaan impor, ekspor path fqdn; rute surat menggunakan baku TLSStore
Satu Sertifikat / rahasia per FQDN sehingga daun CN cocok dengan SNI (Safari)
Gunakan ECDSA P-256 untuk spesifikasi sertifikat manajer dan bermigrasi RSA
Catatan daftar SUBDOMAINS tidak digunakan; SANs berasal dari log Traefik
Selaraskan SUBDOMAINS dengan alias DNS produk (tambahkan aplikasi, tanda tangani; hapus media)
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.
Add weekly image prune and journal vacuum CronJob for k1m1
CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI...
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 ...
Add geo-database-url to analytics-secret for CockroachDB geolite lookup
Kamo Analytics uses this URL to look up visitor IP→country/region/city from the **************** tables. Uses kamo user with password auth and sslmode=require (...
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.
Add iframe-compatible middleware chain for kamo-analytics
Add security-headers-allow-iframe (no X-Frame-Options) and kamo-middlewares-allow-iframe chain so analytics can be embedded in iframes from internal.kamocrm.com...
Move kamo-analytics to own repo, keep only postgres in KlusterServices
- Remove analytics deployment, service, and nginx-configmap (now owned by kamo-analytics project with its own CI/CD pipeline) - Remove analytics-ingressroute ...
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...
Seperti apa yang Anda lihat pengiriman?
Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.