Repository navigation
Conversation
Bare-metal install of OpenSEO (every-app/open-seo): Node 22 + pnpm, local D1 migrations, vite build, served by vite preview (workerd) on port 3001, same sequence as upstream Dockerfile.selfhost and docker-entrypoint.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Try this script
COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/visbran/ProxmoxVED/feat/openseo \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/visbran/ProxmoxVED/feat/openseo/ct/openseo.sh)"
Against a core branch as wellAdd Useful flags while testing
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Updated the branch:
The three OpenSEO files are otherwise unchanged since the approval. Anything else needed from my side before merge? |
Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.
✍️ Description
New script for OpenSEO, an open source SEO platform (keyword research, rank tracking, backlinks, site audits) backed by the pay-as-you-go DataForSEO API.
Where the install steps come from:
Dockerfile.selfhost,docker-entrypoint.sh,compose.yaml,.env.selfhost.example,package.jsonanddocs/SELF_HOSTING_DOCKER.mdupstream. The Docker image is only a wrapper around Node 22 + pnpm: preflight,db:migrate:local,pnpm run build, thenvite preview(workerd). This script does the same sequence bare-metal.node:22base image), pnpm version read frompackageManagerinpackage.json/opt/openseo/.wrangler(the Docker volume upstream)PORT, read by upstreamvite.config.ts)AUTH_MODE=local_noauth, as in upstream's Docker setup, so there is no login. A warning note says so.var_dataforseo_api_key(exported in the CT script, declared inapp_vars, prompt guarded). Without it the app starts and reports the key as missing.Things a reviewer may want to know:
db:migrate:localandbuildrun underenv -i PATH="$PATH" HOME=/root. WithCLOUDFLARE_INCLUDE_PROCESS_ENV=truethe Cloudflare vite plugin serializes the whole process environment intodist/*/.dev.vars. Inside the install that environment holdsFUNCTIONS_FILE_PATH, and the build fails withUnable to serialize value to .dev.vars: contains every supported quote character or unsafe escape sequence. A clean environment fixes it; the plugin still reads/opt/openseo/.env.dist/*/.dev.varsat build time, so editing.envneeds a rebuild, not just a restart (verified). The JSON notes give the command./opt/openseo_data:.wranglerand.envare resolved relative to the app directory by upstream's wrangler/vite config.update_scriptusescreate_backup/restore_backupfor/opt/openseo/.envand/opt/openseo/.wranglerinstead..npmrcsets--max-old-space-size=4096) and every update rebuilds. The running app uses about 700 MB.Tested on Proxmox VE 9.1.9 (amd64), Debian 13 unprivileged LXC, from a local checkout of this branch:
openseo.serviceactive,/api/healthreturns 200 (status: ok, v0.1.9), UI served on port 3001~/.openseoset to 0.1.8,updatedetects 0.1.8 → 0.1.9, backs up, redeploys, restores, rebuilds and restarts..envchanges, the D1 database (same checksum) and a marker file in.wranglersurvived.PORTfrom.envhonoured; DataForSEO key picked up after rebuild🔗 Related PR / Issue
Link: #
✅ Prerequisites (X in brackets)
🏗️ arm64 Support (X in brackets)
var_arm64is left unset (andarchitecturesomitted): pure Node, and workerd ships a linux-arm64 build, but I have no arm64 host to verify it.🖥️ Tested on (X in brackets)
🛠️ 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.Please describe to which degree, if any, an LLM was used in creating this pull request. Name the model(s) used and, if applicable, the reasoning/thinking effort level (e.g. "Claude Sonnet 4.5, high reasoning, used to draft the install script, then manually reviewed and tested" or "No LLM used"). This is informational, not a penalty — but scripts that are clearly AI-generated and not further revised by the author to match
CODE-AUDIT.md/CONTRIBUTING.mdmay be closed without review.Claude Opus 5.5 (Claude Code, default reasoning level) read the upstream repo and
AGENTS.md, drafted the three files, ran the install and update tests on my Proxmox host and fixed the issues they found (the.dev.varsserialization failure, an unguardedreadin unattended mode, a duplicated port, a wrong "restart is enough" note). I reviewed the scripts before opening this PR.📋 Additional Information (optional)
Test run:
TERM=xterm DISABLE_UPDATE=yes mode=default var_ctid=… var_net=…/24 var_gateway=… bash ct/openseo.shfrom a local checkout.📦 Application Requirements (for new scripts)
🌐 Source
🤖 Generated with Claude Code