diff --git a/content/docs/configuration/marznehsin.fa.md b/content/docs/configuration/marznehsin.fa.md new file mode 100644 index 0000000..cfd6d0d --- /dev/null +++ b/content/docs/configuration/marznehsin.fa.md @@ -0,0 +1,98 @@ +--- + +title: Marzneshin +weight: 1 + +--- + +> می‌توانید تنظیمات زیر را با استفاده از متغیرهای محیطی یا قرار دادن آن‌ها در فایل `.env` پیکربندی کنید. + +## تنظیمات پایه + +| متغیر | توضیحات | +| ----------------------------- | ------------------------------------------------------------------------------------------------------ | +| UVICORN_HOST | اتصال برنامه به این هاست (پیش‌فرض: `0.0.0.0`) | +| UVICORN_PORT | اتصال برنامه به این پورت (پیش‌فرض: `8000`) | +| UVICORN_UDS | اتصال برنامه به یک دامنه سوکت UNIX | +| UVICORN_SSL_CERTFILE | فایل گواهی SSL برای اجرای برنامه بر روی https | +| UVICORN_SSL_KEYFILE | فایل کلید SSL برای اجرای برنامه بر روی https | +| SQLALCHEMY_DATABASE_URL | آدرس URL پایگاه داده ([مستندات SQLAlchemy](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls)) | +| JWT_ACCESS_TOKEN_EXPIRE_MINUTES| زمان انقضای توکن‌های دسترسی به دقیقه (۰ به معنای بی‌نهایت) (پیش‌فرض: `1440`) | +| AUTH_GENERATION_ALGORITHM | الگوریتم رمزنگاری رمز عبور احراز هویت (پیش‌فرض: "xxh128"، گزینه‌ها: "xxh128"، "plain") | +| REVERSIBLE_KEY | پشتیبانی از کلید قابل برگشت (پیش‌فرض: False، گزینه‌ها: "False"، "True") | + +## سفارشی‌سازی اشتراک و VPN + +| متغیر | توضیحات | +| ---------------------------| --------------------------------------------------------------------------------------- | +| CUSTOM_TEMPLATES_DIRECTORY | دایرکتوری قالب‌های سفارشی (پیش‌فرض: `app/templates`) | +| CLASH_SUBSCRIPTION_TEMPLATE | قالب مورد استفاده برای تولید تنظیمات Clash (پیش‌فرض: `clash/default.yml`) | +| SUBSCRIPTION_PAGE_TEMPLATE | قالب مورد استفاده برای تولید صفحه اطلاعات اشتراک (پیش‌فرض: `subscription/index.html`) | +| SUBSCRIPTION_URL_PREFIX | پیشوند URL‌های اشتراک | +| HOME_PAGE_TEMPLATE | قالب صفحه نمایشی تقلبی (پیش‌فرض: `home/index.html`) | + +## تنظیمات تلگرام + +| متغیر | توضیحات | +| ------------------- | -------------------------------------------------------------------------------------------------- | +| TELEGRAM_API_TOKEN | توکن API ربات تلگرام (توکن را از [@botfather](https://t.me/botfather) دریافت کنید) | +| TELEGRAM_ADMIN_ID | شناسه عددی تلگرام ادمین (برای پیدا کردن شناسه خود از [@userinfobot](https://t.me/userinfobot) استفاده کنید) | +| TELEGRAM_PROXY_URL | اجرای ربات تلگرام از طریق پروکسی | + +## اعلان و وب‌هوک + +| متغیر | توضیحات | +| ---------------------------------| ---------------------------------------------------------------------------------------------------- | +| WEBHOOK_ADDRESS | آدرس وب‌هوک برای ارسال اعلان‌ها. اعلان‌های وب‌هوک اگر این مقدار تنظیم شود، ارسال خواهند شد. | +| WEBHOOK_SECRET | راز وب‌هوک که با هر درخواست به‌عنوان `x-webhook-secret` در هدر ارسال می‌شود (پیش‌فرض: `None`) | +| NUMBER_OF_RECURRENT_NOTIFICATIONS | تعداد تکرار اعلان‌ها در صورت بروز خطا در ارسال (پیش‌فرض: `3`) | +| RECURRENT_NOTIFICATIONS_TIMEOUT | زمان انتظار بین هر تلاش مجدد در صورت بروز خطا در ارسال اعلان‌ها به ثانیه (پیش‌فرض: `180`) | +| NOTIFY_REACHED_USAGE_PERCENT | درصد استفاده‌ای که در آن اعلان هشدار ارسال شود (پیش‌فرض: `80`) | +| NOTIFY_DAYS_LEFT | زمان ارسال اعلان هشدار در مورد انقضا به تعداد روزهای باقیمانده (پیش‌فرض: `3`) | + +## توسعه و مستندات + +| متغیر | توضیحات | +| ------ | ----------------------------------------------------------------------------------------- | +| DOCS | آیا مستندات API در دسترس باشد یا خیر (پیش‌فرض: `False`) | +| DEBUG | حالت دیباگ برای توسعه (پیش‌فرض: `False`) | + +## نمونه فایل .env + +```sh +SQLALCHEMY_DATABASE_URL= +UVICORN_HOST= +UVICORN_PORT= +UVICORN_UDS= +UVICORN_SSL_CERTFILE= +UVICORN_SSL_KEYFILE= +SUBSCRIPTION_URL_PREFIX= +CUSTOM_TEMPLATES_DIRECTORY= +CLASH_SUBSCRIPTION_TEMPLATE= +SUBSCRIPTION_PAGE_TEMPLATE= +HOME_PAGE_TEMPLATE= +TELEGRAM_API_TOKEN= +TELEGRAM_ADMIN_ID= +TELEGRAM_PROXY_URL= +JWT_ACCESS_TOKEN_EXPIRE_MINUTES= +AUTH_GENERATION_ALGORITHM="xxh128" +REVERSIBLE_KEY="False" +DOCS=true +DEBUG=true +WEBHOOK_ADDRESS="http://localhost:9000" +WEBHOOK_SECRET="dont-tell-anybody" +NUMBER_OF_RECURRENT_NOTIFICATIONS= +RECURRENT_NOTIFICATIONS_TIMEOUT= +NOTIFY_REACHED_USAGE_PERCENT= +NOTIFY_DAYS_LEFT= +``` + +## کنترل متغیرهای Marzneshin از طریق خط فرمان + +| متغیر | توضیحات | +| ---------------------| -------------------------------------| +| marzneshin update | می‌توانید Marzneshin را به‌راحتی به‌روزرسانی کنید. | +| marzneshin stop | می‌توانید Marzneshin را متوقف کنید. | +| marzneshin start | می‌توانید Marzneshin را شروع کنید. | + +--- diff --git a/content/docs/configuration/marzneshin.md b/content/docs/configuration/marzneshin.md index ae1b93a..7b9dd0c 100644 --- a/content/docs/configuration/marzneshin.md +++ b/content/docs/configuration/marzneshin.md @@ -84,3 +84,10 @@ RECURRENT_NOTIFICATIONS_TIMEOUT= NOTIFY_REACHED_USAGE_PERCENT= NOTIFY_DAYS_LEFT= ``` +## Marzneshin Control variables via shell + +| Variable | Description | +| -------- | ------------------------------------------------------------------------------------------- | +| marzneshin update | you can update Marzneshin easily with | +| marzneshin stop | you can stop Marzneshin | +| marzneshin start | you can start Marzneshin | diff --git a/content/docs/configuration/marznode.fa.md b/content/docs/configuration/marznode.fa.md new file mode 100644 index 0000000..978166b --- /dev/null +++ b/content/docs/configuration/marznode.fa.md @@ -0,0 +1,93 @@ +--- + +title: Marznode +weight: 2 + +--- + +### روش نصب آسان: + +1. نصب داکر و پول کردن ایمیج مرزنود با این دستور: + +```bash +apt-get update -y && apt-get upgrade -y && curl -fsSL https://get.docker.com | sh && git clone https://github.com/khodedawsh/marznode && cd marznode && docker compose up -d +``` + +2. کپی کردن گواهی مرزنود از تنظیمات در پنل مرزنشین و قرار دادن آن در این فایل: + +```bash +nano /var/lib/marznode/client.pem +``` + +3. دانلود هسته Xray در این دایرکتوری: + *فایلی که در حال حاضر دانلود می‌کنیم آخرین نسخه هسته Xray است. اگر می‌خواهید، می‌توانید هر نسخه دیگری را با تغییر شماره نسخه در دستور دانلود کنید!* + +```bash +cd && mkdir -p /var/lib/marznode/data && cd /var/lib/marznode/data +``` + +```bash +wget https://github.com/XTLS/Xray-core/releases/download/v24.9.30/Xray-linux-64.zip && unzip Xray-linux-64.zip && rm Xray-linux-64.zip +``` + +4. انتقال فایل `xray_config.json` به دایرکتوری مرزنود : + +```bash +cp /root/marznode/xray_config.json /var/lib/marznode/xray_config.json +``` + +5. انتقال فایل‌های Xray به دایرکتوری مرزنود : + +```bash +cp /var/lib/marznode/data/xray /var/lib/marznode/xray +``` + +6. ویرایش فایل کامپوز : + +```bash +cd && cd marznode +``` + +```bash +rm -rf compose.yml && nano compose.yml +``` + +7. این کد را در فایل `compose.yml` خود کپی و جای‌گذاری کنید و سپس ذخیره کنید: + +```yaml +services: + marznode: + image: dawsh/marznode:latest + restart: always + network_mode: host + + environment: + SERVICE_PORT: "5566" + XRAY_EXECUTABLE_PATH: "/var/lib/marznode/xray" + XRAY_ASSETS_PATH: "/var/lib/marznode/data" + XRAY_CONFIG_PATH: "/var/lib/marznode/xray_config.json" + SSL_CLIENT_CERT_FILE: "/var/lib/marznode/client.pem" + SSL_KEY_FILE: "./server.key" + SSL_CERT_FILE: "./server.cert" + + volumes: + - /var/lib/marznode:/var/lib/marznode +``` + +8. اکنون، فقط سرویس داکر را متوقف کرده و دوباره شروع کنید: + +```bash +docker compose down --remove-orphans; docker compose up -d +``` + +9. حالا به پنل مرزنشین بروید، سپس به بخش نود ها بروید. یک نود جدید ایجاد کنید، ایپی و پورت نود `5566` را اضافه کنید و ذخیره کنید. تمام! + +**نکته:** شما باید ایپی نود خود را در سرور اصلی به لیست سفید اضافه کنید، ایپی سرور اصلی را در نود خود سفید کنید و همچنین پورت API و پورت‌هایی که برای پیکربندی در `xray_core.json` نیاز دارید را باز کنید: + +```bash +ufw allow 5566 +``` + +برای اطلاعات بیشتر در مورد تغییر و اصلاح تنظیمات هسته Xray، می‌توانید به بخش نود در پنل مرزنشین مراجعه کنید. + +--- diff --git a/content/docs/configuration/marznode.md b/content/docs/configuration/marznode.md index 2d3a5f5..a24568e 100644 --- a/content/docs/configuration/marznode.md +++ b/content/docs/configuration/marznode.md @@ -1,4 +1,93 @@ --- -title: Marznode + +title: Marznode weight: 2 + +--- + +### Easy Installation Method: + +1. Installing Docker and pulling Marznode with this command: + +```bash +apt-get update -y && apt-get upgrade -y && curl -fsSL https://get.docker.com | sh && git clone https://github.com/marzneshin/marznode && cd marznode && docker compose up -d +``` + +2. Copy the Marznode certificate from settings in the Marzneshin panel and paste it into this file: + +```bash +nano /var/lib/marznode/client.pem +``` + +3. Downloading the Xray core in this directory: + *Files we are downloading now are the latest version of Xray Core. If you want, you can download any version you desire by just putting the version number in the command!* + +```bash +cd && mkdir -p /var/lib/marznode/data && cd /var/lib/marznode/data +``` + +```bash +wget https://github.com/XTLS/Xray-core/releases/download/v24.9.30/Xray-linux-64.zip && unzip Xray-linux-64.zip && rm Xray-linux-64.zip +``` + +4. Moving `xray_config.json` file to the Marznode directory: + +```bash +cp /root/marznode/xray_config.json /var/lib/marznode/xray_config.json +``` + +5. Moving Xray files to the Marznode directory: + +```bash +cp /var/lib/marznode/data/xray /var/lib/marznode/xray +``` + +6. Editing the Compose file: + +```bash +cd && cd marznode +``` + +```bash +rm -rf compose.yml && nano compose.yml +``` + +7. Copy and paste this code into your `compose.yml` file and save it: + +```yaml +services: + marznode: + image: dawsh/marznode:latest + restart: always + network_mode: host + + environment: + SERVICE_PORT: "5566" + XRAY_EXECUTABLE_PATH: "/var/lib/marznode/xray" + XRAY_ASSETS_PATH: "/var/lib/marznode/data" + XRAY_CONFIG_PATH: "/var/lib/marznode/xray_config.json" + SSL_CLIENT_CERT_FILE: "/var/lib/marznode/client.pem" + SSL_KEY_FILE: "./server.key" + SSL_CERT_FILE: "./server.cert" + + volumes: + - /var/lib/marznode:/var/lib/marznode +``` + +8. Now, just stop the Docker service and start it again: + +```bash +docker compose down --remove-orphans; docker compose up -d +``` + +9. Now, go to the Marzneshin panel, then go to the Node section. Create a new node, add the node's IP and port `5566`, and save it. Done! + +**Note:** You have to whitelist your node's IP in the master server, whitelist the master IP in your node, and also open the port of the API as well as the ports that you need for configuration inside `xray_core.json`: + +```bash +ufw allow 5566 +``` + +For more information on changing and modifying Xray Core settings, you can go to the Node section in the Marzneshin panel. + --- diff --git a/content/docs/configuration/vpn-backends/hysteria.fa.md b/content/docs/configuration/vpn-backends/hysteria.fa.md new file mode 100644 index 0000000..0ec5c1d --- /dev/null +++ b/content/docs/configuration/vpn-backends/hysteria.fa.md @@ -0,0 +1,94 @@ +--- + +title: هیستریا ۲ +weight: 2 + +--- + +در این آموزش، ما پیکربندی‌های اولیه هسته هیستریا ۲ را انجام می‌دهیم و آن را به سرویس‌های اشتراک کاربران اضافه می‌کنیم. + +برای اضافه کردن هیستریا ۲ در مرزنود : + +1. یک گواهی با استفاده از این دستورات بسازید: + +```bash +cd /var/lib/marznode/ +``` + +```bash +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=CommonNameOrHostname" +``` + +2. به دایرکتوری پیش‌فرض مرزنود برگردید: + +```bash +cd && cd marznode +``` + +3. فایل `compose.yml` را ویرایش کنید: + +```bash +nano compose.yml +``` + +4. متغیرهای هیستریا را به فایل `compose.yml` اضافه کنید: + +```yaml + HYSTERIA_EXECUTABLE_PATH: "/usr/local/bin/hysteria" + HYSTERIA_CONFIG_PATH: "./hysteria.yaml" + HYSTERIA_ENABLED: "True" +``` + +فایل docker-compose باید به این شکل باشد: + +```yaml +services: + marznode: + image: dawsh/marznode:latest + restart: always + network_mode: host + + environment: + SERVICE_PORT: "5566" + XRAY_EXECUTABLE_PATH: "/var/lib/marznode/xray" + XRAY_ASSETS_PATH: "/var/lib/marznode/data" + XRAY_CONFIG_PATH: "/var/lib/marznode/xray_config.json" + SSL_CLIENT_CERT_FILE: "/var/lib/marznode/client.pem" + SSL_KEY_FILE: "./server.key" + SSL_CERT_FILE: "./server.cert" + HYSTERIA_EXECUTABLE_PATH: "/usr/local/bin/hysteria" + HYSTERIA_CONFIG_PATH: "./hysteria.yaml" + HYSTERIA_ENABLED: "True" + + volumes: + - /var/lib/marznode:/var/lib/marznode +``` + +سپس فایل‌ها را ذخیره کنید و `compose.yml` را مجدداً راه‌اندازی کنید: + +```bash +docker compose down --remove-orphans; docker compose up -d +``` + +اکنون به بخش نود ها در پنل مرزنیشین بروید، بخش Hysteria را باز کنید و این پیکربندی‌ها را اضافه کنید: + +```yaml +listen: :4443 +tls: + cert: /var/lib/marznode/cert.pem + key: /var/lib/marznode/key.pem +auth: + type: command + command: echo +masquerade: + type: proxy + proxy: + url: https://news.ycombinator.com/ + rewriteHost: true +``` + +*به یاد داشته باشید: در تنظیمات هاست باید اجازه ارتباطات ناامن را بدهید (زیرا شما برای این هسته هیستریا ۲ یک گواهی TLS خود میزبان ساخته‌اید). برای افزودن پیکربندی‌های بیشتر، می‌توانید به آموزش‌های پیکربندی هیستریا در: [https://v2.hysteria.network/docs/getting-started/Server/](https://v2.hysteria.network/docs/getting-started/Server/) مراجعه کنید. + +پس از ذخیره کردن هسته، کار تمام است. برای اضافه کردن این تنظیمات ساده هیستریا ۲ به URL اشتراک کاربران، به بخش سرویس ها در پنل مرزنشین بروید و در سرویس‌هایی که می‌خواهید اضافه کنید، بر روی ورودی که ساخته‌اید کلیک کنید! + +--- diff --git a/content/docs/configuration/vpn-backends/hysteria.md b/content/docs/configuration/vpn-backends/hysteria.md index e69de29..94f3719 100644 --- a/content/docs/configuration/vpn-backends/hysteria.md +++ b/content/docs/configuration/vpn-backends/hysteria.md @@ -0,0 +1,95 @@ + +--- + +title: Hysteria 2 +weight: 2 + +--- + +In this tutorial, we will make basic Hysteria 2 core configurations and add it to the user subscription services. + +For adding Hysteria 2 in Marznode: + +1. Make a certificate using these commands: + +```bash +cd /var/lib/marznode/ +``` + +```bash +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=CommonNameOrHostname" +``` + +2. Go back to the Marznode default directory: + +```bash +cd && cd marznode +``` + +3. Edit the `compose.yml` file: + +```bash +nano compose.yml +``` + +4. Add Hysteria variables in `compose.yml`: + +```yaml + HYSTERIA_EXECUTABLE_PATH: "/usr/local/bin/hysteria" + HYSTERIA_CONFIG_PATH: "./hysteria.yaml" + HYSTERIA_ENABLED: "True" +``` + +The docker compose should look like this: + +```yaml +services: + marznode: + image: dawsh/marznode:latest + restart: always + network_mode: host + + environment: + SERVICE_PORT: "5566" + XRAY_EXECUTABLE_PATH: "/var/lib/marznode/xray" + XRAY_ASSETS_PATH: "/var/lib/marznode/data" + XRAY_CONFIG_PATH: "/var/lib/marznode/xray_config.json" + SSL_CLIENT_CERT_FILE: "/var/lib/marznode/client.pem" + SSL_KEY_FILE: "./server.key" + SSL_CERT_FILE: "./server.cert" + HYSTERIA_EXECUTABLE_PATH: "/usr/local/bin/hysteria" + HYSTERIA_CONFIG_PATH: "./hysteria.yaml" + HYSTERIA_ENABLED: "True" + + volumes: + - /var/lib/marznode:/var/lib/marznode +``` + +Then save the files and restart `compose.yml`: + +```bash +docker compose down --remove-orphans; docker compose up -d +``` + +Now, go to the Node section in the Marzban panel, open the Hysteria section, and add these configurations: + +```yaml +listen: :4443 +tls: + cert: /var/lib/marznode/cert.pem + key: /var/lib/marznode/key.pem +auth: + type: command + command: echo +masquerade: + type: proxy + proxy: + url: https://news.ycombinator.com/ + rewriteHost: true +``` + +*Keep in mind: In the host settings, you must allow insecure connections (because you made a self-hosted TLS certificate for this Hysteria 2 core). For more configuration add-ons, you can visit the Hysteria configuration tutorials at: [https://v2.hysteria.network/docs/getting-started/Server/](https://v2.hysteria.network/docs/getting-started/Server/). + +After saving the core, you're done. To add this simple Hysteria 2 setup to your user subscription URL, go to the Services section in the Marzban panel, and then in the services you want to add, just click the inbound you just made! + +--- diff --git a/content/docs/contribution-guideline/api.fa.md b/content/docs/contribution-guideline/api.fa.md new file mode 100644 index 0000000..4c339d7 --- /dev/null +++ b/content/docs/contribution-guideline/api.fa.md @@ -0,0 +1,7 @@ +--- + +عنوان: "API" + +--- + +مرزنشین یک API REST ارائه می‌دهد که به توسعه‌دهندگان این امکان را می‌دهد که به صورت برنامه‌نویسی با خدمات مرزشین تعامل داشته باشند. برای مشاهده مستندات API در Swagger UI یا ReDoc، متغیر پیکربندی `DOCS=True` را تنظیم کرده و به آدرس‌های `/docs` و `/redoc` بروید. diff --git a/content/docs/contribution-guideline/codebase.fa.md b/content/docs/contribution-guideline/codebase.fa.md new file mode 100644 index 0000000..7ee6ef6 --- /dev/null +++ b/content/docs/contribution-guideline/codebase.fa.md @@ -0,0 +1,135 @@ +--- + +عنوان: ساختار کد +next: پشتیبانی +prev: docs/developer-guide +toc: true +weight: 1 + +--- + +## ساختار پروژه + +برای نمایش ساختار پروژه با استفاده از یادداشت `filetree`، کد به شکل زیر خواهد بود: + +{{< filetree/container >}} +{{< filetree/folder name="marzneshin" state="open">}} +{{< filetree/folder name="app" >}} +کد بک‌اند +{{< /filetree/folder >}} +{{< filetree/folder name="dashboard" >}} +کد فرانت‌اند +{{< /filetree/folder >}} +{{< filetree/folder name="cli" >}} +کد CLI +{{< /filetree/folder >}} +{{< /filetree/folder >}} +{{< /filetree/container >}} + +| نام پوشه | توضیحات | +| ----------- | ------------------------------------- | +| `app` | کد بک‌اند (FastAPI - پایتون) | +| `dashboard` | کد فرانت‌اند (React - Typescript) | +| `cli` | کد خط فرمان (Typer - پایتون) | + +## بک‌اند + +بک‌اند با استفاده از FastAPI توسعه داده شده و از SQLAlchemy به عنوان ORM برای عملیات‌های پایگاه داده استفاده می‌کند. مدل‌های Pydantic در پوشه `app/models` قرار دارند و تمامی عملیات‌های مرتبط با پایگاه داده و مدل‌ها در پوشه `app/db` قرار دارند. اسکریپت‌های مهاجرت پایگاه داده (Alembic) در پوشه `app/db/migrations` قرار دارند. + +### قالب‌بندی کد پایتون + +برای حفظ یکنواختی در کد، نیاز است که تمام کدها با استفاده از این دستور قالب‌بندی شوند: + +```bash +black . +``` + +## فرانت‌اند + +فرانت‌اند از یک ساختار توسعه مبتنی بر ویژگی استفاده می‌کند. ویژگی‌ها در اصل شامل اجزا، هوک‌ها، منطق‌ها و سرویس‌هایی هستند که تجربه کاربری را با قابلیت‌های دامنه و رابط کاربری ترکیب می‌کنند. + +{{< filetree/container >}} +{{< filetree/folder name="routes" >}} +منطق مسیریابی +{{< /filetree/folder >}} +{{< filetree/folder name="features" >}} +{{< filetree/folder name="users" >}} +ویژگی اصلی دامنه +{{< /filetree/folder >}} +{{< filetree/folder name="nodes" >}} +ویژگی اصلی دامنه +{{< /filetree/folder >}} +{{< filetree/folder name="hosts" >}} +ویژگی اصلی دامنه +{{< /filetree/folder >}} +{{< filetree/folder name="entity-table" >}} +ویژگی پشتیبانی +{{< /filetree/folder >}} +{{< filetree/folder name="github-repo" >}} +ویژگی پشتیبانی +{{< /filetree/folder >}} +{{< /filetree/folder >}} +{{< filetree/folder name="components" >}} +{{< filetree/folder name="ui" >}} +اجزای اتمی +{{< /filetree/folder >}} +{{< /filetree/folder >}} +{{< /filetree/container >}} + +| نام پوشه | توضیحات | +| ------------- | ------------------------------------ | +| `routes` | مسیریابی با @tanstack/react-router | +| `features` | پوشه ویژگی‌ها | +| `users` | ویژگی اصلی دامنه | +| `nodes` | ویژگی اصلی دامنه | +| `hosts` | ویژگی اصلی دامنه | +| `entity-table`| ویژگی پشتیبانی | +| `github-repo` | ویژگی پشتیبانی | +| `components` | اجزای عمومی | +| `ui` | اجزای اتمی | + +### ویژگی‌ها + +پوشه `features` شامل تمامی ویژگی‌ها است. ویژگی‌ها به دو دسته اصلی تقسیم می‌شوند: **ویژگی‌های اصلی دامنه** و **ویژگی‌های پشتیبانی**. ویژگی‌های اصلی دامنه مجموعه‌ای از راه‌حل‌ها را برای حل مشکلی که برنامه به آن پرداخته ارائه می‌دهند. در حالی که ویژگی‌های پشتیبانی مجموعه‌ای از راه‌حل‌هایی را ارائه می‌دهند که از مدل دامنه مستقل هستند، اما برای تجربه کاربری کامل ضروری هستند. + +### اجزای عمومی + +پوشه `components` شامل اجزای عمومی React است که توسط ویژگی‌ها مجدداً استفاده می‌شوند. همچنین همین منطق برای پوشه‌های `hooks` و `types` نیز صدق می‌کند. + +### اجزای اتمی + +پوشه `components/ui` شامل اجزای اتمی است که ستون فقرات برنامه را تشکیل می‌دهند. این اجزا بر اساس الگوی shadcn ساخته شده‌اند، هرچند که احتمالاً با گذشت زمان تغییرات زیادی در آن‌ها ایجاد شده است. + +### ابزارها + +این توابع عمومی هستند و در کل کد استفاده می‌شوند، هرچند که با پیچیده‌تر شدن و افزایش استفاده، به پوشه‌های خاص خود یا پوشه ویژگی‌ها منتقل خواهند شد. + +### مسیرها و صفحات + +پوشه `routes` شامل مسیریابی tanstack و صفحات مربوطه است. + +### دستورالعمل‌های ساخت + +برای ساخت فرانت‌اند به وابستگی‌های زیر نیاز دارید: + +- pnpm + +سپس با استفاده از دستور `make dashboard-deps && make dashboard build` فرانت‌اند را بسازید؛ یا برای توسعه از `make dashboard-dev` استفاده کنید. + +## Marzneshin CLI + +CLI مارزنشین با استفاده از [Typer](https://typer.tiangolo.com/) ساخته شده و کد دستورات آن در پوشه `cli` قرار دارد. مستندات CLI با استفاده از [Typer CLI](https://typer.tiangolo.com/typer-cli/) تولید می‌شود که می‌توانید آن را با اجرای دستور زیر از ریشه پروژه بازتولید کنید: + +```bash +$ PYTHONPATH=$(pwd) typer marzneshin-cli.py utils docs --name "marzneshin-cli" --output ./cli/README.md +``` + +### حالت توسعه + +برای اجرای فرانت‌اند در حالت توسعه از دستورات زیر برای نصب وابستگی‌ها استفاده کنید، سپس بک‌اند را اجرا کنید: + +```bash +make dashboard-deps && make dashboard-dev +``` + +سپس در یک کنسول دیگر `make start` را اجرا کنید. diff --git a/content/docs/contribution-guideline/donation_fa.md b/content/docs/contribution-guideline/donation_fa.md new file mode 100644 index 0000000..7c40533 --- /dev/null +++ b/content/docs/contribution-guideline/donation_fa.md @@ -0,0 +1,17 @@ +--- + +عنوان: "کمک مالی" + +--- + +## کمک مالی به مرزنشین + +اگر مرزنشین برای شما مفید بوده و مایلید توسعه آن را حمایت کنید، می‌توانید کمک مالی خود را از طریق یکی از شبکه‌های رمزنگاری زیر انجام دهید: + +- شبکه بیت‌کوین: `13ZDhE5KHGsfjM4A22eLTUgW98WpXhQTuF` +- شبکه TRON (TRC20): `TYxFCiRqJ3SiV6rAQAmJUd3DgVmJvEAfz4` +- شبکه TON: `EQB_VYiU73U1_wk-01I_MLg9-hx953VOf9Y36t2Z04WyUapD` + +بخشی از کمک‌های مالی به مشارکت‌ کنندگان اهدا می‌شود و بخش دیگر به همکاران. + +باشد که توسعه‌دهندگان ثروتمند شوند. diff --git a/content/docs/getting-started/_index.fa.md b/content/docs/getting-started/_index.fa.md new file mode 100644 index 0000000..a34513d --- /dev/null +++ b/content/docs/getting-started/_index.fa.md @@ -0,0 +1,9 @@ +--- +title: شروع به کار +type: docs +prev: docs/overview +next: docs/getting-started/basic-install +weight: 2 +sidebar: + open: true +--- diff --git a/content/docs/getting-started/advanced-install/_index.fa.md b/content/docs/getting-started/advanced-install/_index.fa.md new file mode 100644 index 0000000..f146c27 --- /dev/null +++ b/content/docs/getting-started/advanced-install/_index.fa.md @@ -0,0 +1,7 @@ +--- + +عنوان: "نصب پیشرفته | نصب بدون داکر" + +--- + +در صورت نصب ساده بدون داکر، شما باید مرزنشین را نصب کنید و حداقل یک نمونه از مرزنود (marznode) را راه‌اندازی کنید تا بتوانید کار خود را شروع کنید. diff --git a/content/docs/getting-started/advanced-install/marzneshin.fa.md b/content/docs/getting-started/advanced-install/marzneshin.fa.md new file mode 100644 index 0000000..72379fe --- /dev/null +++ b/content/docs/getting-started/advanced-install/marzneshin.fa.md @@ -0,0 +1,82 @@ +--- + +عنوان: "مرزنشین" + +--- + +اگر مایل هستید پروژه را با استفاده از کد منبع اجرا کنید، مراحل زیر را دنبال کنید. + +## نصب دستی (پیشرفته) + +{{% steps %}} + +### دریافت مرزنشین + +این پروژه را کلون کرده و وابستگی‌ها را نصب کنید (Python 3.10 یا بالاتر نیاز است): + +```bash +git clone https://github.com/marzneshin/Marzneshin +cd Marzneshin/ +wget -qO- https://bootstrap.pypa.io/get-pip.py | python3 - +python3 -m pip install -r requirements.txt +``` + +به‌طور جایگزین، برای اجرا در یک محیط ایزوله می‌توانید از [محیط مجازی](https://pypi.org/project/virtualenv/) استفاده کنید. + +### ساخت داشبورد + +برای نصب وابستگی‌های داشبورد و ساخت آن: + +```bash +make dashboard-deps +make dashboard-build +``` + +توجه داشته باشید که باید pnpm و npm را نصب کرده باشید. + +### راه‌اندازی marzneshin-cli + +اگر قصد دارید از `marzneshin-cli` استفاده کنید، باید آن را به فایلی در مسیر `$PATH` خود لینک کنید، قابل اجرا کنید و نصب خودکار تکمیل (auto-completion) را انجام دهید: + +```bash +sudo ln -s $(pwd)/marzneshin-cli.py /usr/bin/marzneshin-cli +sudo chmod +x /usr/bin/marzneshin-cli +marzneshin-cli completion install +``` + +### پیکربندی + +اکنون وقت پیکربندی است. + +یک نسخه از فایل `.env.example` را کپی کنید، نگاهی بیندازید و آن را با استفاده از ویرایشگر متنی مانند `nano` ویرایش کنید: + +```bash +cp .env.example .env +nano .env +``` + +> برای اطلاعات بیشتر، راهنمای [پیکربندی مرزنشین](/docs/configuration/marzneshin) را بررسی کنید. + +### تولید پایگاه داده + +در حال حاضر برای تولید پایگاه داده، باید این دستور را اجرا کنید: + +```bash +alembic upgrade head +``` + +### راه‌اندازی + +در نهایت، برنامه را با استفاده از یکی از دستورات زیر راه‌اندازی کنید: + +| استفاده از systemd (توصیه‌شده) | استفاده از make (یک‌بار) | +| :--------------------------------------------------------------------- | --------------------- | +| `bash tools/service-install.sh`
`systemctl enable --now marzneshin` | `make start` | + +به‌طور پیش‌فرض، برنامه در `http://localhost:8000/dashboard` اجرا خواهد شد. شما می‌توانید با تغییر متغیرهای محیطی `UVICORN_HOST` و `UVICORN_PORT` آن را پیکربندی کنید. + +### پیکربندی TLS + +به [اجرای برنامه در پشت Nginx](/docs/how-to-guides/behind-nginx) مراجعه کنید. + +{{% /steps %}} diff --git a/content/docs/getting-started/advanced-install/marznode.fa.md b/content/docs/getting-started/advanced-install/marznode.fa.md new file mode 100644 index 0000000..b3fe932 --- /dev/null +++ b/content/docs/getting-started/advanced-install/marznode.fa.md @@ -0,0 +1,60 @@ +--- +title: "مرزنود" +weight: 2 +--- + +### پیش‌نیازها + +- Docker +- Docker Compose + +{{< callout type="info" >}} +اطمینان حاصل کنید که Docker نصب شده است. + +```sh +curl -fsSL https://get.docker.com | sh +``` + +{{< /callout >}} + +{{% steps %}} + +### راه‌اندازی گواهی‌نامه + +مسیر های لازم را ایجاد کنید: + +```sh +mkdir -p /var/lib/marznode/ +``` + +گواهی‌نامه خود را از تنظیمات مرزنشین دریافت کرده و در این مسیر قرار دهید: + +`/var/lib/marznode/client.pem` + +### راه‌اندازی پیکربندی Xray + +برای نود خود پیکربندی Xray فراهم کنید؛ شما می‌توانید بعداً در داشبورد آن را ویرایش کنید. +در این مورد، ما پیکربندی نمونه را از مخزن مرزنود راه‌اندازی می‌کنیم: + +```sh +curl -L https://github.com/marzneshin/marznode/raw/master/xray_config.json > /var/lib/marznode/xray_config.json +``` + +### دریافت مرزنود + +برای کلون کردن مرزنود: + +```sh +git clone https://github.com/marzneshin/marznode +cd marznode +``` + +### راه‌اندازی کانتینر + +برای راه‌اندازی نود خود، دستور زیر را اجرا کنید: + +```shell +docker compose -f ./compose.yml up -d +``` + +{{% /steps %}} diff --git a/content/docs/getting-started/basic-install.fa.md b/content/docs/getting-started/basic-install.fa.md new file mode 100644 index 0000000..d2b37f7 --- /dev/null +++ b/content/docs/getting-started/basic-install.fa.md @@ -0,0 +1,71 @@ +--- +title: "نصب پایه | Docker" +weight: 1 +--- + +برای شروع، شما فقط به یک ماشین لینوکس نیاز دارید. + +{{< callout type="info" >}} +خلاصه‌ای از مراحل نصب: + +```bash +sudo bash -c "$(curl -sL https://github.com/marzneshin/Marzneshin/raw/master/script.sh)" @ install +``` + +پس از آن، اطمینان حاصل کنید که یک حساب کاربری ادمین ایجاد کنید: + +```bash +marzneshin cli admin create --sudo +``` + +{{< /callout >}} + +مرزنشین در حال حاضر از پایگاه‌های داده زیر پشتیبانی می‌کند. SQLite برای نصب‌های کوچک ترجیح داده می‌شود، در حالی که MariaDB برای پیکربندی‌های بزرگتر توصیه می‌شود. + +{{< tabs items="mariadb,mysql,sqlite" >}} + +{{< tab >}} +```bash +sudo bash -c "$(curl -sL https://github.com/marzneshin/Marzneshin/raw/master/script.sh)" @ install --database mariadb +```{{< /tab >}} + +{{< tab >}} +```bash +sudo bash -c "$(curl -sL https://github.com/marzneshin/Marzneshin/raw/master/script.sh)" @ install --database mysql +```{{< /tab >}} + +{{< tab >}} +```bash +sudo bash -c "$(curl -sL https://github.com/marzneshin/Marzneshin/raw/master/script.sh)" @ install +```{{< /tab >}} + +{{< /tabs >}} + +{{< callout type="warning" >}} +برای نصب آخرین **نسخه شبانه** از فلگ `--nightly` استفاده کنید. +{{< /callout >}} + +پس از تکمیل نصب: + +- شما لاگ‌ها را مشاهده خواهید کرد که می‌توانید با فشار دادن `Ctrl+C` از تماشای آن‌ها دست بکشید؛ فرآیند به طور معمول ادامه خواهد یافت. +- فایل پیکربندی در `/etc/opt/marzneshin/.env` قرار دارد (به صفحه [پیکربندی](/docs/configuration/marzneshin) مراجعه کنید). +- فایل‌های داده در `/var/lib/marzneshin` قرار می‌گیرند؛ به عنوان مثال، پایگاه داده sqlite. +- شما می‌توانید به داشبورد مرزنشین با باز کردن یک مرورگر وب و رفتن به `http://:8000/dashboard/` دسترسی پیدا کنید. + +در مرحله بعد، باید یک حساب کاربری ادمین با دسترسی sudo برای ورود به داشبورد مرزنشین ایجاد کنید با استفاده از دستور زیر: + +```bash +marzneshin cli admin create --sudo +``` + +این همه چیز است! شما می‌توانید با استفاده از این اعتبارنامه‌ها به داشبورد خود وارد شوید. + +برای مشاهده پیام راهنما در مورد اسکریپت مرزنشین، دستور زیر را اجرا کنید: + +```bash +marzneshin --help +``` + +### پیکربندی TLS + +به [اجرای برنامه در پشت Nginx](/docs/how-to-guides/behind-nginx) مراجعه کنید. diff --git a/content/docs/getting-started/concepts.fa.md b/content/docs/getting-started/concepts.fa.md new file mode 100644 index 0000000..3234283 --- /dev/null +++ b/content/docs/getting-started/concepts.fa.md @@ -0,0 +1,16 @@ +--- +title: مفاهیم +weight: 3 +--- + +## نود (Node) +نودها مهره های حیاتی مرزنشین هستند. پروکسی بک‌اندها بر روی نودها اجرا می‌شوند تا کاربران را به اینترنت آزاد متصل نگه دارند. هر نود مجموعه‌ای از [ورودی‌ها](#inbound) (inbounds) دارد. + +## ورودی (Inbound) +یک ورودی دروازه‌ای است برای کاربران تا به نودهای شما متصل شوند. + +## هاست (Host) +هاست‌ها اطلاعات لازم را برای کاربران شما برای یافتن و اتصال به ورودی‌هایی که به آن‌ها دسترسی دارند، نگه می‌دارند. + +## سرویس (Service) +سرویس‌ها به شما این امکان را می‌دهند که مدیریت کنید چه ورودی‌هایی برای کاربران شما قابل دسترسی هستند. این اولین موجودیتی است که بعد از نصب مرزنشین باید ایجاد کنید.