@@ -18,30 +18,44 @@ $STD apt install -y \
1818 build-essential
1919msg_ok " Installed Dependencies"
2020
21+ NODE_VERSION=" 24" setup_nodejs
2122PG_VERSION=" 17" setup_postgresql
2223PG_DB_NAME=" oxicloud" PG_DB_USER=" oxicloud" setup_postgresql_db
2324fetch_and_deploy_gh_release " OxiCloud" " DioCrafts/OxiCloud" " tarball" " latest" " /opt/oxicloud"
24- TOOLCHAIN=" $( sed -n ' 2s/[^:]*://p' /opt/oxicloud/Dockerfile | awk -F- ' {print $1}' ) "
25- RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
25+ # Extract pinned Rust toolchain from Dockerfile (e.g. "FROM rust:1.96-alpine3.24" -> 1.96)
26+ TOOLCHAIN=" $( grep -oP ' FROM\s+rust:\K[0-9]+\.[0-9]+(\.[0-9]+)?' /opt/oxicloud/Dockerfile | head -1) "
27+ RUST_TOOLCHAIN=" ${TOOLCHAIN:- stable} " setup_rust
2628
27- msg_info " Building OxiCloud"
29+ msg_info " Building Frontend SPA"
30+ cd /opt/oxicloud/frontend
31+ $STD npm ci
32+ $STD npm run build
33+ msg_ok " Built Frontend SPA"
34+
35+ msg_info " Building OxiCloud (Patience)"
2836cd /opt/oxicloud
2937export DATABASE_URL=" postgres://${PG_DB_USER} :${PG_DB_PASS} @localhost/${PG_DB_NAME} "
3038export RUSTFLAGS=" -C target-cpu=native"
31- $STD cargo build --release
39+ # aws-sdk-s3 + aws-lc-sys can use ~1.5 GiB per rustc job under LTO+codegen-units=1.
40+ # Cap concurrency by RAM to avoid SIGKILL on small containers (issue #1513).
41+ RAM_MB=$( awk ' /MemTotal/ {print int($2/1024)}' /proc/meminfo)
42+ CARGO_JOBS=$(( RAM_MB / 1536 ))
43+ [[ $CARGO_JOBS -lt 1 ]] && CARGO_JOBS=1
44+ $STD cargo build --release -j " $CARGO_JOBS "
3245mv target/release/oxicloud /usr/bin/oxicloud && chmod +x /usr/bin/oxicloud
46+ # Reclaim ~3 GB of build artifacts; keep source for updates.
47+ rm -rf /opt/oxicloud/target /opt/oxicloud/frontend/node_modules
3348msg_ok " Built OxiCloud"
3449
3550msg_info " Configuring OxiCloud"
3651mkdir -p {/mnt/oxicloud,/etc/oxicloud}
37- sed -e ' s|_STORAGE_PATH =.*|_STORAGE_PATH =/mnt/oxicloud|' \
38- -e ' s|_SERVER_HOST =.*|_SERVER_HOST =0.0.0.0|' \
39- -e ' s|OXICLOUD_STATIC_PATH=.*|OXICLOUD_STATIC_PATH=/opt/oxicloud/static|' \
52+ sed -e ' s|OXICLOUD_STORAGE_PATH =.*|OXICLOUD_STORAGE_PATH =/mnt/oxicloud|' \
53+ -e ' s|OXICLOUD_SERVER_HOST =.*|OXICLOUD_SERVER_HOST =0.0.0.0|' \
54+ -e ' s|OXICLOUD_STATIC_PATH=.*|OXICLOUD_STATIC_PATH=/opt/oxicloud/static-dist |' \
4055 -e " s|^#OXICLOUD_BASE_URL=.*|OXICLOUD_BASE_URL=http://${LOCAL_IP} :8086|" \
41- -e " s|_STRING =.*|_STRING =${DATABASE_URL} |" \
42- -e " s|DATABASE_URL=.*|DATABASE_URL=${DATABASE_URL} |" \
56+ -e " s|OXICLOUD_DB_CONNECTION_STRING =.*|OXICLOUD_DB_CONNECTION_STRING =${DATABASE_URL} |" \
57+ -e " s|^ DATABASE_URL=.*|DATABASE_URL=${DATABASE_URL} |" \
4358 -e " s|^#OXICLOUD_JWT_SECRET=.*|OXICLOUD_JWT_SECRET=$( openssl rand -hex 32) |" \
44- -e ' s|^#OXICLOUD_ENABLE|OXICLOUD_ENABLE|g' \
4559 /opt/oxicloud/example.env > /etc/oxicloud/.env
4660chmod 600 /etc/oxicloud/.env
4761msg_ok " Configured OxiCloud"
0 commit comments