این پروژه یک دسکتاپ XFCE را با image رسمی Webtop در یک کانتینر Railway اجرا میکند. دسترسی گرافیکی از طریق TigerVNC/noVNC و دامنه HTTPS انجام میشود؛ بنابراین Firefox داخل کانتینر اجرا میشود، نه روی رایانه محلی. دادههای کاربر در Volume مسیر /config نگهداری میشوند.
Dockerfile از Ubuntu 22.04 + XFCE + TigerVNC + noVNC ساخته میشود. اسکریپت init، پوشههای کاربر و launcher Firefox را آماده میکند و XFCE آن را هنگام ورود اجرا میکند. سرویس داخلی Webtop تنها از طریق HTTPS و دامنه عمومی Railway در دسترس است و رابط مرورگر noVNC روی پورت داخلی 6080 منتشر میشود.
- حساب GitHub برای نگهداری repository
- حساب Railway برای build و deploy
یک repository با نام دلخواه در GitHub بسازید و فایلهای این پروژه را با همین ساختار در آن قرار دهید، سپس commit و push کنید:
git init
git add .
git commit -m "Add Railway remote Linux desktop"
git branch -M main
git remote add origin https://github.com/USERNAME/REPOSITORY.git
git push -u origin main- در Railway گزینه New Project و سپس Deploy from GitHub Repo را انتخاب کنید.
- repository را انتخاب کنید و اجازه دسترسی GitHub را در صورت درخواست بدهید.
- Railway بهصورت خودکار Dockerfile و
railway.tomlرا شناسایی میکند؛ منتظر پایان build و deploy بمانید. - در سرویس ساختهشده، از بخش Variables مقادیر زیر را اضافه کنید:
| Variable | مقدار نمونه | کاربرد |
|---|---|---|
CUSTOM_USER |
desktop |
نام کاربری ورود |
PASSWORD |
رمز قوی و یکتا | رمز ورود به دسکتاپ |
TZ |
Asia/Tehran |
منطقه زمانی |
TITLE |
Remote Linux Desktop |
عنوان نمایشدادهشده |
رمز واقعی را فقط در Variables وارد کنید؛ آن را در GitHub، Dockerfile یا railway.toml ننویسید.
- از بخش Volumes یک Volume بسازید و Mount Path را دقیقاً
/configقرار دهید. - از بخش Networking گزینه Generate Domain را بزنید.
- دامنه HTTPS را در مرورگر باز کنید و با
CUSTOM_USERوPASSWORDوارد شوید.
بعد از هر git push، Railway باید بهطور خودکار deploy جدید را آغاز کند.
- رمز طولانی، تصادفی و یکتا استفاده کنید.
- دامنه را عمومی منتشر نکنید و دسترسی آن را محدود نگه دارید.
- رمز را در GitHub، logها یا فایلهای پروژه قرار ندهید.
- برای کار روزمره از حساب root در محیط گرافیکی استفاده نکنید؛ Webtop با کاربر پیشفرض image کار میکند.
- اطلاعات حساس را روی سرویس ابری نگهداری نکنید مگر اینکه ریسک و سیاست نگهداری Railway را پذیرفته باشید.
لاگ build را بازبینی کنید، نام image و دسترسی repository را بررسی کنید و دوباره deploy کنید. اگر خطا از mirror یا apt بود، یک redeploy مجدد انجام دهید؛ image پایه باید در دسترس باشد.
Dockerfile پکیج firefox-esr را نصب میکند. اگر repository اوبونتو آن را ارائه نکند، اسکریپت بهصورت امن از firefox موجود در image استفاده میکند و اگر هیچکدام موجود نباشند، فقط هشدار میدهد.
نبودن Volume باعث میشود /config با redeploy یا جایگزینی کانتینر از بین برود. Volume را با Mount Path دقیق /config اضافه و متصل کنید.
از موفق بودن deploy، آماده بودن service و وجود Public Domain در Networking مطمئن شوید. دامنه را با https:// باز کنید و پورت VNC خام اضافه نکنید.
تبهای Firefox و برنامههای سنگین را ببندید، مصرف را در Metrics بررسی کنید و در صورت نیاز plan مناسبتری انتخاب کنید. Railway برای workload دسکتاپ سنگین مانند VPS سنتی طراحی نشده است.
Railway VPS سنتی نیست؛ کانتینر ممکن است در redeploy جایگزین شود. Volume برای حفظ تنظیمات و دادهها ضروری است.
- ساخت GitHub repository
- افزودن فایلها و push
- اتصال repository به Railway
- تنظیم Variables
- افزودن Volume روی
/config - Generate Domain
- ورود به دسکتاپ با نام کاربری و رمز