인식되지 않는 드롭 --workers는 충돌을 유발
Libretranslate CLI는 받아지지 않습니다 --workers, gunicorn 내부 프로세스. 파드가 실패한 것을 막기 위해 부팅 및 CrashLoopBackOff (1384 k1m1)에 5d에서 다시 시작합니다. 본문 바로가기 이미 4개의 sync 노동자에 기본적으로, re...
Probe timeout 10s and 2 gunicorn workers
LibreTranslate's /languages probe blocks on the gunicorn worker event loop. With a single worker translating a long chat message, the probe times out at the def...
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...
STUN을 구성하므로 브라우저 ICE는 양방향으로 완료할 수 있습니다
SIP 레이어에 연결된 2자 브라우저 - 투 - 브라우져 통화는 없지만 오디오 중 방향. Voicemail (편도 Asterisk → 브라우저) 일 Asterisk의 비대칭 RTP가 브라우저를 배울 수 있기 때문에 inbound 패킷의 주소. 2 파티 브리징은 양측을 필요로한다. RTP...
내부에 브라우저 SIP WSS를 호스팅합니다.kamocrm.com (실제 cert)
브라우저는 웹소켓 연결을 거부 *********** Traefik이 자체 서명 된 기본 cert를 제공했기 때문에 가까운 코드 1006 hostname에 대해 ( Let's Encrypt cert가 포함되지 않음) 다른 kamocrm.com 엔드 포인트). 컬은 우리가 시험하기 때문에 ...
WebRTC config는 pod 재시작을 살아
이전 접근법 (http custom.conf 와 [general] override) 하지 않았다 실제로 Asterisk의 INI 파서가 여러 가지를 존중하지 않기 때문에 효과가 발생합니다. [general] 섹션은 docs가 불행하게도 다음과 같은 방법을 포함합니다. http addit...
Enable Asterisk 내장 HTTP 서버:8089 WebRTC /ws
Res http websocket의 상단에 chan pjsip `protocol=ws` 수송 승차, 턴에는 Asterisk의 내장 HTTP 서버가 실행되어야 합니다. 더 보기 기본적으로 FreePBX 17는 그 서버가 비활성화된 배를 설치하므로 SIP-over-WS 요청 착륙 nowhe...
ClusterIP 서비스에 직접 8088 노출
서비스는 항구 80→8088 매핑이 있었습니다. 내부 서비스 *************** (예: VOIPService API 토큰 요청) 포트 8088가 듣지 않았기 때문에 타이밍되었습니다. 클러스터IP.
K1m1에 대한 누락된 고장2ban-config ConfigMap 추가
배포 참조 실패2ban-config ConfigMap (jail.local + asterisk-security.conf) 하지만 존재 하지 않았다, 팟을 차단 마운트볼륨. 시작에서 FreePBX를 설정하고 방지합니다.
허용 /domain / 경로는 테마 IngressRoute에 CORS
Theme.kamocrm.com/domain/...에서 테마 구성은 일치하지 않았습니다 기존의 경로 규칙(만 /public/ 및 /internal/은 허용), 그래서 Traefik CORS 헤더가없는 503를 돌려 브라우저가 fetch를 거부합니다. PathPrefix('/domain/...
Piper TTS (en US-norman-medium)를 가진 Coqui TTS를 대체하십시오
Coqui VCTK 모델에는 지명 된 스피커가 없습니다. - Piper TTS와 교체하십시오. 정확한 norman[medium] 음성. Piper 바이너리 (~3 MB) 및 모델 (~60 MB) 첫 번째 실행 및 캐시에 init 컨테이너에 의해 다운로드 /var/lib/piper/{bi...
Split-DNS / LAN 클라이언트 RTP 수정에 대한 local net 추가
K1m1과 같은 LAN의 전화는 분할 DNS를 통해 연결 (도메인은 해결 192.168.4.22 내부). local net없이, Asterisk는 여전히 광고 SDP에서 LAN 클라이언트에 외부 도메인, 공공 IP를 통해 RTP 라우팅. local net=192.168.4.0/24 은 ...
Persist sorcery contact=memory 수정 및 start.sh에서 SIP 스캐너 차단
- [res pjsip] contact=memory as sorcery.conf 앞에 Asterisk 시작; 기본적으로 sorcery-astdb SQLite는 조용히 모든 REGISTER 연락처를 삭제 - 팟 스타트에서 iptables를 통해 알려진 SIP 스캐너 87.246.54.22...
로컬 /var/lib/pbx에 hostPath를 이동
Rclone FUSE를 통해 MinIO는 POSIX chmod 또는 symlink()를 지원하지 않습니다. FreePBX의 모듈 시스템에 의해 요구되는. 모든 FreePBX 및 MariaDB 변경 /mnt/shared-files/pbx/에서 /var/lib/pbx/로 hostPath 볼...
MinIO FUSE hostPath를 위한 PHP를 통해 포장 fwconsole/amportal
/var/lib/asterisk는 지원하지 않는 rclone FUSE를 통해 MinIO에 의해 역행됩니다 POSIX chmod, 그래서 fwconsole 스크립트는 그 볼륨에 실행할 수 없습니다. start.sh는 이제 ephemeral /usr/local/bin의 래퍼 스크립트를 생성...
PreStop 후크 및 종료GracePeriodSeconds 추가
컨테이너는 배경 Asterisk 때문에 종료에 갇혀 있었다 apache2ctl (PID 1) 종료 후 실행되는 프로세스. preStop 걸이는 보냅니다 Kubernetes가 컨테이너를 죽이기 전에 Asterisk에 SIGTERM, 깨끗한 포트 릴리즈 및 포트 사용 오류 타격에서 다음 팟...
Bootstrap.php 추가 /etc/freepbx.conf 재생
Installer는 datasource='와 require once로 freepbx.conf를 작성합니다. bootstrap.php의 경우, config.php는 FreePBX 클래스를로드하는 데 따라 다릅니다. 재생 된 버전은 모두 누락되었습니다. "Class FreePBX는 찾을 수...
재시작 /etc/freepbx.conf
/etc는 ephemeral (hostPath), 그래서 /etc/freepbx.conf에 의해 작성된 installer는 각 pod 재시작에 손실됩니다. 다른 지점을 재생 그것은 env vars 때 bootstrap.php 이미 존재, 그래서 관리자 UI 수 있습니다 MariaDB에 ...
Bypass start asterisk, 대신 제어 소켓을 기다립니다
start asterisk는 pod에 false 긍정적을 반환하는 `pidof asterisk`를 사용합니다. 다시 시작, 대기 - Asterisk 루프를 걸기 위해. 지금 start.sh 시작 Safe asterisk를 통해 직접 Asterisk ( stale 소켓 / pid 파일 삭...
배경에서 Asterisk를 시작, 그것을 기다리고, 다음 설치 프로그램을 실행
Entrypoint.sh는 FreePBX 설치 프로그램을 실행하지 않습니다 - 그것은 단지 시작 서비스. start.sh 이제 엔트리포인트 설정 단계를 복제, 시작 배경에 Asterisk는, 그것의 소켓을 준비하기 위하여 기다립니다, 그 후에 달립니다 php는 첫 번째 부팅이라면 아파치...
Entrypoint 핸들 설치, start.sh가 아닌
FreePBX installer (php install -n)는 이미 Asterisk가 필요합니다. 실행. 우리의 Startup.sh는 Asterisk가 시작되기 전에 호출되었습니다. "Asterisk와 함께 시작" 추락. 이제 start.sh 만 기다립니다 MariaDB 및 패치 Ap...
마운트 /etc/asterisk 만, /etc, PHP 간단한 XML 오류 수정
HostPath 볼륨으로 전체 /etc 설치는 PHP 확장을 손상 이미지에서 파종 후도 로딩 — simplexml load file undefined 설치 시간. 지금만 /etc/asterisk는 persisted입니다; /etc는에서 옵니다 이미지 및 PHP 설정 intact 유지. ...
과량 제거를 위해 2:1 비율에 CPU 한계를 감소시키십시오
Docs 4→1 핵심, 지브리 4→2 핵심, libretranslate 2→1 핵심, bergamot 2→1 핵심, coturn 1→0.5 핵심. 저장 ~7.5 노드 제한을 코어.
Escomputers/freepbx:17에 스위치 정확한 건축
피곤 / freepbx는 FreePBX 17 이미지가 없습니다 (2022). escomputers/freepbx:17 (4월 2026일 새롭게 한, Asterisk 21 + FreePBX 17)는 요구합니다 별도의 MariaDB 팟과 한 번 PHP 설치 단계. 변경 사항: - Free...
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 0, mozilla/translation-service 이미지 업데이트
Google Cloud Storage 모델 다운로드 버킷 (bergamot-models-sandbox) 모든 파일과 firefox-translations-models repo에 대한 404을 반환 필요한 언어 쌍없이 12 월 2025 아카이브. Bergamot는 할 수 없습니다 작업 모...
Scale bergamot back to 1 replica - 누락된 팟에 의한 번역 실패
Bergamot는 여전히 서비스로 0개의 복제본에 등록되었습니다. 공급자Router 번역 서비스에는 회로 차단기가 없었다, 그래서 es/fr/de/pt/it/를 위한 각 요구 pl/ru/uk/tr/ro/id/vi/ar는 반복된 연결을 가진 죽은 ClusterIP를 망치로 렸습니다 시도,...
LibreTranslate에서 --load-only 제한 제거
필요한 모든 언어 패키지는 hostPath 볼륨에 미리 설치됩니다. --load-only는 적재에서 몇몇 포장을 막고 있었습니다. 깃발 없이, LibreTranslate는 시작에 모든 설치된 패키지를로드합니다.
StartProbe for LibreTranslate를 사용하여 긴 모델 다운로드를 처리하십시오
60개의 시도 x 30s = 30min 시작 창을 가진 startProbe 초기 모델 다운로드. 시작 완료 후, 정상 수명 and readiness probes take over with no 인공적으로 긴 지연.
Restrict LibreTranslate는 지원되는 언어 모형만 적재합니다
사용 --load-only 와 22 지원 언어 코드 대신 모든 유효한 모델 다운로드 (~GB의 Chundreds). 기타 제품 --update-models 플래그는 모든 것을 다운로드합니다.
LibreTranslate에서 잘못된 --load-awesome-ai-models 플래그 제거
Flag는 현재 libretranslate 이미지에 존재하지 않습니다. 관련 제품 --update-models to keep language packs are 다운로드 에 시작.