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>
Contributor
Try this scriptCOMMUNITY_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
|
CrazyWolf13
approved these changes
Sep 27, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.🛠️ 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