tube-archivist-install.sh
· 3.5 KiB · Bash
Raw
# tube.archivist.install:
alias ta.install="tube.archivist.install"
tube.archivist.install(){
# Config #
app_name="ta" # App Name
app_repo_url="https://github.com/tubearchivist/tubearchivist" # App Codebase
app_version="latest"
app_domain="${1:-"$app_name.$org_domain"}" # Unique app domain
app_port="${2:-"7788"}" # App Port
container_name="$app_name-$app_port"
app_name_domain="$(echo $app_domain | tr "." "-")"
app_path="/data/${app_name_domain}"
code_path="$app_path/$(basename $app_repo_url)"
data_path="$app_path/${app_name}_data"
app_container_config="$code_path/docker-compose.yml"
# Setup paths #
mkdir -p "$app_path"
echo cd "$app_path"
cd "$app_path"
if [ ! $? == "0" ];then
err "Failed to cd \"$app_path\""
return 1
fi
# Create and Store Passwords in .vault/
db_password="$(cron.run vault.app.base64 $app_name_domain db_password 32)"
#db_password="$(openssl rand -base64 32 | tr -cd "[:alnum:]")"
# Install App #
echo git clone "$app_repo_url"
git clone "$app_repo_url"
cd "$code_path"
if [ ! $? == "0" ];then
err "Failed to cd \"$code_path\""
return 1
fi
# Create folder $data_path
echo sudo mkdir -p "$data_path"
sudo mkdir -p "$data_path/cache"
sudo mkdir -p "$data_path/es"
sudo mkdir -p "$data_path/media"
sudo mkdir -p "$data_path/redis"
# Write docker-compose config
tee "$app_container_config" > /dev/null <<EOF
services:
tubearchivist:
container_name: tubearchivist
restart: unless-stopped
image: bbilly1/tubearchivist:$app_version
ports:
- $app_port:8000
volumes:
- $data_path/media:/youtube
- $data_path/cache:/cache
environment:
- ES_URL=http://archivist-es:9200 # needs protocol e.g. http and port
- REDIS_CON=redis://archivist-redis:6379
- HOST_UID=1000
- HOST_GID=1000
- TA_HOST=https://$app_domain # set your host name with protocol and port
- TA_USERNAME=tubearchivist # your initial TA credentials
- TA_PASSWORD=tubearchivist # your initial TA credentials
- ELASTIC_PASSWORD=$db_password # set password for Elasticsearch
- TZ=America/Chicago # set your time zone
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health/"]
interval: 2m
timeout: 10s
retries: 3
start_period: 30s
depends_on:
- archivist-es
- archivist-redis
archivist-redis:
image: redis
container_name: archivist-redis
restart: unless-stopped
expose:
- "6379"
volumes:
- $data_path/redis:/data
depends_on:
- archivist-es
archivist-es:
image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.19.0
container_name: archivist-es
restart: unless-stopped
environment:
- "ELASTIC_PASSWORD=$db_password" # matching Elasticsearch password
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=true"
- "discovery.type=single-node"
- "path.repo=/usr/share/elasticsearch/data/snapshot"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- $data_path/es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme
expose:
- "9200"
#volumes:
#media:
#cache:
#redis:
#es:
EOF
echo cat ./docker-compose.yml
cat ./docker-compose.yml
# Run App. LIVE!
echo Running $app_name container in the background.
echo sudo docker-compose pull
sudo docker-compose pull
echo sudo docker-compose down
sudo docker-compose down
echo sudo docker-compose up -d
sudo docker-compose up -d
}
# ---
| 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
· 570 B · Bash
Raw
# vault.app.base64: $app_name $app_keyname $key_length
alias vault.jwt="vault.app.jwt"
alias vault.app.jwt="vault.app.base64"
vault.app.base64(){
app_name="$1"
app_keyname="$2"
key_length="${3:-"32"}"
vault="/opt/.vault"
app_vault="$vault/$app_name"
mkdir -p "$app_vault"
if [[ ! -e "$app_vault/$app_keyname" ]];then
# not exists
echo "$(openssl rand -base64 $key_length)" > "$app_vault/$app_keyname"
fi
if [[ -e "$app_vault/$app_keyname" ]];then
# exists
cat "$app_vault/$app_keyname"
else
# error 500: Could not create password
return 500
fi
}
# ---
| 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 | # --- |