File size: 4,808 Bytes
27867f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
## NOTICE: 
By default this app doesn't provide any video sources, only the plugins access the providers streams for personal use.

## Installation
### 1. Requirements
- Python 3.10.12+
- python cryptography module
- python httpx[http2] module
- (optional) streamlink module
- ffmpeg and ffprobe

### 2. Installation
- Download source
- Unzip source in the installation folder
- Launch the app by running the command "python3 tvh_main.py". This should create a data folder and a config.ini inside that folder
- Bring up browser and go to http://ip address:6077/
- From Plugins, install PlutoTV plugin
- Restart Cabernet twice from   Scheduled Tasks > Applications > Restart
- Go to settings and make changes you want.
    - Logging: Change log level from warning to info if needed
- From XML/JSON Links try some of the links

### 3. Services
- MS Windows
    - Services for MS Windows is auto-created using the installer provided for each release.
- Unix/Linux
    - Services for CoreELEC and Debian/Ubuntu are found here. Follow the instructions found in the files.
    - https://github.com/cabernetwork/cabernet/tree/master/lib/tvheadend/service

### 4. Docker
You can either use docker-compose or the docker cli.

| Architecture | Available |
|:----:|:----:|
| X86-64 | ✅ |
| arm64 | ✅ |
| armhf | ❌ |

**NOTES:** 
- Volume for ```/app/.cabernet``` must be provided before enabling encryption.
- armhf not available due to python cryptography only supports 64bit systems.
[Cryptography supported platforms](https://cryptography.io/en/latest/installation/#supported-platforms)

#### a. Using docker-compose
To install Cabernet:
```
1. Grab the cabernet source and unpack into a folder
2. Edit docker-compose.yml and set the volume folder locations
3. docker-compose pull cabernet
4. docker-compose up -d cabernet
```

#### b. docker cli
```
docker run -d \
  --name=cabernet \
  -e PUID=1000 `#optional` \
  -e PGID=1000 `#optional` \
  -e TZ=Etc/UTC `#optional` \
  -p 6077:6077 \
  -p 5004:5004 \
  -v /path/to/cabernet/data:/app/data `#optional` \
  -v /path/to/plugins_ext:/app/plugins_ext `#optional` \
  -v /path/to/cabernet/secrets:/app/.cabernet `#optional` \
  --restart unless-stopped \
  ghcr.io/cabernetwork/cabernet:latest
```

##### Parameters
| Parameter | Function |
| :----: | :----: |
| -p 6077 | Cabernet WebUI |
| -p 5004 | Cabernet stream port |
| -e PUID=1000  | for UserID    |
| -e PGID=1000  | for GroupID   |
| -e TZ=Etc/UTC | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).|
| -v /app/data | Where Cabernet should store its database and config. |
| -v /app/plugins_ext | External Plugins |
| -v /app/.cabernet | Where encryption key is stored |

#### c. Other Docker Info
Cabernet configuration setting Clients > Web Sites > plex_docker_ip should be set to your computers IP address and not the internal IP inside the docker container.  This will allow the channels.m3u file to have the correct IP address for streaming.


#### d. Updating Info
**Via Docker Compose:**

- Update the image:
```
docker-compose rm --stop -f cabernet
docker-compose pull cabernet
docker-compose up -d cabernet
```

**Via Docker Run:**

- Update the image:   
```docker pull ghcr.io/cabernetwork/cabernet:latest```

- Stop the running container:  
```docker stop cabernet```

- Delete the container:   
```docker rm cabernet```

- You can also remove the old dangling images:
```docker image prune```

#### e. Via Watchtower auto-updater
```
docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --run-once cabernet
```

- For regulary updates follow Watchtower instructions 
https://containrrr.dev/watchtower/


### 5. Default Ports
- 6007 Web UI
- 5004 Stream port
- 1900 SSDP (if enabled)
- 65001 HDHomeRun (if enabled)

### 6. Notes
- URL used can include plugin and instance levels to filter down to a specific set of data
    - http://ip address:6077/channels.m3u
    - http://ip address:6077/pLuToTv/channels.m3u
    - http://ip address:6077/PlutoTV/Default/channels.m3u
- config.ini group tag requirements when creating an instance
    - All lower case
    - Underscore is a key character in section tags and separates the plugin name from the instance name
    - Use a single word if possible for the instance name
    - Do not change the instance name unless you go into data management and remove the instance first.
    - [plutotv_mychannels]

### 7. Guides
Beginners Setup: https://github.com/cabernetwork/cabernet/issues/78

### 8. Forum
Latest Forum: https://tvheadend.org/d/7455-daddylive-plutotv-xumo-m3u-xmltv-samsungtv-plex-tvguide-interfaces-appliance

Archived Legacy Forum: https://web.archive.org/web/20221015111333/https://tvheadend.org/boards/5/topics/43052

Enjoy