Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
runs-on: ${{ vars.RUNNER_LINUX_X64_4 || 'ubuntu-latest' }}
permissions:
actions: read
contents: read
Expand All @@ -24,7 +24,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v7

- name: Initialize CodeQL
uses: github/codeql-action/init@v2
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/k8s-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:
packages: write
jobs:
build:
runs-on: ${{ vars.RUNNER_LINUX_X64_8 || vars.RUNNER_LINUX_X64_4 || 'ubuntu-latest' }}
runs-on: ${{ vars.RUNNER_LINUX_X64_4 || 'ubuntu-latest' }}
strategy:
fail-fast: false
matrix:
Expand All @@ -20,9 +20,9 @@ jobs:
dockerfile: website/Dockerfile.everk8s
context: website
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
- uses: actions/checkout@v7
- uses: docker/setup-buildx-action@v4
- uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand All @@ -35,7 +35,7 @@ jobs:
main|master) echo "tag=prod" >> "$GITHUB_OUTPUT" ;;
*) echo "tag=${GITHUB_REF_NAME//\//-}" >> "$GITHUB_OUTPUT" ;;
esac
- uses: docker/build-push-action@v6
- uses: docker/build-push-action@v7
with:
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
Expand Down
3 changes: 3 additions & 0 deletions website/Dockerfile.everk8s
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,7 @@ FROM nginx:alpine
# so the stock nginx config serves it correctly — no SPA fallback needed.
COPY --from=build /app/build /usr/share/nginx/html

# Serve directory redirects RELATIVE, not absolute. See nginx-default.conf for why.
COPY nginx-default.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
29 changes: 14 additions & 15 deletions website/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,24 +49,23 @@ const config: Config = {
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
// Locales advertised to visitors.
//
// Docusaurus renders a language dropdown for EVERY locale listed here, but the Docker build runs
// yarn run v1.22.22
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. and so only emits English. The other twelve were linked from every page

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Uncommented Yarn output breaks configuration

info Visit https://yarnpkg.com/... is not prefixed with //, so it is parsed as TypeScript configuration rather than maintenance guidance. Consequently, the container's yarn build --locale en command fails with a parse error before the documentation site can be generated. Remove the pasted output or comment it out. Also update the nearby restoration note to explicitly name the --locale en flag used in Dockerfile.everk8s.

Artifacts

Validation script

  • This non-mutating script ran the exact repository locale build and a corrected isolated-copy comparison, showing the malformed line and documentation flag behavior.

Before output

  • Running `yarn build --locale en` in `/home/user/repo/website` exited 1 with Docusaurus's parse error at `docusaurus.config.ts:56:5`, proving the text is code rather than a comment.

After output

  • The same `yarn build --locale en` command in an isolated corrected copy exited 0 and generated static files, proving syntactically commented guidance restores the build path.

View artifacts

T-Rex Ran code and verified through T-Rex

// and all returned 404 -- 144 dead URLs, found by a crawl of docs.ever.co on 2026-08-30.
//
// Translation sources for all thirteen exist under docs/i18n, so nothing is lost here. To turn one
// back on it must be BOTH listed below AND built: drop the flag in
// Dockerfile.everk8s (which builds every declared locale) or pass that locale explicitly. Adding a
// locale here alone just recreates the 404s.
i18n: {
path: "./docs/i18n/",
defaultLocale: "en",
locales: [
"en",
"fr",
"ar",
"bg",
"zh",
"nl",
"de",
"he",
"it",
"pl",
"pt",
"ru",
"es",
],
locales: ["en"],
// Ready to re-enable once they are built:
// "fr", "ar", "bg", "zh", "nl", "de", "he", "it", "pl", "pt", "ru", "es"
},

presets: [
Expand Down
31 changes: 31 additions & 0 deletions website/nginx-default.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Static server for the built Docusaurus site.
#
# This is the stock nginx:alpine default.conf plus one line: absolute_redirect off.
#
# nginx defaults to absolute_redirect on, so when it issues the trailing-slash redirect for a
# directory it rebuilds a full URL from the Host header and its own listen port. It has no idea TLS
# was terminated upstream by Cloudflare, so it answers with http://. That turned every directory URL
# on docs.ever.co into a three-hop chain with a protocol downgrade in the middle:
#
# https://docs.ever.co/help -> 301 http://docs.ever.co/help/ (nginx, downgraded)
# http://docs.ever.co/help/ -> 301 https://docs.ever.co/help/ (Cloudflare, back up)
#
# Search engines treat redirect chains as a ranking negative and the http hop is a real downgrade.
# With absolute_redirect off nginx emits a relative `Location: /help/`, and the client keeps
# whatever scheme it arrived on -- one hop, no downgrade, no dependence on knowing the public scheme.
server {
listen 80;
server_name localhost;

absolute_redirect off;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Loading