enable brotli/gzip via precompression for Element

This commit is contained in:
Daniel Micay 2021-07-06 13:53:00 -04:00
parent a653d8bd2f
commit 740b720285
4 changed files with 57 additions and 1 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
nginx.conf.tmp
static_tmp

33
deploy_static Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
set -o errexit -o nounset -o pipefail
./process_static
remote=root@element.grapheneos.org
active=$(ssh $remote readlink /srv/element.grapheneos.org)
if [[ $active = /srv/element.grapheneos.org_a ]]; then
target=/srv/element.grapheneos.org_b
else
target=/srv/element.grapheneos.org_a
fi
echo active is $active
echo target is $target
echo
ssh $remote rm -rf $target
ssh $remote cp -a $active $target
rsync -rpcv --chmod=D755,F644 --delete static_tmp/ $remote:$target
ssh $remote sync -f $target
ssh $remote ln -snf $target /srv/element.grapheneos.org
ssh $remote sync .
sed -i "s|/srv/element.grapheneos.org|$target|" nginx.conf.tmp
rsync -rpcv --chmod=D755,F644 --delete nginx.conf.tmp $remote:/etc/nginx/nginx.conf
ssh $remote sync -f /etc/nginx/nginx.conf
ssh $remote nginx -s reload
echo
echo active is now $target

View File

@ -138,7 +138,7 @@ http {
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
server_name element.grapheneos.org; server_name element.grapheneos.org;
root /usr/share/webapps/element; root /srv/element.grapheneos.org;
include snippets/security-headers.conf; include snippets/security-headers.conf;
add_header Cross-Origin-Resource-Policy "same-origin" always; add_header Cross-Origin-Resource-Policy "same-origin" always;
@ -146,6 +146,11 @@ http {
# obsolete and replaced with Content-Security-Policy frame-ancestors 'self' # obsolete and replaced with Content-Security-Policy frame-ancestors 'self'
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Robots-Tag "none"; add_header X-Robots-Tag "none";
location ~ '\.(css|html|ico|js|json|map|pdf|svg|txt|wasm|xml)$' {
gzip_static on;
brotli_static on;
}
} }
server { server {

16
process_static Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
set -o errexit -o nounset -o pipefail
shopt -s dotglob extglob globstar
export PATH="$PWD/node_modules/.bin:$PATH"
rm -rf static_tmp
cp -a /usr/share/webapps/element static_tmp
cp --remove-destination webapps/element/config.json static_tmp/config.json
cp nginx/nginx.conf nginx.conf.tmp
find static_tmp -regex '.+\.\(css\|html\|ico\|js\|json\|map\|pdf\|svg\|txt\|webmanifest\|xml\|wasm\)' \
-exec zopfli {} \; -exec touch -r {} {}.gz \; \
-exec brotli -k {} \;