Skip to content

docs(readme): add one-click Railway self-host option - #1155

Open
dillonstreator wants to merge 2 commits into
getmaxun:developfrom
dillonstreator:docs/railway-one-click-deploy
Open

docs(readme): add one-click Railway self-host option#1155
dillonstreator wants to merge 2 commits into
getmaxun:developfrom
dillonstreator:docs/railway-one-click-deploy

Conversation

@dillonstreator

@dillonstreator dillonstreator commented Jul 25, 2026

Copy link
Copy Markdown

Summary

Adds a one-click Deploy on Railway path to the README so users can self-host Maxun without wiring Docker Compose by hand.

  • New One-Click Self Host (Railway) section under Quick Start with the official Railway deploy button
  • Points at the published marketplace template: https://railway.com/deploy/maxun
  • Notes that only the gateway public URL should be used (same-origin auth cookie)
  • Adds Railway as the first item under Upgrading & Self Hosting

Template stack: nginx gateway, frontend, backend, remote Chromium, PostgreSQL, and MinIO.

Test plan

  • Confirm the Deploy on Railway button renders in the README preview
  • Confirm https://railway.com/deploy/maxun opens the Maxun template deploy flow
  • Optional: smoke-deploy and open only the gateway URL to verify login/registration

Link the published Maxun Railway marketplace template so users can
deploy the multi-service stack (gateway, frontend, backend, browser,
Postgres, MinIO) in one click.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

README.md adds one-click Railway self-hosting instructions, gateway URL guidance, optional AI key configuration, and a revised self-hosting upgrade sequence.

Changes

Railway self-hosting documentation

Layer / File(s) Summary
Railway deployment guidance
README.md
Adds a Railway deploy button, gateway URL instructions, optional AI key configuration, and makes Railway self-hosting the first upgrade option.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Poem

Iโ€™m a bunny by the railway line,
Deploying docs in one-click time.
The gateway leads the UI home,
AI keys make clever sprouts bloom.
Hop, hopโ€”self-hostingโ€™s now prime!

๐Ÿšฅ Pre-merge checks | โœ… 5
โœ… Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage โœ… Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check โœ… Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check โœ… Passed Check skipped because no linked issues were found for this pull request.
Description Check โœ… Passed Check skipped - CodeRabbitโ€™s high-level summary is enabled.
Title check โœ… Passed The title clearly matches the README documentation change adding a one-click Railway self-host option.
โœจ Finishing Touches
๐Ÿงช Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

โค๏ธ Share

Comment @coderabbitai help to get the list of available commands.

Template kickbacks are attributed via the published marketplace
template, not the affiliate referralCode, so use the cleaner URL.

Co-authored-by: Cursor <cursoragent@cursor.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

๐Ÿค– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Line 124: Update the Railway deployment badge in README.md to either reference
a Railway template owned and maintained by the Maxun project or clearly label
the existing external template as community-authored before presenting it as a
self-hosted recommendation.
๐Ÿช„ Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

โ„น๏ธ Review info
โš™๏ธ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6a094b91-13c6-44ec-8dc7-54eee4755911

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between c0b315c and 2aa3cd3.

๐Ÿ“’ Files selected for processing (1)
  • README.md

Comment thread README.md Outdated

Deploy Maxun on Railway with a prewired multi-service stack (nginx gateway, frontend, backend, remote Chromium, PostgreSQL, and MinIO):

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/maxun?referralCode=ToZEjF&utm_medium=integration&utm_source=button&utm_campaign=maxun)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐Ÿ”’ Security & Privacy | ๐ŸŸ  Major | ๐Ÿ—๏ธ Heavy lift

๐Ÿงฉ Analysis chain

๐Ÿ Script executed:

#!/bin/bash
set -euo pipefail

echo "== README excerpt =="
if [ -f README.md ]; then
  sed -n '115,145p' README.md
else
  echo "README.md not found"
fi

echo
echo "== Search Railway references =="
rg -n "railway|Railway" README.md .github . 2>/dev/null | head -n 100 || true

echo
echo "== Git status/stat =="
git status --short
git diff --stat HEAD 2>/dev/null || true

Repository: getmaxun/maxun

Length of output: 2953


๐Ÿ Script executed:

#!/bin/bash
set -euo pipefail

echo "Resolving Railway page metadata via HTTP headers/body snippets =="
python3 - <<'PY'
import urllib.request

url = "https://railway.com/deploy/maxun"
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
with urllib.request.urlopen(req, timeout=20) as r:
    print("status", r.status)
    print("final-url", r.geturl())
    text = r.read(81920).decode("utf-8", "replace")
for needle in ["osbytes/template-maxun", "dillonstreator", "maxun", "Deploy on Railway", "template"]:
    count = text.lower().count(needle.lower())
    print(f"{needle}: {count}")
    for i,line in enumerate(text.splitlines(),1):
        if needle.lower() in line.lower():
            print(f"line {i}: {line.strip()[:240]}")
            if i > 5:
                print("(truncated)")
                break
PY

Repository: getmaxun/maxun

Length of output: 2812


๐Ÿ Script executed:

#!/bin/bash
set -euo pipefail

echo "Fetch Railway deploy page with trusted certs =="
python3 - <<'PY'
import urllib.request, ssl, sys
url = "https://railway.com/deploy/maxun"
try_certs = [True, False]
for verify in try_certs:
    ctx = ssl.create_default_context() if verify else ssl._create_unverified_context()
    try:
        with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), context=ctx, timeout=20) as r:
            print("status", r.status, "url", r.geturl())
            text = r.read(120000).decode("utf-8", "replace", errors="replace")
            for needle in ["osbytes/template-maxun", "dillonstreator", "maxun", "Deploy on Railway"]:
                found = [i+1 for i,line in enumerate(text.splitlines(),1) if needle.lower() in line.lower()][:12]
                print(f"{needle}: hit lines {found}")
            print("snippet relevant:")
            for i,line in enumerate(text.splitlines(),1):
                if any(s in line.lower() for s in ["github", "template", "deploy", "railway", "osbytes", "dillonstreator"]):
                    print(f"{i}: {line[:300]}")
    except Exception as e:
        print("verify=" if verify else "no-verify=", type(e).__name__, str(e))
PY

echo
echo "Alternative cURL probe =="
URL="https://railway.com/deploy/maxun"
set +e
status=$(curl -Is --max-time 20 "$URL" | head -n 1 | awk '{print $2}')
printf "curl_status=%s\n" "$status"
[ -n "$status" ] || exit 0
curl -L -s --max-time 20 "$URL" | python3 - <<'PY'
import sys
text=sys.stdin.read()
for needle in ["osbytes/template-maxun", "dillonstreator", "maxun", "Deploy on Railway"]:
    hits=[i+1 for i,line in enumerate(text.splitlines(),1) if needle.lower() in line.lower()][:16]
    print(f"{needle}: {hits}")
PY

Repository: getmaxun/maxun

Length of output: 588


๐Ÿ Script executed:

#!/bin/bash
set -euo pipefail

echo "Fetch Railway deploy page body via curl with headers =="
curl -L -s --max-time 30 -D - https://railway.com/deploy/maxun \
  -H "User-Agent: Mozilla/5.0" -H "Accept: text/html,*/*" > /tmp/railway_deploy_maxun.html

echo "== response excerpt =="
sed -n '1,120p' /tmp/railway_deploy_maxun.html

echo "== relevant line searches =="
python3 - <<'PY'
from pathlib import Path
path = Path("/tmp/railway_deploy_maxun.html")
text = path.read_bytes().decode("utf-8", errors="replace")
needles = ["osbytes", "dillonstreator", "template", "maxun", "git", "railway.com/deploy/maxun", "github"]
for needle in needles:
    hits=[]
    for i,line in enumerate(text.splitlines(), 1):
        if needle in line:
            hits.append(i)
    print(f"{needle}: {hits[:10]}")
PY

Repository: getmaxun/maxun

Length of output: 11556


Verify the Railway templateโ€™s source and authorization before presenting it as the recommended self-hosted path.

The Railway deploy page references osbytes/template-maxun and dillonstreator in its metadata, while this README presents it under getmaxun/maxun. Because this path provisions services and stores application secrets, either link to a template owned/maintained under the Maxun project or explicitly label it as a community-authored deployment template.

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 124, Update the Railway deployment badge in README.md to
either reference a Railway template owned and maintained by the Maxun project or
clearly label the existing external template as community-authored before
presenting it as a self-hosted recommendation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant