1
0
Fork 0
mirror of https://github.com/overleaf/toolkit.git synced 2025-04-19 07:18:06 +02:00

Scripts to update config/overleaf.rc and config-seed rebrand (#217)

* Add scripts to rebrand variables.env and overleaf.rc

* Update bin/upgrade to prompt for config file rebrand

* Update bin/up to check for correct variable prefix

Ensures SHARELATEX_ is in place for version <= 4.x, and
OVERLEAF_ for version >= 5.x

* Rebrand variables for bin/docker-compose

Updates docker-compose.base.yml and sibling containers
base file with the changes in the script

* Update bin/doctor to support OVERLEAF_ prefix

* Update documentation with the OVERLEAF_ prefix

* Rebrand variables.env and overleaf.rc in config-seed

* Prepare config/version and CHANGELOG for release (WIP)

* Fix script documentation

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Fix doctor logs

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Remove unnecessary fallbacks to SHARELATEX_ vars

* SEt OVERLEAF_DATA_PATH to data/overleaf

* Remove duplicated environment entries

* Moved prefix brand checs from bin/up to bin/docker-compose

* Move set +o pipefail into subshell commands

* Use separate legacy compose files for required SHARELATEX_ vars

* Handle overleaf.rc rebranding before version upgrade

* Group output from rebranding process

* Move prompt for rebranding into helper function

* Refuse to start with mismatching ShareLaTeX vs Overleaf branded configs

* Print expected prefix when checking variables.env

* Print number of mismatching variables in overleaf.rc

* Check on variable rebranding from bin/doctor

* Cleanup bin/doctor lookup for ShareLaTeX branded overleaf.rc

* Update filesystem paths in bin/logs and docs

* Flag old TEXMFVAR entry in config/variables.env

REF: 1829e7ee2a

* Update config-seed version to 5.0.1 and changelog

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
This commit is contained in:
Miguel Serrano 2024-04-02 16:43:08 +02:00 committed by GitHub
parent a9db501268
commit e2b99f150f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 397 additions and 168 deletions

View file

@ -45,7 +45,7 @@ function build_environment() {
}
function canonicalize_data_paths() {
SHARELATEX_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$SHARELATEX_DATA_PATH")
OVERLEAF_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$OVERLEAF_DATA_PATH")
MONGO_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$MONGO_DATA_PATH")
REDIS_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$REDIS_DATA_PATH")
GIT_BRIDGE_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$GIT_BRIDGE_DATA_PATH")
@ -54,10 +54,15 @@ function canonicalize_data_paths() {
# Set environment variables for docker-compose.base.yml
function set_base_vars() {
DOCKER_COMPOSE_FLAGS=(-f "$TOOLKIT_ROOT/lib/docker-compose.base.yml")
if [[ "$IMAGE_VERSION_MAJOR" -lt 5 ]]; then
DOCKER_COMPOSE_FLAGS+=(-f "$TOOLKIT_ROOT/lib/docker-compose.vars-legacy.yml")
else
DOCKER_COMPOSE_FLAGS+=(-f "$TOOLKIT_ROOT/lib/docker-compose.vars.yml")
fi
local image_name
if [[ -n ${SHARELATEX_IMAGE_NAME:-} ]]; then
image_name="$SHARELATEX_IMAGE_NAME"
if [[ -n ${OVERLEAF_IMAGE_NAME:-} ]]; then
image_name="$OVERLEAF_IMAGE_NAME"
elif [[ $SERVER_PRO == "true" ]]; then
image_name="quay.io/sharelatex/sharelatex-pro"
else
@ -65,12 +70,12 @@ function set_base_vars() {
fi
export IMAGE="$image_name:$IMAGE_VERSION"
if [[ ${SHARELATEX_LISTEN_IP:-null} == "null" ]];
if [[ ${OVERLEAF_LISTEN_IP:-null} == "null" ]];
then
echo "WARNING: the value of SHARELATEX_LISTEN_IP is not set in config/overleaf.rc. This value must be set to the public IP address for direct container access. Defaulting to 0.0.0.0" >&2
SHARELATEX_LISTEN_IP="0.0.0.0"
echo "WARNING: the value of OVERLEAF_LISTEN_IP is not set in config/overleaf.rc. This value must be set to the public IP address for direct container access. Defaulting to 0.0.0.0" >&2
OVERLEAF_LISTEN_IP="0.0.0.0"
fi
export SHARELATEX_LISTEN_IP
export OVERLEAF_LISTEN_IP
if [[ $SERVER_PRO != "true" || $IMAGE_VERSION_MAJOR -lt 4 ]]; then
# Force git bridge to be disabled if not ServerPro >= 4
@ -84,12 +89,19 @@ function set_base_vars() {
HAS_WEB_API=true
fi
OVERLEAF_IN_CONTAINER_DATA_PATH=/var/lib/overleaf
if [[ "$IMAGE_VERSION_MAJOR" -lt 5 ]]; then
OVERLEAF_IN_CONTAINER_DATA_PATH=/var/lib/sharelatex
fi
export GIT_BRIDGE_ENABLED
export MONGO_URL
export REDIS_HOST
export REDIS_PORT
export SHARELATEX_DATA_PATH
export SHARELATEX_PORT
export OVERLEAF_DATA_PATH
export OVERLEAF_PORT
export OVERLEAF_IN_CONTAINER_DATA_PATH
}
# Set environment variables for docker-compose.redis.yml
@ -118,7 +130,7 @@ function set_mongo_vars() {
function set_sibling_containers_vars() {
DOCKER_COMPOSE_FLAGS+=(-f "$TOOLKIT_ROOT/lib/docker-compose.sibling-containers.yml")
export DOCKER_SOCKET_PATH
export SHARELATEX_DATA_PATH
export OVERLEAF_DATA_PATH
}
# Set environment variables for docker-compose.nginx.yml
@ -196,6 +208,7 @@ function docker_compose() {
read_image_version
read_config
check_sharelatex_env_vars
build_environment
print_debug_info "$@"
docker_compose "$@"

View file

@ -15,6 +15,8 @@ if [[ ! -d "$TOOLKIT_ROOT/bin" ]] || [[ ! -d "$TOOLKIT_ROOT/config" ]]; then
exit 1
fi
source "$TOOLKIT_ROOT/lib/shared-functions.sh"
SPACES_PER_INDENT=4
WARNINGS_FILE="$(mktemp)"
@ -185,11 +187,11 @@ function check_config_files() {
source "$TOOLKIT_ROOT/$config_file"
# Check some vars from the RC file
if [[ "${SHARELATEX_DATA_PATH:-null}" != "null" ]]; then
print_point 2 "SHARELATEX_DATA_PATH: $SHARELATEX_DATA_PATH"
if [[ "${OVERLEAF_DATA_PATH:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_DATA_PATH: $OVERLEAF_DATA_PATH"
else
print_point 2 "SHARELATEX_DATA_PATH: MISSING !"
add_warning "rc file, SHARELATEX_DATA_PATH not set"
print_point 2 "OVERLEAF_DATA_PATH: MISSING !"
add_warning "rc file, OVERLEAF_DATA_PATH not set"
fi
print_point 2 "SERVER_PRO: $SERVER_PRO"
@ -209,11 +211,11 @@ function check_config_files() {
fi
print_point 2 "SIBLING_CONTAINERS_ENABLED: $SIBLING_CONTAINERS_ENABLED"
fi
if [[ "${SHARELATEX_LISTEN_IP:-null}" != "null" ]]; then
print_point 2 "SHARELATEX_LISTEN_IP: ${SHARELATEX_LISTEN_IP}"
if [[ "${OVERLEAF_LISTEN_IP:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_LISTEN_IP: ${OVERLEAF_LISTEN_IP}"
fi
if [[ "${SHARELATEX_PORT:-null}" != "null" ]]; then
print_point 2 "SHARELATEX_PORT: ${SHARELATEX_PORT}"
if [[ "${OVERLEAF_PORT:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_PORT: ${OVERLEAF_PORT}"
fi
print_point 2 "MONGO_ENABLED: $MONGO_ENABLED"
@ -353,6 +355,87 @@ function check_config_files() {
else
print_point 2 "SHARELATEX_HISTORY_BACKEND: fs"
fi
if [[ "${OVERLEAF_FILESTORE_BACKEND:-fs}" == "s3" ]]; then
print_point 2 "OVERLEAF_FILESTORE_BACKEND: s3"
if [[ "${OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME: $OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME"
else
add_warning "OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME is unset"
fi
if [[ "${OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME: $OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME"
else
add_warning "OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME is unset"
fi
if [[ "${OVERLEAF_FILESTORE_S3_ENDPOINT:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_S3_ENDPOINT: [set here]"
else
print_point 2 "OVERLEAF_FILESTORE_S3_ENDPOINT: Using AWS S3"
fi
if [[ "${OVERLEAF_FILESTORE_S3_PATH_STYLE:-null}" == "true" ]]; then
print_point 2 "OVERLEAF_FILESTORE_S3_PATH_STYLE: true"
else
print_point 2 "OVERLEAF_FILESTORE_S3_PATH_STYLE: false"
fi
if [[ "${OVERLEAF_FILESTORE_S3_REGION:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_S3_REGION: $OVERLEAF_FILESTORE_S3_REGION"
else
print_point 2 "OVERLEAF_FILESTORE_S3_REGION: <unset>"
fi
if [[ "${OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID: [set here]"
else
add_warning "OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID is missing"
fi
if [[ "${OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY: [set here]"
else
add_warning "OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY is missing"
fi
else
print_point 2 "OVERLEAF_FILESTORE_BACKEND: fs"
fi
if [[ "${OVERLEAF_HISTORY_BACKEND:-fs}" == "s3" ]]; then
print_point 2 "OVERLEAF_HISTORY_BACKEND: s3"
if [[ "${OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET: $OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET"
else
add_warning "OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET is unset"
fi
if [[ "${OVERLEAF_HISTORY_CHUNKS_BUCKET:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_CHUNKS_BUCKET: $OVERLEAF_HISTORY_CHUNKS_BUCKET"
else
add_warning "OVERLEAF_HISTORY_CHUNKS_BUCKET is unset"
fi
if [[ "${OVERLEAF_HISTORY_S3_ENDPOINT:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_S3_ENDPOINT: [set here]"
else
print_point 2 "OVERLEAF_HISTORY_S3_ENDPOINT: Using AWS S3"
fi
if [[ "${OVERLEAF_HISTORY_S3_PATH_STYLE:-null}" == "true" ]]; then
print_point 2 "OVERLEAF_HISTORY_S3_PATH_STYLE: true"
else
print_point 2 "OVERLEAF_HISTORY_S3_PATH_STYLE: false"
fi
if [[ "${OVERLEAF_HISTORY_S3_REGION:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_S3_REGION: $OVERLEAF_HISTORY_S3_REGION"
else
print_point 2 "OVERLEAF_HISTORY_S3_REGION: <unset>"
fi
if [[ "${OVERLEAF_HISTORY_S3_ACCESS_KEY_ID:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_S3_ACCESS_KEY_ID: [set here]"
else
add_warning "OVERLEAF_HISTORY_S3_ACCESS_KEY_ID is missing"
fi
if [[ "${OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY:-null}" != "null" ]]; then
print_point 2 "OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY: [set here]"
else
add_warning "OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY is missing"
fi
else
print_point 2 "OVERLEAF_HISTORY_BACKEND: fs"
fi
fi
fi
done
@ -363,7 +446,9 @@ function cleanup() {
}
function __main__() {
read_image_version
print_section_separator "Overleaf Doctor"
check_sharelatex_env_vars
check_host_information
check_dependencies
check_docker_daemon

View file

@ -15,6 +15,8 @@ if [[ ! -d "$TOOLKIT_ROOT/bin" ]] || [[ ! -d "$TOOLKIT_ROOT/config" ]]; then
exit 1
fi
source "$TOOLKIT_ROOT/lib/shared-functions.sh"
DEFAULT_TAIL_LINES=20
ALL_SERVICES=(chat clsi contacts docstore document-updater filestore git-bridge \
mongo notifications real-time redis spelling tags track-changes web \
@ -127,8 +129,13 @@ function show_compose_logs() {
}
function show_sharelatex_logs() {
local base_path=/var/log/overleaf
if [[ "$IMAGE_VERSION_MAJOR" -lt 5 ]]; then
base_path=/var/log/sharelatex
fi
local service="$1"
local log_path="/var/log/sharelatex/$service.log"
local log_path="${base_path}/$service.log"
local flags=()
if [[ $FOLLOW == "true" ]]; then
@ -152,4 +159,5 @@ function show_sharelatex_logs() {
}
parse_args "$@"
read_image_version
show_logs

View file

@ -19,9 +19,9 @@ fi
source "$TOOLKIT_ROOT/lib/shared-functions.sh"
function usage() {
echo "Usage: bin/update-env"
echo "Usage: bin/rename-env-vars-5-0"
echo ""
echo "Updates config/variables.env, adding new environment variables"
echo "Updates config/variables.env to ensure variables are renamed from 'SHARELATEX_' to 'OVERLEAF_'"
echo ""
}
@ -31,12 +31,10 @@ function __main__() {
exit
fi
# read_image_version
echo "This script will update your config/variables.env."
echo "We recommend backing up your config with bin/backup-config."
prompt "Do you want to continue?"
rebrand_sharelatex_env_variables
rebrand_sharelatex_env_variables 'variables.env'
echo "Done."
}

42
bin/rename-rc-vars Executable file
View file

@ -0,0 +1,42 @@
#! /usr/bin/env bash
# shellcheck source-path=..
set -euo pipefail
#### Detect Toolkit Project Root ####
# if realpath is not available, create a semi-equivalent function
command -v realpath >/dev/null 2>&1 || realpath() {
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
TOOLKIT_ROOT="$(realpath "$SCRIPT_DIR/..")"
if [[ ! -d "$TOOLKIT_ROOT/bin" ]] || [[ ! -d "$TOOLKIT_ROOT/config" ]]; then
echo "ERROR: could not find root of overleaf-toolkit project (inferred project root as '$TOOLKIT_ROOT')"
exit 1
fi
source "$TOOLKIT_ROOT/lib/shared-functions.sh"
function usage() {
echo "Usage: bin/rename-rc-vars"
echo ""
echo "Updates config/overleaf.rc to ensure variables are renamed from 'SHARELATEX_' to 'OVERLEAF_'"
echo ""
}
function __main__() {
if [[ "${1:-null}" == "help" ]] || [[ "${1:-null}" == "--help" ]]; then
usage
exit
fi
echo "This script will update your config/overleaf.rc."
echo "We recommend backing up your config with bin/backup-config."
rebrand_sharelatex_env_variables 'overleaf.rc'
echo "Done."
}
__main__ "$@"

17
bin/up
View file

@ -35,22 +35,6 @@ function check_config() {
fi
}
function check_sharelatex_env_vars() {
local invalid_prefix="SHARELATEX_"
if [[ "$IMAGE_VERSION_MAJOR" -lt 5 ]]; then
invalid_prefix="OVERLEAF_"
fi
if grep -q "$invalid_prefix" "$TOOLKIT_ROOT/config/variables.env"; then
echo "WARNING: some environment variables defined in config/variables.env"
echo "contain '$invalid_prefix' in their name"
echo "Starting with Overleaf CE and Server Pro 5.0.0 the environment variables"
echo "use the prefix 'OVERLEAF_' instead of 'SHARELATEX_'."
echo "Please check your config/version and config/variables.env files"
prompt "Do you want to continue?"
fi
}
function initiate_mongo_replica_set() {
echo "Initiating Mongo replica set..."
"$TOOLKIT_ROOT/bin/docker-compose" up -d mongo
@ -70,7 +54,6 @@ function __main__() {
read_image_version
check_config
check_sharelatex_env_vars
read_config
if [[ "$MONGO_ENABLED" == "true" && "$IMAGE_VERSION_MAJOR" -ge 4 ]]; then

View file

@ -170,10 +170,8 @@ function handle_image_upgrade() {
echo "Over-writing config/version with $SEED_IMAGE_VERSION"
cp "$TOOLKIT_ROOT/lib/config-seed/version" "$TOOLKIT_ROOT/config/version"
if [[ "$IMAGE_VERSION_MAJOR" -le 4 && "$SEED_IMAGE_VERSION_MAJOR" -ge 5 ]]; then
echo "Renaming environment variables in config/variables.env"
prompt "Proceed with the environment variable renaming?"
rebrand_sharelatex_env_variables
if [[ "$IMAGE_VERSION_MAJOR" -le 4 && "$SEED_IMAGE_VERSION_MAJOR" -ge 5 ]]; then
rebrand_sharelatex_env_variables 'variables.env'
fi
## Maybe offer to start services again
@ -224,6 +222,11 @@ function handle_git_update() {
fi
}
function handle_rc_rebranding() {
## Rename variables in overleaf.rc SHARELATEX_ -> OVERLEAF_
rebrand_sharelatex_env_variables 'overleaf.rc' silent_if_no_match
}
function __main__() {
if [[ "${1:-null}" == "help" ]] \
|| [[ "${1:-null}" == "--help" ]] ; then
@ -238,6 +241,7 @@ function __main__() {
read_seed_image_version
read_image_version
handle_rc_rebranding
handle_image_upgrade
echo "Done"