راه‌اندازی Windows و WSL

Meridian از یک ترمینال شبیه Unix اجرا می‌شود. در Windows از Windows Subsystem for Linux (WSL) استفاده کنید و Meridian را داخل محیط Linux اجرا کنید.

PowerShell، Command Prompt، Git Bash و Cygwin بومی مسیر پیشنهادی برای Meridian نیستند. WSL همان رفتار shell، SSH و filesystem را مثل Linux به شما می‌دهد و با بقیه مستندات هماهنگ است.

نصب WSL

PowerShell را به صورت Administrator باز کنید و WSL را نصب کنید:

wsl --install

اگر درخواست شد سیستم را restart کنید، سپس توزیع Linux نصب‌شده را از Start menu باز کنید.

Ubuntu امن‌ترین پیش‌فرض است، چون Meridian سرورهای Debian و Ubuntu را هدف می‌گیرد و بیشتر مثال‌ها از نام پکیج‌های apt استفاده می‌کنند. اگر Debian را از قبل در WSL نصب کرده‌اید، آن هم کار می‌کند.

بررسی کنید که WSL از نسخه 2 استفاده می‌کند:

wsl --list --verbose

اگر توزیع شما نسخه 1 را نشان می‌دهد، آن را تبدیل کنید:

wsl --set-version Ubuntu 2

آماده‌سازی shell در WSL

داخل ترمینال WSL، پکیج‌ها را به‌روز کنید و ابزارهای پایه را نصب کنید:

sudo apt update
sudo apt install -y curl openssh-client ca-certificates

Meridian را نصب کنید:

curl -sSf https://getmeridian.org/install.sh | bash

اگر meridian بلافاصله پیدا نشد، ترمینال WSL را restart کنید یا profile شل را دوباره بارگذاری کنید:

exec "$SHELL" -l

نصب را بررسی کنید:

meridian --version

تنظیم کلیدهای SSH

Meridian از WSL با SSH به VPS شما وصل می‌شود. کلید را داخل WSL بسازید:

ssh-keygen -t ed25519 -C "meridian-wsl"

کلید عمومی را کپی کنید:

cat ~/.ssh/id_ed25519.pub

این کلید عمومی را به پنل ارائه‌دهنده VPS یا به ~/.ssh/authorized_keys کاربر سرور اضافه کنید.

قبل از اجرای Meridian، SSH را تست کنید:

ssh root@198.51.100.10

اگر VPS شما از کاربر غیر root استفاده می‌کند، همان کاربر را تست کنید و آن را به deploy بدهید:

meridian deploy 198.51.100.10 --user ubuntu

استفاده از SSH agent

اگر کلید شما passphrase دارد، یک agent داخل WSL شروع کنید:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

این دستورها را فقط وقتی به ~/.profile یا ~/.bashrc اضافه کنید که tradeoff امنیتی آن را می‌فهمید. برای بیشتر استقرارهای اول، شروع دستی agent کافی است.

در شروع کار، SSH agentهای Windows و WSL را با هم مخلوط نکنید. تا وقتی deploy کار کند، کلید و agent را داخل WSL نگه دارید.

اجرای Meridian از WSL

فرایند عادی deploy را از ترمینال WSL اجرا کنید:

meridian deploy

یا IP سرور را مستقیم بدهید:

meridian deploy 198.51.100.10

Meridian اطلاعات ورود را زیر ~/.config/meridian/ داخل WSL ذخیره می‌کند. دستورهای بعدی را از همان توزیع WSL اجرا کنید تا بتواند اطلاعات ذخیره‌شده سرور را پیدا کند:

meridian client add alice
meridian client list
meridian test 198.51.100.10

VS Code Remote WSL

اگر از VS Code استفاده می‌کنید، افزونه “WSL” را نصب کنید و workspace مربوط به Meridian را از WSL باز کنید:

code .

فایل‌هایی که با Remote WSL ویرایش می‌شوند در filesystem لینوکس قرار دارند و این کار از مشکل path و permission جلوگیری می‌کند. مسیری زیر home در WSL مثل ~/projects را ترجیح دهید و state مربوط به Meridian یا کلیدهای SSH را از مسیر /mnt/c/ ویرایش نکنید.

مشکلات رایج

wizard انگار یک prompt را رد می‌کند

برخی promptهای تعاملی ترمینال می‌توانند زیر WSL متفاوت رفتار کنند. اگر wizard مربوط به deploy ورودی را طبق انتظار قبول نمی‌کند، مقدارها را صریح بدهید:

meridian deploy 198.51.100.10 --sni www.cloudflare.com

همچنین می‌توانید اول سرور را بررسی کنید:

meridian check 198.51.100.10

خطای Permission denied در SSH

مطمئن شوید کلید داخل WSL وجود دارد، نه فقط در Windows:

ls -la ~/.ssh
ssh -v root@198.51.100.10

کلید خصوصی باید فقط توسط کاربر WSL شما خواندنی باشد:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519

Meridian نصب شده اما command پیدا نمی‌شود

شل را دوباره بارگذاری کنید:

exec "$SHELL" -l

اگر هنوز پیدا نشد، مسیرهای رایج uv و binaryهای محلی را بررسی کنید:

ls ~/.local/bin

در صورت نیاز ~/.local/bin را به profile شل اضافه کنید:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
exec "$SHELL" -l

مسیرهای Windows مشکل permission ایجاد می‌کنند

کلیدهای SSH، اطلاعات Meridian و فایل‌های پروژه را در filesystem مربوط به WSL نگه دارید:

cd ~
mkdir -p projects

از نگهداری ~/.ssh یا ~/.config/meridian زیر /mnt/c/ خودداری کنید. مسیرهای mount شده از Windows می‌توانند permissionهای متفاوتی داشته باشند و SSH آن‌ها را رد کند.

قدم‌های بعدی

On this page