Troubleshooting
GitHub API rate limits during source fetch
scripts/fetch-sources.sh uses the GitHub API to resolve releases, tags, and default branches. If unauthenticated requests hit a rate limit, set GITHUB_TOKEN or GH_TOKEN before building:
export GITHUB_TOKEN=<read-only-token>
make docker
Missing build/sources.manifest
scripts/build.sh and scripts/package.sh require build/sources.manifest from the fetch step. Run:
scripts/fetch-sources.sh
or use the full orchestration:
make all
ModSecurity or OpenResty compile failures
The ModSecurity build is memory hungry. In CI, MODSEC_MAKE_JOBS defaults to 1 and MAKE_JOBS is limited to reduce OOM risk. Locally, lower parallelism if the compiler is killed:
MAKE_JOBS=2 MODSEC_MAKE_JOBS=1 make all
Package installs but service does not start
Check configuration first:
sudo openresty -t
sudo journalctl -u openresty --no-pager
The package maintainer scripts validate before starting or reloading. If validation fails, fix /etc/nginx or /etc/modsecurity and restart manually.
Port conflicts with Debian nginx
The package conflicts with Debian nginx packages and the preinst script stops and disables nginx.service when present. If another service still owns port 80 or 443, inspect listeners:
sudo ss -ltnp 'sport = :80 or sport = :443'
Stop or reconfigure the conflicting service before starting OpenResty.
Default certificate warnings
The postinst script generates a self-signed certificate when no certificate exists. Browser warnings are expected until you replace it with a real certificate and update the certificate include used by the HTTPS vhost.
Docusaurus build failures
From website/, reinstall dependencies and clear the Docusaurus cache:
npm install
npm run clear
npm run build
If deployment produces broken links on GitHub Pages, verify DOCS_URL and BASE_URL. For project pages, BASE_URL should usually be /<repo-name>/. For an organization pages repository named <org>.github.io, use BASE_URL=/.