Linux 시작하기
일반 Linux 앱에서 Go API 또는 C ABI를 테스트합니다. 전달 공유 라이브러리는 Ubuntu 24.04 arm64 전용입니다.
전제 조건과 범위
root가 아닌 일반 사용자로 실행합니다. 터미널에 /bin/bash와 PTY가 필요합니다. 데스크톱 모드는 일치하는 캡처 도우미와 의존성을 배포해야 하며, 헤드리스 환경은 터미널만 제공합니다. Fleet은 명시적으로 켜기 전에는 비활성입니다. 레거시 ARMv5 xSpan에는 사용할 수 없습니다.
백엔드 HTTPS·시그널링 WSS 주소, DNS, 정확한 시간, 외부 ICE/TURN 통신이 필요합니다. relay_only=true는 사용 가능한 TURN 인증·연결이 필요합니다. SDK가 외부 수신 리스너를 설치하지 않습니다.
C 테스트 앱 실행
{
"config": {
"supabase_url": "https://YOUR_BACKEND",
"publishable_key": "YOUR_PUBLIC_ANON_KEY",
"signal_url": "wss://YOUR_SIGNALING",
"device_name": "Store Linux",
"mode": "terminal"
},
"state_dir": "/home/operator/.local/state/streamzet-sdk-test",
"fleet": false
}chmod 600 config.json
./embedded-example config.jsonC 예제는 시작 상태와 이후 변경된 상태를 500ms 간격으로 확인해 출력하고 Enter 또는 표준입력 종료로 멈춥니다. running=true는 등록·연결 완료가 아닙니다. device_code가 생긴 뒤 대시보드에서 페어링하세요. registration_key는 선택적 비공개 테넌트 등록용입니다.
Go 연동
support, err := sdk.Start(ctx, sdk.Options{
Config: sdk.Config{
SupabaseURL: "https://YOUR_BACKEND",
PublishableKey: "YOUR_PUBLIC_ANON_KEY",
SignalURL: "wss://YOUR_SIGNALING",
DeviceName: "Store Linux", Mode: "terminal",
},
StateDir: "/home/operator/.local/state/streamzet-sdk",
Fleet: false,
})
if err != nil { return err }
// The host decides when support is enabled and when to stop.
// Poll support.Identity() for public registration information.
// Later, from a worker during host shutdown:
support.Stop()
return support.Wait()github.com/plitsoft/streamzet/linux-agent/sdk를 import합니다. 태그 릴리스 전에는 전달 소스를 가리키는 로컬 module replace를 사용합니다. Start는 지원을 활성화하며 로컬 동의 창을 표시하지 않습니다. 제품에서 지원 정책과 제어 UI를 제공해야 합니다.
빌드와 수명주기
make sdk
# Outputs: dist/sdk/native/libstreamzet.so, libstreamzet.h, embedded-example대상 Linux ABI에서 Go 1.26·C 컴파일러로 빌드합니다. 생성된 헤더를 쓰고 libstreamzet.so를 예제 옆에 둡니다. 호스트 수명 중 Go 라이브러리를 dlclose하지 마세요. 프로세스당 한 번 시작하고 종료 전 stop·wait하세요. 업데이트 시 상태를 유지하고 단독 에이전트와 공유하지 마세요. 임베드 모드는 단독 업데이터 실행이나 호스트 실행파일 교체를 하지 않습니다.