Repository navigation
New Script: Lightpanda LXC - #2465
justadityaraj wants to merge 4 commits into
Conversation
Try this script
COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/justadityaraj/DevScripts/feat/lightpanda \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/justadityaraj/DevScripts/feat/lightpanda/ct/lightpanda.sh)"
Against a core branch as wellAdd Useful flags while testing
|
|
Ran the bot command above on a fresh PVE 8.4.21 shell with |
Both servers are unauthenticated and an agent driving them can be steered by page content. Without the flag the container can open any service on the LAN; with it, requests resolving to private or internal IPs fail. Users who need internal sites remove the flag from the two unit files.
| "documentation": "https://lightpanda.io/docs", | ||
| "website": "https://lightpanda.io/", | ||
| "repository": "https://github.com/lightpanda-io/browser", | ||
| "logo": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/webp/lightpanda.webp", |
There was a problem hiding this comment.
can you switch to selfh.st/icons or request it?
There was a problem hiding this comment.
Requested it: selfhst/icons#1069 (their discussions board). Left the dashboard-icons URL in until it lands, then I'll switch to the selfh.st one.
| "date_created": "2026-10-23", | ||
| "type": "ct", | ||
| "updateable": true, | ||
| "privileged": false, |
There was a problem hiding this comment.
think you are missing some fields, at least architectures
There was a problem hiding this comment.
Added architectures and platforms in a373888. Ran the arm64 .deb on Debian 13 aarch64 (install, CDP + MCP servers, fetch) so var_arm64 is yes and architectures is [amd64, arm64].
Verified the arm64 .deb (1.0.2) on Debian 13 aarch64: installs, CDP and MCP servers answer, fetch renders pages. fetch_and_deploy_gh_release picks the arm64 asset from dpkg --print-architecture, so the script needs no other change. architectures and platforms added to the JSON per review.
| echo -e "${INFO}${YW}Connect Puppeteer or Playwright to the CDP server:${CL}" | ||
| echo -e "${GATEWAY}${BGN}ws://${IP}:9222${CL}" | ||
| echo -e "${INFO}${YW}Connect an AI agent to the MCP server:${CL}" | ||
| echo -e "${GATEWAY}${BGN}http://${IP}:9223/mcp${CL}" |
There was a problem hiding this comment.
| echo -e "${INFO}${YW}Connect Puppeteer or Playwright to the CDP server:${CL}" | |
| echo -e "${GATEWAY}${BGN}ws://${IP}:9222${CL}" | |
| echo -e "${INFO}${YW}Connect an AI agent to the MCP server:${CL}" | |
| echo -e "${GATEWAY}${BGN}http://${IP}:9223/mcp${CL}" |
notes in json
There was a problem hiding this comment.
Dropped the four echo lines in 1e1d783. The connect info is the first JSON note now.
| { | ||
| "text": "Neither server has authentication. Anyone who can reach ports 9222 and 9223 can browse the web through this container, so keep it on a trusted network.", | ||
| "type": "warning" | ||
| }, |
There was a problem hiding this comment.
| { | |
| "text": "Neither server has authentication. Anyone who can reach ports 9222 and 9223 can browse the web through this container, so keep it on a trusted network.", | |
| "type": "warning" | |
| }, |
Review by asylumexp: the CDP/MCP connect info belongs in the JSON notes, which already carry it, and the no-authentication warning goes.
✍️ Description
New script for Lightpanda, a headless browser built from scratch (Zig + V8) for AI agents and automation. It speaks CDP, so Puppeteer and Playwright connect to it like they would to Chrome, and it ships a built-in MCP server.
What the script does:
.debfrom GitHub releases withfetch_and_deploy_gh_release ... "binary". The package is just/usr/bin/lightpanda, no service, so the script adds two units.lightpanda.service: CDP server on 9222. Same flags as upstream's DockerCMD(serve --host 0.0.0.0 --port 9222 --log-level info) plus--advertise-host ${LOCAL_IP}. Without it/json/versionhands outws://127.0.0.1:9222, soconnectOverCDP('http://<IP>:9222')from another machine dials itself. Lightpanda logs a warning about exactly this when bound to 0.0.0.0. If the container IP changes later,ws://<new IP>:9222still connects (IP literals are always accepted), only the discovery URL goes stale.lightpanda-mcp.service: MCP over HTTP on 9223 (lightpanda mcp --host 0.0.0.0 --port 9223), so agents on the LAN can use it athttp://<IP>:9223/mcp.LIGHTPANDA_DISABLE_TELEMETRY=trueon both. Upstream sends usage telemetry by default (README, "Telemetry").--block-private-networksto both. Neither server has auth, and an agent can be steered by what's on the page, so without it anything on the LAN opens through the container. Checked on my host: the Proxmox UI answers 200 tocurlfrom inside the container, and Lightpanda fails on it withCouldntConnectonce the flag is on, while public sites still work. Remove the flag to browse internal sites, the second JSON note says so..deb. No data to keep, nothing is stored.Where this came from: read the upstream README (install, serve, MCP, telemetry sections) and the Dockerfile. The runtime stage there is only the binary + tini on debian:stable-slim, tini is just for PID 1 signal handling, so systemd covers it. The
.debonly depends onlibc6 (>= 2.35), so no extra packages.Neither server has auth (upstream has none), hence the private-network block above.
🔗 Related PR / Issue
Link: none
✅ Prerequisites (X in brackets)
🏗️ arm64 Support (X in brackets)
Ran the arm64
.deb(1.0.2) on Debian 13 aarch64 in a container: it installs, both servers come up,fetchrenders Hacker News. No arm64 Proxmox host here, so that's the scope of the test.fetch_and_deploy_gh_releasepicks the arm64 asset fromdpkg --print-architecture, so the script path is the same on both.🖥️ Tested on (X in brackets)
PVE 8.4.21, Debian 13 template, default settings, unattended (
mode=default).disabled=true.browserWSEndpoint: 'ws://<IP>:9222'andbrowserURL: 'http://<IP>:9222', loaded news.ycombinator.com and pulled all 30 story titles.initialize,tools/list(32 tools),goto+markdownon HN, thenDELETE /mcpto close the session.~/.lightpandato 1.0.1, ran the CT script inside the container withPHS_SILENT=1. It went 1.0.1 -> 1.0.2 and both services came back.🛠️ Type of Change (X in brackets)
README,AppName.md,CONTRIBUTING.md, or other docs.🔍 Code & Security Review (X in brackets)
CODE-AUDIT.md&CONTRIBUTING.mdguidelinesAppName.sh,AppName-install.sh,AppName.json)fetch_and_deploy_gh_release,fetch_and_deploy_codeberg_release,fetch_and_deploy_gl_release, orfetch_and_deploy_from_urlinstead ofgit pull.🤖 AI Assistance (X in brackets)
AGENTS.mdand.github/agents/pve-script-creator.agent.mdas guidance, and the output has been reviewed and corrected to match those guidelines.Claude Opus 5.5 in Claude Code, high reasoning effort. Used it to read the upstream repo and AGENTS.md and to draft all three files. I reviewed them against the checklist and ran the install and update on my own Proxmox host.
📋 Additional Information (optional)
Logo is from homarr-labs/dashboard-icons for now. Requested on selfh.st (selfhst/icons#1069), will switch the URL when it lands.
📦 Application Requirements (for new scripts)
🌐 Source