Last active 1784668442

Tube Archivist - Self hosted YouTube media server - https://www.tubearchivist.com/

ZZ's Avatar ZZ revised this gist 1784668442. Go to revision

No changes

ZZ's Avatar ZZ revised this gist 1784668233. Go to revision

2 files changed, 160 insertions

tube-archivist-install.sh(file created)

@@ -0,0 +1,131 @@
1 + # tube.archivist.install:
2 + alias ta.install="tube.archivist.install"
3 + tube.archivist.install(){
4 +
5 + # Config #
6 + app_name="ta" # App Name
7 + app_repo_url="https://github.com/tubearchivist/tubearchivist" # App Codebase
8 + app_version="latest"
9 +
10 + app_domain="${1:-"$app_name.$org_domain"}" # Unique app domain
11 + app_port="${2:-"7788"}" # App Port
12 + container_name="$app_name-$app_port"
13 + app_name_domain="$(echo $app_domain | tr "." "-")"
14 + app_path="/data/${app_name_domain}"
15 + code_path="$app_path/$(basename $app_repo_url)"
16 + data_path="$app_path/${app_name}_data"
17 + app_container_config="$code_path/docker-compose.yml"
18 +
19 + # Setup paths #
20 + mkdir -p "$app_path"
21 +
22 + echo cd "$app_path"
23 + cd "$app_path"
24 + if [ ! $? == "0" ];then
25 + err "Failed to cd \"$app_path\""
26 + return 1
27 + fi
28 +
29 + # Create and Store Passwords in .vault/
30 + db_password="$(cron.run vault.app.base64 $app_name_domain db_password 32)"
31 + #db_password="$(openssl rand -base64 32 | tr -cd "[:alnum:]")"
32 +
33 + # Install App #
34 + echo git clone "$app_repo_url"
35 + git clone "$app_repo_url"
36 + cd "$code_path"
37 + if [ ! $? == "0" ];then
38 + err "Failed to cd \"$code_path\""
39 + return 1
40 + fi
41 +
42 + # Create folder $data_path
43 + echo sudo mkdir -p "$data_path"
44 + sudo mkdir -p "$data_path/cache"
45 + sudo mkdir -p "$data_path/es"
46 + sudo mkdir -p "$data_path/media"
47 + sudo mkdir -p "$data_path/redis"
48 +
49 + # Write docker-compose config
50 + tee "$app_container_config" > /dev/null <<EOF
51 + services:
52 + tubearchivist:
53 + container_name: tubearchivist
54 + restart: unless-stopped
55 + image: bbilly1/tubearchivist:$app_version
56 + ports:
57 + - $app_port:8000
58 + volumes:
59 + - $data_path/media:/youtube
60 + - $data_path/cache:/cache
61 + environment:
62 + - ES_URL=http://archivist-es:9200 # needs protocol e.g. http and port
63 + - REDIS_CON=redis://archivist-redis:6379
64 + - HOST_UID=1000
65 + - HOST_GID=1000
66 + - TA_HOST=https://$app_domain # set your host name with protocol and port
67 + - TA_USERNAME=tubearchivist # your initial TA credentials
68 + - TA_PASSWORD=tubearchivist # your initial TA credentials
69 + - ELASTIC_PASSWORD=$db_password # set password for Elasticsearch
70 + - TZ=America/Chicago # set your time zone
71 + healthcheck:
72 + test: ["CMD", "curl", "-f", "http://localhost:8000/api/health/"]
73 + interval: 2m
74 + timeout: 10s
75 + retries: 3
76 + start_period: 30s
77 + depends_on:
78 + - archivist-es
79 + - archivist-redis
80 + archivist-redis:
81 + image: redis
82 + container_name: archivist-redis
83 + restart: unless-stopped
84 + expose:
85 + - "6379"
86 + volumes:
87 + - $data_path/redis:/data
88 + depends_on:
89 + - archivist-es
90 + archivist-es:
91 + image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.19.0
92 + container_name: archivist-es
93 + restart: unless-stopped
94 + environment:
95 + - "ELASTIC_PASSWORD=$db_password" # matching Elasticsearch password
96 + - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
97 + - "xpack.security.enabled=true"
98 + - "discovery.type=single-node"
99 + - "path.repo=/usr/share/elasticsearch/data/snapshot"
100 + ulimits:
101 + memlock:
102 + soft: -1
103 + hard: -1
104 + volumes:
105 + - $data_path/es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme
106 + expose:
107 + - "9200"
108 + #volumes:
109 + #media:
110 + #cache:
111 + #redis:
112 + #es:
113 + EOF
114 +
115 + echo cat ./docker-compose.yml
116 + cat ./docker-compose.yml
117 +
118 + # Run App. LIVE!
119 + echo Running $app_name container in the background.
120 +
121 + echo sudo docker-compose pull
122 + sudo docker-compose pull
123 +
124 + echo sudo docker-compose down
125 + sudo docker-compose down
126 +
127 + echo sudo docker-compose up -d
128 + sudo docker-compose up -d
129 +
130 + }
131 + # ---

vault-jwt.sh(file created)

@@ -0,0 +1,29 @@
1 + # vault.app.base64: $app_name $app_keyname $key_length
2 + alias vault.jwt="vault.app.jwt"
3 + alias vault.app.jwt="vault.app.base64"
4 + vault.app.base64(){
5 +
6 + app_name="$1"
7 + app_keyname="$2"
8 + key_length="${3:-"32"}"
9 + vault="/opt/.vault"
10 + app_vault="$vault/$app_name"
11 +
12 + mkdir -p "$app_vault"
13 +
14 + if [[ ! -e "$app_vault/$app_keyname" ]];then
15 + # not exists
16 + echo "$(openssl rand -base64 $key_length)" > "$app_vault/$app_keyname"
17 + fi
18 +
19 + if [[ -e "$app_vault/$app_keyname" ]];then
20 + # exists
21 + cat "$app_vault/$app_keyname"
22 + else
23 + # error 500: Could not create password
24 + return 500
25 + fi
26 +
27 + }
28 +
29 + # ---
Newer Older