Add resumable uploads, proxy discovery, PWA install and 2 GiB personal vaults

This commit is contained in:
2026-10-12 15:54:26 +09:00
parent 439c2ae61b
commit 464715aa69
43 changed files with 1647 additions and 137 deletions

View File

@@ -79,6 +79,22 @@ else
fi
chmod 600 .env
if grep -Eq '^USER_STORAGE_LIMIT_MB=10240$' .env; then
hop_env_tmp=$(mktemp .env.nas.XXXXXX)
awk '{ if ($0 == "USER_STORAGE_LIMIT_MB=10240") print "USER_STORAGE_LIMIT_MB=2048"; else print }' .env > "$hop_env_tmp"
mv "$hop_env_tmp" .env
hop_env_tmp=''
printf '%s\n' '개인 보관함 기본 한도를 10GiB에서 2GiB로 변경했습니다. 기존 자료는 유지합니다.'
fi
if ! grep -Eq '^PROXY_DIAGNOSTIC_TOKEN=.{32,}$' .env; then
hop_diagnostic_token=$(openssl rand -hex 32)
hop_env_tmp=$(mktemp .env.nas.XXXXXX)
awk '!/^PROXY_DIAGNOSTIC_TOKEN=/' .env > "$hop_env_tmp"
printf 'PROXY_DIAGNOSTIC_TOKEN=%s\n' "$hop_diagnostic_token" >> "$hop_env_tmp"
mv "$hop_env_tmp" .env
hop_env_tmp=''
unset hop_diagnostic_token
fi
hop_yaml_tmp=$(mktemp .compose.nas.XXXXXX)
docker compose --project-name hop --project-directory "$PWD" --env-file .env -f compose.yaml config --no-env-resolution > "$hop_yaml_tmp"
mv "$hop_yaml_tmp" compose.nas.yaml

View File

@@ -0,0 +1,23 @@
#!/bin/sh
set -eu
cd "$(dirname "$0")/.."
umask 077
hop_settings=$(mktemp .env.discovery.XXXXXX)
hop_environment=$(mktemp .env.discovery.XXXXXX)
trap 'rm -f "$hop_settings" "$hop_environment"' 0
hop_container=$(sudo docker compose --project-name hop -f compose.nas.yaml ps -q hop)
if [ -z "$hop_container" ]; then
printf '%s\n' 'Docker 앱에서 새 버전의 hop 프로젝트를 먼저 시작하세요.' >&2
exit 1
fi
sudo docker exec "$hop_container" node apps/server/dist/check-proxy.js > "$hop_settings"
if [ "$(wc -l < "$hop_settings" | tr -d ' ')" != 3 ]; then
printf '%s\n' '프록시 확인 결과가 올바르지 않습니다.' >&2
exit 1
fi
awk '!/^(TRUSTED_PROXY_CIDRS|CLIENT_IP_SOURCE|SAME_NETWORK_DISCOVERY_ENABLED)=/' .env > "$hop_environment"
cat "$hop_settings" >> "$hop_environment"
mv "$hop_environment" .env
chmod 600 .env
sh scripts/configure-nas.sh
printf '\n%s\n' '자동 발견 설정 완료. Docker 앱에서 compose.nas.yaml을 다시 불러와 재배포하세요.'

View File

@@ -0,0 +1,14 @@
#!/bin/sh
set -eu
cd "$(dirname "$0")/.."
hop_tunnel_peers=$(sudo docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{"\n"}}{{.Gateway}}{{"\n"}}{{.GlobalIPv6Address}}{{"\n"}}{{.IPv6Gateway}}{{"\n"}}{{end}}' cloudflared-tunnel | awk 'NF { print }' | sort -u)
hop_proxy_gateways=$(sudo docker inspect --format '{{range .NetworkSettings.Networks}}{{.Gateway}}{{"\n"}}{{.IPv6Gateway}}{{"\n"}}{{end}}' nginx-proxy-manager-app-1 | awk 'NF { print }' | sort -u)
if [ -z "$hop_tunnel_peers" ]; then
printf '%s\n' 'Tunnel의 Docker 네트워크 주소를 확인할 수 없습니다. 네트워크 설정을 먼저 확인하세요.' >&2
exit 1
fi
printf '%s\n' 'client_max_body_size 2048m;' 'proxy_read_timeout 3600s;' 'proxy_send_timeout 3600s;' 'set $hop_tunnel_allowed 0;'
for hop_peer in $hop_tunnel_peers $hop_proxy_gateways; do
printf 'if ($realip_remote_addr = "%s") { set $hop_tunnel_allowed 1; }\n' "$hop_peer"
done
printf '%s\n' 'if ($hop_tunnel_allowed = 0) { return 403; }'