File size: 2,579 Bytes
93c7565
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#cloud-config
# ProofBridge Liner — DigitalOcean / Hetzner droplet bootstrap
# Usage:
#   doctl compute droplet create proofbridge \
#     --image docker-20-04 --size s-2vcpu-4gb --region ams3 \
#     --user-data-file cloud-init.yml
#
# Secrets injected via --user-data or droplet env vars:
#   HF_TOKEN, POLYGON_AMOY_RPC_URL, TEE_SECRET,
#   HF_OAUTH_CLIENT_ID, HF_OAUTH_CLIENT_SECRET

users:
  - name: proofbridge
    groups: docker
    shell: /bin/bash
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINlukmyly6ZKz2O1E353xir3uwXaAEvzHvK4fg/ewPmX

runcmd:
  # 1. Ensure Docker is running (pre-installed on Quick Start images)
  - systemctl enable docker
  - systemctl start docker

  # 2. Clone repo
  - su - proofbridge -c "git clone https://github.com/divhanimajokweni-ctrl/proofbridge-liner.git /home/proofbridge/proofbridge-liner || echo 'Clone failed — upload manually'"
  - chown -R proofbridge:proofbridge /home/proofbridge/proofbridge-liner

  # 3. Build Docker image
  - su - proofbridge -c "cd /home/proofbridge/proofbridge-liner && docker build -t proofbridge-liner:latest ."

  # 4. Create systemd service
  - |
    cat > /etc/systemd/system/proofbridge.service << 'EOF'
    [Unit]
    Description=ProofBridge Liner — Safety Kernel Dashboard
    After=docker.service network.target
    Requires=docker.service

    [Service]
    Restart=always
    RestartSec=5
    ExecStartPre=-/usr/bin/docker rm -f proofbridge-liner
    ExecStart=/usr/bin/docker run --rm \
      --name proofbridge-liner \
      --network host \
      -e NODE_ENV=production \
      -e DASHBOARD_PORT=7860 \
      -e DASHBOARD_HOST=0.0.0.0 \
      -e HF_TOKEN=hf_gyeOsuXDVGcvWdRHMzxgikvfFkzmQPjGv \
      -e POLYGON_AMOY_RPC_URL=https://rpc-amoy.polygon.technology/ \
      -e TEE_SECRET=<random hex> \
      -e HF_OAUTH_CLIENT_ID=${hf_oauth_client_id} \
      -e HF_OAUTH_CLIENT_SECRET=${hf_oauth_client_secret} \
      proofbridge-liner:latest
    ExecStop=/usr/bin/docker stop proofbridge-liner

    [Install]
    WantedBy=multi-user.target
    EOF

  # 5. Firewall — SSH + dashboard port
  - ufw allow 22/tcp
  - ufw allow 7860/tcp
  - ufw --force enable

  # 6. Enable and start
  - systemctl daemon-reload
  - systemctl enable proofbridge
  - systemctl start proofbridge

  # 7. Wait and verify
  - sleep 8
  - curl -sf http://localhost:7860/health && echo "Health OK" || echo "Health check failed — run: journalctl -u proofbridge -f"

final_message: "ProofBridge Liner deployed. Dashboard: http://<droplet-ip>:7860  Health: http://<droplet-ip>:7860/health"