Establish one uncomplicated stream before enabling wildcard policies, relay takeover or external authentication. This procedure targets the handbook’s pinned KH snapshot and an already built server with matching web/admin assets. It uses no external streaming server.

Save a complete local configuration

The XML below is a complete small file. Replace each password marker with a different random test secret. Replace the absolute paths with the matching installation directories and a writable log directory. Do not copy these markers into a public service.

xml · Code example
<icecast>
  <hostname>localhost</hostname>
  <limits><clients>20</clients><sources>2</sources></limits>
  <authentication>
    <source-password>REPLACE_WITH_RANDOM_SOURCE_SECRET</source-password>
    <relay-password>REPLACE_WITH_RANDOM_RELAY_SECRET</relay-password>
    <admin-user>admin</admin-user>
    <admin-password>REPLACE_WITH_RANDOM_ADMIN_SECRET</admin-password>
  </authentication>
  <listen-socket><port>8000</port><bind-address>127.0.0.1</bind-address></listen-socket>
  <fileserve>1</fileserve>
  <paths>
    <logdir>/ABSOLUTE/PATH/log</logdir>
    <webroot>/ABSOLUTE/PATH/web</webroot>
    <adminroot>/ABSOLUTE/PATH/admin</adminroot>
  </paths>
  <logging><accesslog>access.log</accesslog><errorlog>error.log</errorlog><loglevel>3</loglevel></logging>
  <security><chroot>0</chroot></security>
</icecast>

Save it as kh-local.xml, use an ordinary account and run the chosen KH executable in the foreground:

sh · Code example
xmllint --noout --nonet kh-local.xml
icecast -c kh-local.xml

If another Icecast is on the command search path, replace icecast with your KH executable’s full path. Check the startup log before proceeding. Syntax validation does not verify libraries, supported settings or file access.

Feed the exact mount

Configure an Icecast-compatible source client for host 127.0.0.1, port 8000, username source, the new source secret and mount /test.ogg. Choose a codec/container the selected KH build and player actually support. Start continuous output and confirm the mount appears in /admin/stats.xsl using the administrator account.

Prove listener delivery

Open http://127.0.0.1:8000/test.ogg in a suitable player. Listen and observe the corresponding source/listener state. Then stop and reconnect the test source, recording the expected disappearance and return. Only after this works should you add a specific mount policy. A running status page, accepted XML and audible playback are separate checks and must be reported separately.