docs(readme): add one-click Railway self-host option - #1155
dillonstreator wants to merge 2 commits into
Conversation
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>
WalkthroughREADME.md adds one-click Railway self-hosting instructions, gateway URL guidance, optional AI key configuration, and a revised self-hosting upgrade sequence. ChangesRailway self-hosting documentation
Estimated code review effort: 1 (Trivial) | ~3 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
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>
There was a problem hiding this comment.
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
|
|
||
| Deploy Maxun on Railway with a prewired multi-service stack (nginx gateway, frontend, backend, remote Chromium, PostgreSQL, and MinIO): | ||
|
|
||
| [](https://railway.com/deploy/maxun?referralCode=ToZEjF&utm_medium=integration&utm_source=button&utm_campaign=maxun) |
There was a problem hiding this comment.
🔒 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 || trueRepository: 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
PYRepository: 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}")
PYRepository: 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]}")
PYRepository: 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.
Summary
Adds a one-click Deploy on Railway path to the README so users can self-host Maxun without wiring Docker Compose by hand.
Template stack: nginx gateway, frontend, backend, remote Chromium, PostgreSQL, and MinIO.
Test plan