This is a fork of https://github.com/xteve-project/xTeVe, all credit goes to the original author
Documentation for setup and configuration is here.
- Merge external M3U files
- Merge external XMLTV files (EPG aggregation)
- Automatic M3U and XMLTV update
- M3U and XMLTV export
- Filtering streams
- Teleguide timeshift
- Channel mapping
- Channel order
- Channel logos
- Channel categories
- Buffer with HLS / M3U8 support
- Re-streaming
- Stream Reconnection
- Number of tuners adjustable
- Compatible with Plex / Emby EPG
xTeVe includes a read-only WebDAV server accessible at /dav/. This feature allows you to mount your M3U playlists as a file system, which is particularly useful for integrating VOD (Video On Demand) content into media centers like Plex or Emby.
The WebDAV file system is organized as follows:
/dav/<M3U Hash>/On Demand/<Group Title>/
Inside each group, content is further organized into:
- Series:
Series/<Series Name>/Season <N>/<Episode> - Individual:
Individual/<Movie Name>
Note: WebDAV support is read-only.
This project uses Go modules and NPM for dependency management.
- Go dependencies are listed in the
go.modfile and can be downloaded by runninggo mod tidy. - Node.js dependencies are listed in the
package.jsonfile and can be installed by runningnpm install.
The following steps will create the xteve, xteve-inactive, and xteve-status binaries in a new bin/ directory.
-
Clone the repository:
git clone https://github.com/ted-gould/xTeVe.git cd xTeVe -
Install JavaScript dependencies:
npm install
-
Run the build command:
make build
To enable this feature, go to Settings -> Streaming and check the Enable Stream Retry box. You can also configure the maximum number of retries and the delay between retries.
xTeVe supports OpenTelemetry tracing, which allows you to send traces to an observability platform of your choice.
The OpenTelemetry exporter can be configured using snap set:
| Key | Description | Default |
|---|---|---|
otel-exporter-type |
The type of exporter to use. Supported values are stdout, otlp (gRPC), and otlp-http (HTTP). |
stdout |
otel-exporter-otlp-endpoint |
The endpoint to send traces to when using the otlp or otlp-http exporter. |
|
otel-exporter-otlp-headers |
Headers to send with each trace when using the otlp exporter. |
To export traces to Axiom, you can use the following configuration:
sudo snap set xteve otel-exporter-type="otlp"
sudo snap set xteve otel-exporter-otlp-endpoint="https://api.axiom.co"
sudo snap set xteve otel-exporter-otlp-headers="Authorization=Bearer <YOUR_AXIOM_API_TOKEN>,x-axiom-dataset=<YOUR_DATASET_NAME>"