Deployment — pre-Colombia & on-site
The Jetson is configured in California, then physically transported to Pereira. Most configuration must happen before flight — once it’s in Colombia, the only remote tool is Tailscale. If Tailscale itself isn’t configured, recovery requires a physical visit to the plant.
Pre-Colombia checklist (California, before flight)
Section titled “Pre-Colombia checklist (California, before flight)”A. Tailscale — CRITICAL
Section titled “A. Tailscale — CRITICAL”- Install:
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up- Authenticate via browser (use the shared project Tailscale account, not Sophia’s personal)
- In the Tailscale admin console: set the Jetson’s machine to “never expire” key
systemctl enable tailscaled(auto-start on boot)- Verify from a different Tailscale-connected device:
ping <jetson-tailscale-ip>should succeed
Tailscale must be installed, authenticated, and configured to auto-start on the Jetson BEFORE leaving Colombia. If this is skipped, remote access requires a physical visit to the plant to fix it.
— v1.9 plan, section A4
B. Application stack
Section titled “B. Application stack”- Install Python 3.11, Ultralytics YOLOv8, Flask/FastAPI, pandas, openpyxl, SQLite3
- Install OpenCV built with GStreamer support (
pip install opencv-pythondoes NOT include GStreamer — build from source or use the JetPack-provided OpenCV) - Install GStreamer +
gstreamer1.0-plugins-bad+gstreamer1.0-libavsystem packages - Test the decode pipeline against a sample RTSP feed (any local Amcrest or generic ONVIF camera works)
- Verify YOLOv8 + TensorRT inference at 3–5 fps on ~640×480 downscaled frames (per ADR-004)
- Initialize SQLite with the schema from backend/README.md
- Seed
standard_timesfromRef22 Slim - Angela.xlsx - Create a
systemdunit for the app:systemctl enable lbzf-monitor
C. Storage
Section titled “C. Storage”- Install the 4TB NVMe in the Jetson’s M.2 2280 slot
- Format as ext4, mount at
/data - Verify write throughput is sufficient for 6 concurrent H.264 sub-streams (a sustained ~10 MB/s should be fine for sub-stream data)
D. Hardware bench test
Section titled “D. Hardware bench test”- Connect all 6 cameras to the 8-port PoE switch
- Connect the switch to the Jetson via Cat6
- Run the full pipeline end-to-end for at least 1 hour with all cameras streaming
- Confirm Tailscale dashboard access from a phone on a different network (cellular, not the lab Wi-Fi)
On-site procedure (Pereira)
Section titled “On-site procedure (Pereira)”- Physical placement — cameras mounted per the floor plan (see the-factory.md)
- Cabling — Cat6 from each module’s 8-port PoE switch back to the main switch in the computer room
- Power — power up Jetson; verify Tailscale auto-connects (should already be configured)
- Network reconfigure — update camera IPs in the app config to match the plant’s subnet
- End-to-end test — run pipeline; verify all 6 cameras detected by YOLOv8 and emitting cycle events
- Training hand-off — train the local technical contact on the basic restart procedure (start/stop the
lbzf-monitorsystemd unit, where logs are, how to reach Sophia) - First Excel export — generate one, hand to plant management, confirm format matches
INDICADORES ABRIL.xlsx
Remote ops from California (post-deployment)
Section titled “Remote ops from California (post-deployment)”- SSH:
ssh sophia@<jetson-tailscale-ip> - Dashboard:
http://<jetson-tailscale-ip>:5000 - Logs:
journalctl -u lbzf-monitor -f - Restart app:
systemctl restart lbzf-monitor - Restart Tailscale (only if absolutely needed):
systemctl restart tailscaled
What to do if Tailscale dies
Section titled “What to do if Tailscale dies”Physical visit. There is no alternative once the device is in Colombia and Tailscale is the only inbound channel. This is why section A is gated as critical.