mirror of
https://github.com/tgbot-collection/ytdlbot.git
synced 2024-11-14 12:14:34 +08:00
201 lines
4.6 KiB
Markdown
201 lines
4.6 KiB
Markdown
|
## Kubernetes
|
||
|
|
||
|
Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of
|
||
|
containerized applications
|
||
|
|
||
|
# Complete deployment guide for k8s deloyment
|
||
|
|
||
|
* contains every functionality
|
||
|
* compatible with amd64, arm64 and armv7l
|
||
|
|
||
|
## First. Get all file in k8s folder
|
||
|
|
||
|
Download `k8s` file to a directory on your k8s server and go to this folder
|
||
|
|
||
|
## 1. Create Redis deloyment
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 01.redis.yml
|
||
|
```
|
||
|
|
||
|
This command will create ytdl namespace, redis pod and redis service
|
||
|
|
||
|
## 2. Creat MariaDB deloyment
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 02.mariadb.yml
|
||
|
```
|
||
|
|
||
|
This deloyment will claim 10GB storage from storageClassName: longhorn. Please replace longhorn with your
|
||
|
storageClassName before apply.
|
||
|
|
||
|
## 3. Set environment variables
|
||
|
|
||
|
Create configMap for env
|
||
|
|
||
|
### 3.1 Edit configmap.yml
|
||
|
|
||
|
```shell
|
||
|
vim 03.configmap.yml
|
||
|
```
|
||
|
|
||
|
you can configure all the following environment variables:
|
||
|
|
||
|
* PYRO_WORKERS: number of workers for pyrogram, default is 100
|
||
|
* WORKERS: workers count for celery
|
||
|
* APP_ID: **REQUIRED**, get it from https://core.telegram.org/
|
||
|
* APP_HASH: **REQUIRED**
|
||
|
* TOKEN: **REQUIRED**
|
||
|
* REDIS: **REQUIRED if you need VIP mode and cache** ⚠️ Don't publish your redis server on the internet. ⚠️
|
||
|
|
||
|
* OWNER: owner username
|
||
|
* QUOTA: quota in bytes
|
||
|
* EX: quota expire time
|
||
|
* MULTIPLY: vip quota comparing to normal quota
|
||
|
* USD2CNY: exchange rate
|
||
|
* VIP: VIP mode, default: disable
|
||
|
* AFD_LINK
|
||
|
* COFFEE_LINK
|
||
|
* COFFEE_TOKEN
|
||
|
* AFD_TOKEN
|
||
|
* AFD_USER_ID
|
||
|
|
||
|
* AUTHORIZED_USER: users that could use this bot, user_id, separated with `,`
|
||
|
* REQUIRED_MEMBERSHIP: group or channel username, user must join this group to use the bot. Could be use with
|
||
|
above `AUTHORIZED_USER`
|
||
|
|
||
|
* ENABLE_CELERY: Distribution mode, default: disable. You'll can setup workers in different locations.
|
||
|
* ENABLE_FFMPEG: enable ffmpeg so Telegram can stream
|
||
|
* MYSQL_HOST: you'll have to setup MySQL if you enable VIP mode
|
||
|
* MYSQL_USER
|
||
|
* MYSQL_PASS
|
||
|
* GOOGLE_API_KEY: YouTube API key, required for YouTube video subscription.
|
||
|
* AUDIO_FORMAT: audio format, default is m4a. You can set to any known and supported format for ffmpeg. For
|
||
|
example,`mp3`, `flac`, etc. ⚠️ m4a is the fastest. Other formats may affect performance.
|
||
|
* ARCHIVE_ID: group or channel id/username. All downloads will send to this group first and then forward to end user.
|
||
|
**Inline button will be lost during the forwarding.**
|
||
|
|
||
|
### 3.2 Apply configMap for environment variables
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 03.configmap.yml
|
||
|
```
|
||
|
|
||
|
## 4. Run Master Celery
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 04.ytdl-master.yml
|
||
|
```
|
||
|
|
||
|
This deloyment will create ytdl-pvc PersistentVolumeClaim on storageClassName: longhorn. This clain will contain vnstat,
|
||
|
cookies folder and flower database. Please replace longhorn with your storageClassName before apply
|
||
|
|
||
|
### 4.1 Setup instagram cookies
|
||
|
|
||
|
Required if you want to support instagram.
|
||
|
|
||
|
You can use this extension
|
||
|
[Get cookies.txt](https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid)
|
||
|
to get instagram cookies
|
||
|
|
||
|
Get pod running ytdl master:
|
||
|
|
||
|
```shell
|
||
|
kubectl get pods --namespace ytdl
|
||
|
```
|
||
|
|
||
|
Name should be ytdl-xxxxxxxx
|
||
|
|
||
|
Access to pod
|
||
|
|
||
|
```shell
|
||
|
kubectl --namespace=ytdl exec --stdin --tty ytdl-xxx -- sh
|
||
|
```
|
||
|
|
||
|
(replace ytdl-xxx by your pod name)
|
||
|
|
||
|
Go to ytdl-pvc mounted folder
|
||
|
|
||
|
```shell
|
||
|
cd /ytdlbot/ytdlbot/data/
|
||
|
vim instagram.com_cookies.txt
|
||
|
# paste your cookies
|
||
|
```
|
||
|
|
||
|
## 5. Run Worker Celery
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 05.ytdl-worker.yml
|
||
|
```
|
||
|
|
||
|
## 6. Run Flower image (OPTIONAL)
|
||
|
|
||
|
### 6.1 Setup flower db
|
||
|
|
||
|
Get pod running ytdl master:
|
||
|
|
||
|
```shell
|
||
|
kubectl get pods --namespace ytdl
|
||
|
```
|
||
|
|
||
|
Name should be ytdl-xxxxxxxx
|
||
|
|
||
|
Access to pod
|
||
|
|
||
|
```shell
|
||
|
kubectl --namespace=ytdl exec --stdin --tty ytdl-xxx -- sh
|
||
|
```
|
||
|
|
||
|
(replace ytdl-xxx by your pod name)
|
||
|
|
||
|
Go to ytdl-pvc mounted folder
|
||
|
|
||
|
```shel
|
||
|
cd /var/lib/vnstat/
|
||
|
```
|
||
|
|
||
|
Create flower database file
|
||
|
|
||
|
```shell
|
||
|
{} ~ python3
|
||
|
Python 3.9.9 (main, Nov 21 2021, 03:22:47)
|
||
|
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
|
||
|
Type "help", "copyright", "credits" or "license" for more information.
|
||
|
>>> import dbm;dbm.open("flower","n");exit()
|
||
|
```
|
||
|
|
||
|
### 6.2 Config Flower Ingress
|
||
|
|
||
|
This step need config ingress from line 51 of file 06.flower.yml with your ingress service. Need for access from
|
||
|
internet.
|
||
|
YML file should be adjusted depending on your load balancing, ingress and network system
|
||
|
|
||
|
For active SSL
|
||
|
|
||
|
```yml
|
||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||
|
```
|
||
|
|
||
|
Replace nginx by your ingress service
|
||
|
|
||
|
```yml
|
||
|
ingressClassName: nginx
|
||
|
```
|
||
|
|
||
|
Add your domain, example
|
||
|
|
||
|
```yml
|
||
|
tls:
|
||
|
- hosts:
|
||
|
- flower.benny.com
|
||
|
secretName: flower-tls
|
||
|
rules:
|
||
|
- host: flower.benny.com
|
||
|
```
|
||
|
|
||
|
### 6.3 Apply Flower deloyment
|
||
|
|
||
|
```shell
|
||
|
kubectl apply -f 06.flower.yml
|
||
|
```
|