
* fix: create default media folder structure on install * feat: add link to open exposed app to domain * [ImgBot] Optimize images *Total -- 2,048.42kb -> 1,263.43kb (38.32%) /screenshots/darkmode.png -- 998.43kb -> 609.77kb (38.93%) /screenshots/appstore.png -- 1,006.73kb -> 620.12kb (38.4%) /packages/dashboard/public/error.png -- 42.38kb -> 32.70kb (22.84%) /packages/dashboard/public/empty.svg -- 0.87kb -> 0.85kb (2.35%) Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com> * chore: bump version 0.8.1 * refactor: move all dashboard's files into a client folder * feat: setup trpc and create system router * test: split jest config for client and server * refactor: replace grapqhl queries with trpc in the frontend * refactor: remove now un-used system queries/mutations/resolvers from both client and server * chore: bump dependencies * feat: setup prisma and configure it for tests and development * feat: create trpc router for auth service * refactor: migrate client auth queries to trpc procedures * refactor: cleanup now un-used graphql resolvers and services * feat: create sql migrations by replicating typeorm ones in an idempotent manner * feat: create server-preload script to run migrations upon server start * chore: remove legacy migrations steps * feat: add redis_host as an env variable * refactor: remove prisma from context and use client directly in service * feat: create trpc router & service for apps * refactor: migrate client app queries/mutations to trpc * refactor: removal and replace usage of old graphql generated types * refactor: move from node --require to custom next server * test: fix tests and bump various dependencies * chore: cleanup system-api from now un-used files * refactor(dashboard): remove code related to apollo * refactor: serve static files through next's server instead of system-api * refactor(server): move auth and system services to class * refactor(client): remove layoutv2 abstraction * fix: return correct update info * chore: remove legacy system-api folder * refactor: remove system-api from docker files * feat: create scheduler to run cron jobs and setup periodic repo update * fix: failing build caused by remark-mdx * refactor: move migrations to server folder * feat: compile server using esbuild * refactor: ts issue mis-used file from client in server * ci: make pipeline pass by cd into dashboard before each step (temp) * chore: drop armv7 support * refactor: move dashboard files in root folder * feat(db): create migration to add operator field on user * feat(user): create routes and services for password reset * feat(auth): add reset password page, container & form * refactor(dashboard): change layout and page of auth to be url based instead of state based * feat(script): add reset-password script * fix(dashboard): only check status if restart or update has been requested * test: increase coverage for get-server-auth-session * fix(start.sh): prompt for network interface only if there is not an internal ip set * feat(script): support user docker-compose.yml and app.env * chore: bump version * fix: add missing postgres variables to start script * fix: check for 32 bits before installing/starting * fix: create default media folder structure on install * Updated demo instance link Changed demo.runtipi.com to https://demo.runtipi.com * feat: adding config for codespaces * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com> Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com> Co-authored-by: Freddie Sackur <github@dustyfox.uk> Co-authored-by: Kieran Klukas <92754843+kcoderhtml@users.noreply.github.com> Co-authored-by: alwerner <alexander.werner@bonprix.net> Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
93 lines
2.3 KiB
Bash
93 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
ROOT_FOLDER="${PWD}"
|
|
# Get field from json file
|
|
function get_json_field() {
|
|
local json_file="$1"
|
|
local field="$2"
|
|
|
|
jq -r ".${field}" "${json_file}"
|
|
}
|
|
|
|
function write_log() {
|
|
local message="$1"
|
|
local log_file="${PWD}/logs/script.log"
|
|
|
|
echo "$(date) - ${message}" >>"${log_file}"
|
|
}
|
|
|
|
function derive_entropy() {
|
|
SEED_FILE="${STATE_FOLDER}/seed"
|
|
identifier="${1}"
|
|
tipi_seed=$(cat "${SEED_FILE}") || true
|
|
|
|
if [[ -z "$tipi_seed" ]] || [[ -z "$identifier" ]]; then
|
|
echo >&2 "Seed file not found. exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
printf "%s" "${identifier}" | openssl dgst -sha256 -hmac "${tipi_seed}" | sed 's/^.* //'
|
|
}
|
|
|
|
function ensure_pwd() {
|
|
if [[ $(basename "$(pwd)") != "runtipi" ]] || [[ ! -f "${BASH_SOURCE[0]}" ]]; then
|
|
echo "Please run this script from the runtipi directory"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function ensure_root() {
|
|
if [[ $UID != 0 ]]; then
|
|
echo "Tipi must be started as root"
|
|
echo "Please re-run this script as"
|
|
echo " sudo ./scripts/start"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function ensure_linux() {
|
|
# Check we are on linux
|
|
if [[ "$(uname)" != "Linux" ]]; then
|
|
echo "Tipi only works on Linux"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function clean_logs() {
|
|
# Clean logs folder
|
|
local logs_folder="${ROOT_FOLDER}/logs"
|
|
|
|
# Create the folder if it doesn't exist
|
|
if [[ ! -d "${logs_folder}" ]]; then
|
|
mkdir "${logs_folder}"
|
|
fi
|
|
|
|
if [ "$(find "${logs_folder}" -maxdepth 1 -type f | wc -l)" -gt 0 ]; then
|
|
echo "Cleaning logs folder..."
|
|
|
|
local files=($(ls -d "${logs_folder}"/* | xargs -n 1 basename | sed 's/\///g'))
|
|
|
|
for file in "${files[@]}"; do
|
|
echo "Removing ${file}"
|
|
rm -rf "${ROOT_FOLDER}/logs/${file}"
|
|
done
|
|
fi
|
|
}
|
|
|
|
function kill_watcher() {
|
|
local watcher_pid="$(ps aux | grep "scripts/watcher" | grep -v grep | awk '{print $2}')"
|
|
|
|
# kill it if it's running
|
|
if [[ -n $watcher_pid ]]; then
|
|
# If multiline kill each pid
|
|
if [[ $watcher_pid == *" "* ]]; then
|
|
for pid in $watcher_pid; do
|
|
# shellcheck disable=SC2086
|
|
kill -9 $pid
|
|
done
|
|
else
|
|
# shellcheck disable=SC2086
|
|
kill -9 $watcher_pid
|
|
fi
|
|
fi
|
|
}
|