mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-26 20:54:21 +01:00
Send pre-compressed assets to the browsers instead of the regular ones
+ improved setup script with some explanations for reverse-proxies
This commit is contained in:
parent
cd30e0d8d8
commit
f50f5a4058
@ -3,7 +3,10 @@
|
|||||||
## Next release
|
## Next release
|
||||||
- Prevent showing error message when testing for old versions during upgrade
|
- Prevent showing error message when testing for old versions during upgrade
|
||||||
- In the email notification, sent to admins on account creation, show the group of the user
|
- In the email notification, sent to admins on account creation, show the group of the user
|
||||||
|
- More explanations in the setup script
|
||||||
|
- Send pre-compressed assets to the browsers instead of the regular ones
|
||||||
- Fix a bug: subscriptions tab is selected by default in statistics, even if the module is disabled
|
- Fix a bug: subscriptions tab is selected by default in statistics, even if the module is disabled
|
||||||
|
- [TODO DEPLOY] `\curl -sSL https://raw.githubusercontent.com/sleede/fab-manager/master/scripts/nginx-packs-directive.sh | bash`
|
||||||
|
|
||||||
## v4.7.5 2021 March 08
|
## v4.7.5 2021 March 08
|
||||||
- Fix a bug: unable to compile the assets during the upgrade, if the env file has some whitespaces around the equal sign
|
- Fix a bug: unable to compile the assets during the upgrade, if the env file has some whitespaces around the equal sign
|
||||||
|
80
scripts/nginx-packs-directive.sh
Normal file
80
scripts/nginx-packs-directive.sh
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
yq() {
|
||||||
|
docker run --rm -i -v "${NGINX_PATH}:/workdir" mikefarah/yq:4 "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
config()
|
||||||
|
{
|
||||||
|
if [ "$(whoami)" = "root" ]
|
||||||
|
then
|
||||||
|
echo "It is not recommended to run this script as root. As a normal user, elevation will be prompted if needed."
|
||||||
|
[[ "$YES_ALL" = "true" ]] && confirm="y" || read -rp "Continue anyway? (Y/n) " confirm </dev/tty
|
||||||
|
if [[ "$confirm" = "n" ]]; then exit 1; fi
|
||||||
|
else
|
||||||
|
if ! groups | grep docker; then
|
||||||
|
echo "Please add your current user to the docker group."
|
||||||
|
echo "You can run the following as root: \"usermod -aG docker $(whoami)\", then logout and login again"
|
||||||
|
echo "current user is not allowed to use docker, exiting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
NGINX_PATH=$(pwd)
|
||||||
|
TYPE="NOT-FOUND"
|
||||||
|
[[ "$YES_ALL" = "true" ]] && confirm="y" || read -rp "Is Fab-manager installed at \"$NGINX_PATH\"? (y/N) " confirm </dev/tty
|
||||||
|
if [ "$confirm" = "y" ]; then
|
||||||
|
test_docker_compose
|
||||||
|
while [[ "$TYPE" = "NOT-FOUND" ]]
|
||||||
|
do
|
||||||
|
echo "nginx was not found at the current path, please specify the nginx installation path..."
|
||||||
|
read -e -rp "> " nginxpath </dev/tty
|
||||||
|
NGINX_PATH="${nginxpath}"
|
||||||
|
test_docker_compose
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "Please run this script from the Fab-manager's installation folder"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
SERVICE="$(yq eval '.services.*.image | select(. == "nginx*") | path | .[-2]' docker-compose.yml)"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_docker_compose()
|
||||||
|
{
|
||||||
|
if [[ -f "$NGINX_PATH/docker-compose.yml" ]]
|
||||||
|
then
|
||||||
|
docker-compose -f "$NGINX_PATH/docker-compose.yml" ps | grep nginx
|
||||||
|
if [[ $? = 0 ]]
|
||||||
|
then
|
||||||
|
printf "nginx found at %s\n" "$NGINX_PATH"
|
||||||
|
TYPE="DOCKER-COMPOSE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
proceed_upgrade()
|
||||||
|
{
|
||||||
|
find "$NGINX_PATH" -name "*.conf" -exec sed -i -e 's:location ^~ /assets/ {:location ^~ /packs/ {:g' {} \; 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
docker_restart()
|
||||||
|
{
|
||||||
|
docker-compose -f "$NGINX_PATH/docker-compose.yml" restart "$SERVICE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function trap_ctrlc()
|
||||||
|
{
|
||||||
|
echo "Ctrl^C, exiting..."
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
upgrade_directive()
|
||||||
|
{
|
||||||
|
trap "trap_ctrlc" 2 # SIGINT
|
||||||
|
config
|
||||||
|
proceed_upgrade
|
||||||
|
docker_restart
|
||||||
|
printf "upgrade complete\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
upgrade_directive "$@"
|
@ -9,7 +9,7 @@ SLOT_DURATION=60
|
|||||||
FEATURE_TOUR_DISPLAY=once
|
FEATURE_TOUR_DISPLAY=once
|
||||||
|
|
||||||
DEFAULT_HOST=demo.fab-manager.com
|
DEFAULT_HOST=demo.fab-manager.com
|
||||||
DEFAULT_PROTOCOL=http
|
DEFAULT_PROTOCOL=https
|
||||||
|
|
||||||
DELIVERY_METHOD=smtp
|
DELIVERY_METHOD=smtp
|
||||||
SMTP_ADDRESS=smtp.sendgrid.net
|
SMTP_ADDRESS=smtp.sendgrid.net
|
||||||
|
@ -7,7 +7,7 @@ server {
|
|||||||
server_name MAIN_DOMAIN;
|
server_name MAIN_DOMAIN;
|
||||||
root /usr/src/app/public;
|
root /usr/src/app/public;
|
||||||
|
|
||||||
location ^~ /assets/ {
|
location ^~ /packs/ {
|
||||||
gzip_static on;
|
gzip_static on;
|
||||||
expires max;
|
expires max;
|
||||||
add_header Cache-Control public;
|
add_header Cache-Control public;
|
||||||
|
@ -28,7 +28,7 @@ server {
|
|||||||
ssl_stapling_verify on;
|
ssl_stapling_verify on;
|
||||||
|
|
||||||
|
|
||||||
location ^~ /assets/ {
|
location ^~ /packs/ {
|
||||||
gzip_static on;
|
gzip_static on;
|
||||||
expires max;
|
expires max;
|
||||||
add_header Cache-Control public;
|
add_header Cache-Control public;
|
||||||
|
@ -68,16 +68,18 @@ config()
|
|||||||
{
|
{
|
||||||
SERVICE="fabmanager"
|
SERVICE="fabmanager"
|
||||||
echo 'We recommend nginx to serve the application over the network (internet). You can use your own solution or let this script install and configure nginx for Fab-manager.'
|
echo 'We recommend nginx to serve the application over the network (internet). You can use your own solution or let this script install and configure nginx for Fab-manager.'
|
||||||
|
printf 'If you want to setup install Fab-manager behind a reverse proxy, you may not need to install the integrated nginx.\n'
|
||||||
read -rp 'Do you want install nginx? (Y/n) ' NGINX </dev/tty
|
read -rp 'Do you want install nginx? (Y/n) ' NGINX </dev/tty
|
||||||
if [ "$NGINX" != "n" ]; then
|
if [ "$NGINX" != "n" ]; then
|
||||||
# if the user doesn't want nginx, let him use its own solution for HTTPS
|
# if the user doesn't want nginx, let him use its own solution for HTTPS
|
||||||
printf "\n\nWe recommend let's encrypt to secure the application with HTTPS. You can use your own certificate or let this script install and configure let's encrypt for Fab-manager.\n"
|
printf "\n\nWe highly recommend to secure the application with HTTPS. You can use your own certificate or let this script install and configure let's encrypt for Fab-manager."
|
||||||
|
printf "\nIf this server is publicly available on the internet, you can use Let's encrypt to automatically generate and renew a valid SSL certificate for free.\n"
|
||||||
read -rp "Do you want install let's encrypt? (Y/n) " LETSENCRYPT </dev/tty
|
read -rp "Do you want install let's encrypt? (Y/n) " LETSENCRYPT </dev/tty
|
||||||
if [ "$LETSENCRYPT" != "n" ]; then
|
if [ "$LETSENCRYPT" != "n" ]; then
|
||||||
printf "\n\nLet's encrypt requires an email address to receive notifications about certificate expiration.\n"
|
printf "\n\nLet's encrypt requires an email address to receive notifications about certificate expiration.\n"
|
||||||
read_email
|
read_email
|
||||||
fi
|
fi
|
||||||
# if the user doesn't want nginx, let him configure his own solution
|
# if the user wants to install nginx, configure the domains
|
||||||
printf "\n\nWhat's the domain name where the instance will be active (eg. fab-manager.com)?\n"
|
printf "\n\nWhat's the domain name where the instance will be active (eg. fab-manager.com)?\n"
|
||||||
read_domain
|
read_domain
|
||||||
MAIN_DOMAIN=("${DOMAINS[0]}")
|
MAIN_DOMAIN=("${DOMAINS[0]}")
|
||||||
@ -162,6 +164,7 @@ prepare_nginx()
|
|||||||
# if nginx is not installed, remove its associated block from docker-compose.yml
|
# if nginx is not installed, remove its associated block from docker-compose.yml
|
||||||
echo "Removing nginx..."
|
echo "Removing nginx..."
|
||||||
yq -i eval 'del(.services.nginx)' docker-compose.yml
|
yq -i eval 'del(.services.nginx)' docker-compose.yml
|
||||||
|
printf "The two following configurations are useful if you want to install Fab-manager behind a reverse proxy...\n"
|
||||||
read -rp "Do you want to map the Fab-manager's service to an external network? (Y/n) " confirm </dev/tty
|
read -rp "Do you want to map the Fab-manager's service to an external network? (Y/n) " confirm </dev/tty
|
||||||
if [ "$confirm" != "n" ]; then
|
if [ "$confirm" != "n" ]; then
|
||||||
echo "Adding a network configuration to the docker-compose.yml file..."
|
echo "Adding a network configuration to the docker-compose.yml file..."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user