File size: 2,561 Bytes
029d2df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b90fd5
 
 
 
 
 
d78ce96
 
5b90fd5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0554601
 
5b90fd5
 
 
 
18dc087
 
d381974
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh
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 "$@"