forked from 0k/0k-charms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
87 lines
2.3 KiB
#!/bin/bash
|
|
|
|
## Init is run on host
|
|
## For now it is run every time the script is launched, but
|
|
## it should be launched only once after build.
|
|
|
|
## Accessible variables are:
|
|
## - SERVICE_NAME Name of current service
|
|
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
|
|
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
|
|
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
|
|
|
|
set -e
|
|
|
|
peertube_uid=$(docker_get_uid "$SERVICE_NAME" "peertube")
|
|
|
|
PEERTUBE_APP_DIR=/opt/apps/peertube
|
|
PEERTUBE_DATA_DIR=/var/lib/peertube
|
|
PEERTUBE_LOG_DIR=/var/log/peertube
|
|
PEERTUBE_CACHE_DIR=/var/cache/peertube
|
|
PEERTUBE_CONFIG_DIR=/etc/peertube
|
|
|
|
HOST_CONFIG_DIR=$SERVICE_CONFIGSTORE/$PEERTUBE_CONFIG_DIR
|
|
HOST_DATA_DIR=$SERVICE_DATASTORE/$PEERTUBE_DATA_DIR
|
|
|
|
|
|
mkdir -p "$HOST_CONFIG_DIR"
|
|
|
|
## Always copy default and custom env configuration file, in cases where new keys were added
|
|
ln -sf "$PEERTUBE_APP_DIR"/config/default.yaml "$HOST_CONFIG_DIR"
|
|
|
|
|
|
cat <<EOF > "$HOST_CONFIG_DIR/local.yaml"
|
|
|
|
listen:
|
|
hostname: '0.0.0.0'
|
|
port: 9000
|
|
|
|
storage:
|
|
|
|
avatars: '$PEERTUBE_DATA_DIR/avatars/'
|
|
videos: '$PEERTUBE_DATA_DIR/videos/'
|
|
redundancy: '$PEERTUBE_DATA_DIR/redundancy/'
|
|
previews: '$PEERTUBE_DATA_DIR/previews/'
|
|
thumbnails: '$PEERTUBE_DATA_DIR/thumbnails/'
|
|
torrents: '$PEERTUBE_DATA_DIR/torrents/'
|
|
captions: '$PEERTUBE_DATA_DIR/captions/'
|
|
|
|
logs: '/var/log/peertube/'
|
|
|
|
cache: '/var/cache/peertube/'
|
|
tmp: '/var/tmp/peertube/'
|
|
|
|
EOF
|
|
|
|
|
|
VALID_SECTION=(
|
|
instance services import transcoding
|
|
user signup admin cache redundancy
|
|
trending search log
|
|
)
|
|
for section in "${VALID_SECTION[@]}"; do
|
|
if val=$(options-get "$section" 2>/dev/null); then
|
|
yaml_key_val_str "$section" "$val"
|
|
fi
|
|
done >> "$HOST_CONFIG_DIR/local.yaml"
|
|
|
|
if ! [ -e "$HOST_DATA_DIR/config.json" ]; then
|
|
echo "{}" > "$HOST_DATA_DIR/config.json"
|
|
fi
|
|
|
|
ln -sf "$PEERTUBE_DATA_DIR"/config.json "$HOST_CONFIG_DIR/local-prod.json"
|
|
|
|
|
|
dirs=(/var/tmp/peertube /var/cache/peertube
|
|
"$PEERTUBE_CACHE_DIR" "$PEERTUBE_LOG_DIR" "$PEERTUBE_DATA_DIR")
|
|
host_dirs=()
|
|
for dir in "${dirs[@]}"; do
|
|
host_dirs+=("$SERVICE_DATASTORE$dir")
|
|
done
|
|
|
|
mkdir -p "${host_dirs[@]}"
|
|
find "${host_dirs[@]}" \! -user "$peertube_uid" -print0 | while read-0 f; do
|
|
chown -v "$peertube_uid" "$f" || exit 1
|
|
done
|
|
|
|
true
|