Spaces:
Runtime error
Runtime error
| set -e | |
| # Capture runtime UID/GID from environment variables, defaulting to 1000 | |
| PUID=${USER_UID:-1000} | |
| PGID=${USER_GID:-1000} | |
| # Adjust the node user's UID/GID if they differ from the runtime request | |
| # and fix volume ownership only when a remap is needed | |
| changed=0 | |
| if [ "$(id -u node)" -ne "$PUID" ]; then | |
| echo "Updating node UID to $PUID" | |
| usermod -o -u "$PUID" node | |
| changed=1 | |
| fi | |
| if [ "$(id -g node)" -ne "$PGID" ]; then | |
| echo "Updating node GID to $PGID" | |
| groupmod -o -g "$PGID" node | |
| usermod -g "$PGID" node | |
| changed=1 | |
| fi | |
| if [ "$changed" = "1" ]; then | |
| chown -R node:node /paperclip | |
| fi | |
| export PAPERCLIP_DEPLOYMENT_MODE=authenticated | |
| export PAPERCLIP_DEPLOYMENT_EXPOSURE=public | |
| # In background, wait a bit for server to start up, then bootstrap CEO | |
| ( | |
| sleep 10 | |
| export PAPERCLIP_DEPLOYMENT_MODE=authenticated | |
| export PAPERCLIP_DEPLOYMENT_EXPOSURE=public | |
| echo "Onboarding environment and bootstrapping CEO..." | |
| echo "Running default setup manually..." > /paperclip/bootstrap_logs.txt | |
| mkdir -p /paperclip/instances/default/db | |
| mkdir -p /paperclip/instances/default/data/logs | |
| mkdir -p /paperclip/instances/default/data/artifacts | |
| cat << JSONEOF > /paperclip/instances/default/config.json | |
| { | |
| "\$meta": { | |
| "version": 1, | |
| "createdAt": "2026-04-06T19:20:00.000Z", | |
| "updatedAt": "2026-04-06T19:20:00.000Z", | |
| "source": "onboard" | |
| }, | |
| "instanceId": "default", | |
| "deployment": { | |
| "exposure": "public", | |
| "mode": "authenticated", | |
| "authOrigin": null, | |
| "uiMode": "static" | |
| }, | |
| "database": { | |
| "engine": "embedded-postgres", | |
| "path": "/paperclip/instances/default/db" | |
| }, | |
| "server": { | |
| "port": 7860 | |
| }, | |
| "storage": { | |
| "engine": "local", | |
| "root": "/paperclip/instances/default/data/artifacts" | |
| }, | |
| "logging": { | |
| "level": "info", | |
| "dir": "/paperclip/instances/default/data/logs", | |
| "mode": "file" | |
| }, | |
| "agent": { | |
| "jwtSecret": "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" | |
| } | |
| } | |
| JSONEOF | |
| echo "Wrote default config.json. Bootstrapping CEO and generating invite URL..." >> /paperclip/bootstrap_logs.txt | |
| # try running it from root instead of explicit paths | |
| PAPERCLIP_DEPLOYMENT_MODE=authenticated PAPERCLIP_DEPLOYMENT_EXPOSURE=public PAPERCLIP_HOME=/paperclip PAPERCLIP_INSTANCE_ID=default gosu node npm run start -- auth bootstrap-ceo >> /paperclip/bootstrap_logs.txt 2>&1 | |
| ) & | |
| export PAPERCLIP_DEPLOYMENT_MODE=authenticated | |
| export PAPERCLIP_DEPLOYMENT_EXPOSURE=public | |
| export PAPERCLIP_HOME=/paperclip | |
| export PAPERCLIP_INSTANCE_ID=default | |
| exec gosu node "$@" | |