Skip to content

Commit

Permalink
fix: multiple changes
Browse files Browse the repository at this point in the history
- added scripts to setup Marzban with MySQL or MariaDB database
- added a query to see offline users
- a minor fix in MySQL setup document
  • Loading branch information
iamtheted committed Dec 2, 2024
1 parent 26b5847 commit a2118e7
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 28 deletions.
57 changes: 49 additions & 8 deletions marzban/en/docs/marzban-script.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,64 @@ In this section, you can see scripts in order to setup Marzban or Marzban-node.

## Setup Marzban Panel

- Install Marzban on your server using this command.
- Install Marzban with the `SQLite` database on your server using this command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
```
- Or you can only install this script (marzban command) on your server by using this command.
- Install Marzban with the `MySQL` database on your server using this command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install-script
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql
```
- This is an example for installing a specific version.
- Install Marzban with the `MariaDB` database on your server using this command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install v0.5.2
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb
```
::: tip Tip
- Use the following command to view all Marzban commands.
- If you have a small number of users, the `SQLite` database is suitable for you. However, for a large number of users, it is strongly recommended to set up Marzban with the `MySQL` database.
:::
::: tip Tip
- Currently, there is no detailed explanation for the `MariaDB` database or its backup script. Therefore, only use it if you have sufficient knowledge of working with it.
:::
- This is an example for installing a specific version of Marzban with the `SQLite` database.
```bash
marzban help
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install v0.5.2
```
- This is an example for installing a specific version of Marzban with the `MySQL` database.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql --version v0.5.2
```
- - This is an example for installing a specific version of Marzban with the `MariaDB` database.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb --version v0.5.2
```
::: warning Warning
- MySQL database is supported in version `v0.3.2` and later.
:::
- To install the developer version of Marzban on your server, use the following command.
- To install the developer version of Marzban with the `SQLite` database on your server, use the following command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install dev
```
- To install the developer version of Marzban with the `MySQL` database on your server, use the following command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql --dev
```
- To install the developer version of Marzban with the `MariaDB` database on your server, use the following command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb --dev
```
::: warning Warning
- The developer version of Marzban is constantly changing and under testing, so it is only recommended for those with programming knowledge. If you are a simple user, do not install this version as the changes may cause bugs in the performance of the panel and your database.
:::
- You can only install this script (marzban command) on your server by using this command.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install-script
```
::: tip Tip
- Use the following command to view all Marzban commands.
```bash
marzban help
```
:::

## Setup Marzban-node

Expand Down Expand Up @@ -93,6 +126,14 @@ marzban update
```
marzban uninstall
```
- Edit Marzban's Docker configuration using this command.
```
marzban edit
```
- - Edit Marzban's `.env` file using this command.
```
marzban edit-env
```
- Change `Xray` core version of Marzban using this command.
```
marzban core-update
Expand Down
3 changes: 2 additions & 1 deletion marzban/en/examples/mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ MySQL در نسخه `v0.3.2` و بالاتر پشتیبانی می‌شود.
- باید یک سرویس برای MySQL ایجاد کنید. برای این کار، فایل `docker-compose.yml` به شکل زیر تغییر دهید.

::: code-group
```yml{9-10,12-20} [docker-compose.yml]
```yml{9-10,12-21} [docker-compose.yml]
services:
marzban:
image: gozargah/marzban:latest
Expand All @@ -38,6 +38,7 @@ services:
restart: always
env_file: .env
network_mode: host
command: --bind-address=127.0.0.1 --mysqlx-bind-address=127.0.0.1 --disable-log-bin
environment:
MYSQL_DATABASE: marzban
volumes:
Expand Down
57 changes: 49 additions & 8 deletions marzban/fa/docs/marzban-script.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,64 @@ title: اسکریپت مرزبان

## راه‌اندازی پنل مرزبان

- با دستور زیر مرزبان را روی سرور خود نصب کنید.
- با دستور زیر مرزبان را با دیتابیس `SQLite` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
```
- با دستور زیر فقط اسکریپت را نصب کنید تا کامندهای مرزبان را داشته باشید.
- با دستور زیر مرزبان را با دیتابیس `MySQL` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install-script
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql
```
- دستور زیر یک نمونه برای نصب ورژن خاصی از مرزبان است.
- با دستور زیر مرزبان را با دیتابیس `MariaDB` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install v0.5.2
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb
```
::: tip نکته
- برای دیدن همه کامندهای مرزبان از کامند زیر استفاده کنید.
- اگر تعداد کاربرهای شما کم است دیتابیس `SQLite` برای شما مناسب است، اما برای تعداد کاربرهای زیاد حتما پیشنهاد می‌شود مرزبان را با دیتابیس `MySQL` راه‌اندازی کنید.
:::
::: tip نکته
- فعلا توضیحات لازم در خصوص دیتابیس `MariaDB` و همچنین اسکریپت بک‌آپ برای آن وجود ندارد، در نتیجه فقط در صورتی استفاده کنید که دانش کافی برای استفاده از آن را دارید.
:::
- دستور زیر یک نمونه برای نصب ورژن خاصی از مرزبان با دیتابیس `SQLite` است.
```bash
marzban help
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install v0.5.2
```
- دستور زیر یک نمونه برای نصب ورژن خاصی از مرزبان با دیتابیس `MySQL` است.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql --version v0.5.2
```
- دستور زیر یک نمونه برای نصب ورژن خاصی از مرزبان با دیتابیس `MariaDB` است.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb --version v0.5.2
```
::: warning توجه
دیتابیس MySQL در نسخه `v0.3.2` و بالاتر پشتیبانی می‌شود.
:::
- با دستور زیر ورژن دولوپر مرزبان را روی سرور خود نصب کنید.
- با دستور زیر ورژن دولوپر مرزبان را با دیتابیس `SQLite` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install dev
```
- با دستور زیر ورژن دولوپر مرزبان را با دیتابیس `MySQL` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql --dev
```
- با دستور زیر ورژن دولوپر مرزبان را با دیتابیس `MariaDB` روی سرور خود نصب کنید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mariadb --dev
```
::: warning توجه
- ورژن دولوپر مرزبان مداوم در حال تغییر و آزمایش است، از این رو فقط برای کسانی پیشنهاد می‌شود که دانش برنامه‌نویسی دارند، پس اگر کاربر ساده هستید این ورژن را نصب نکنید چراکه ممکنه تغییرات باعث ایجاد باگ در عملکرد پنل و همینطور دیتابیس شما بشود.
:::
- با دستور زیر فقط اسکریپت را نصب کنید تا کامندهای مرزبان را داشته باشید.
```bash
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install-script
```
::: tip نکته
- برای دیدن همه کامندهای مرزبان از کامند زیر استفاده کنید.
```bash
marzban help
```
:::

## راه‌اندازی مرزبان نود

Expand Down Expand Up @@ -93,6 +126,14 @@ marzban update
```
marzban uninstall
```
- با استفاده از دستور زیر داکر مرزبان را ویرایش کنید.
```
marzban edit
```
- با استفاده از دستور زیر فایل `.env` مرزبان را ویرایش کنید.
```
marzban edit-env
```
- با استفاده از دستور زیر ورژن هسته `Xray` مرزبان را تغییر دهید.
```
marzban core-update
Expand Down
36 changes: 26 additions & 10 deletions marzban/fa/examples/mysql-queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,24 @@ WHERE expire >= UNIX_TIMESTAMP('2024-06-13 00:00:00')

- لیست کاربرانی که تا تاریخ مشخصی زمانشان به اتمام میرسد.
```sql
SELECT * FROM users WHERE expire < UNIX_TIMESTAMP('2024-03-10') and status = 'active';
SELECT * FROM users
WHERE expire < UNIX_TIMESTAMP('2024-03-10')
AND status = 'active';
```

::: tip نکته
فرضا `7` مارس هست توی کوئری بالا `10` مارس تعیین شده پس تمام کاربرانی که `3` روز از زمان آنها باقی مانده را خروجی میدهد.
:::

- لیست کاربرانی که کمتر از `2` گیگابایت از حجم شان باقی مانده
- لیست کاربرانی که کمتر از `2` گیگابایت از حجم شان باقی مانده است.
```sql
SELECT * FROM users WHERE (data_limit - used_traffic) < (2*1024*1024*1024) and status = 'active' and data_limit IS NOT NULL;
SELECT * FROM users
WHERE data_limit - used_traffic < (2 * 1024 * 1024 * 1024)
AND status = 'active'
AND data_limit IS NOT NULL
```

- لیست کاربرانی که `90` درصد حجم خود را مصرف کرده‌اند
- لیست کاربرانی که `90` درصد حجم خود را مصرف کرده‌اند.
```sql
SELECT * FROM users
WHERE used_traffic >= 0.9 * data_limit
Expand Down Expand Up @@ -110,6 +115,15 @@ FROM users
WHERE TIMESTAMPDIFF(MINUTE, now(), online_at) = 0;
```

- مشاهده کاربران آفلاین به مدت 24 ساعت یا بیشتر
```sql
SELECT username, TIMESTAMPDIFF(HOUR, online_at, NOW()) AS LastOnlineHours
FROM users
WHERE TIMESTAMPDIFF(HOUR, online_at, NOW()) >= 24
AND status = 'active'
ORDER BY LastOnlineHours DESC;
```

- لیست کاربرانی که در `1` روز اخیر لینک سابسکریپشن خود را آپدیت کردند.
```sql
SELECT username, datediff(now(), sub_updated_at) as LastUpdate FROM users
Expand All @@ -133,7 +147,7 @@ ON proxies.user_id = users.id INNER JOIN exclude_inbounds_association
ON exclude_inbounds_association.proxy_id = proxies.id ORDER BY users.username;
```

- لیست کاربرانی که پروتکل `Vmess` برای آن‌ها غیر فعال است
- لیست کاربرانی که پروتکل `Vmess` برای آن‌ها غیر فعال است.
```sql
SELECT users.username FROM users
WHERE users.username not in (SELECT users.username FROM users LEFT JOIN proxies ON proxies.user_id = users.id
Expand Down Expand Up @@ -212,12 +226,12 @@ delete from users where datediff(now(),from_unixtime(expire))> 30
در خصوص مورد بالا باید تیک `enable foreign key checks` خاموش باشد.
:::

- حذف همه کاربرانی که غیرفعال شده‌اند
- حذف همه کاربرانی که غیرفعال شده‌اند.
```sql
delete from users where status = 'disabled'
```

- کاربرانی که پروتکل `Vless` را فعال دارند اگر `Flow` برای آن‌ها ست نشده باشه برای آن‌ها ست می‌کنه
- کاربرانی که پروتکل `Vless` را فعال دارند اگر `Flow` برای آن‌ها ست نشده باشه برای آن‌ها ست می‌کند.
```sql
UPDATE proxies
SET settings = JSON_SET(settings, '$.flow', 'xtls-rprx-vision')
Expand All @@ -236,7 +250,7 @@ FROM users;
DELETE FROM proxies WHERE type = "VMess"
```

- فعال کردن پروتوکل `Vmess` برای کاربران یک ادمین خاص
- فعال کردن پروتکل `Vmess` برای کاربران یک ادمین خاص
```sql
INSERT INTO proxies (user_id, type,  settings) SELECT id, "VMess", CONCAT("{""id"": """, CONVERT(UUID() , CHAR) , """}")
FROM users inner join admins ON  users.admin_id = admins.id
Expand Down Expand Up @@ -359,9 +373,11 @@ EVERY 1 WEEK STARTS '2024-05-03 00:00:00' ON COMPLETION NOT PRESERVE ENABLE
DO TRUNCATE node_user_usages
```

- ایونت روزانه برای ست کردن `Flow` چنانچه فراموش کنید برای کاربر بگذارید
- ایونت روزانه برای ست کردن `Flow` چنانچه فراموش کنید برای کاربر بگذارید.
```sql
CREATE DEFINER=`root`@`%` EVENT `SetFlow` ON SCHEDULE EVERY 1 DAY STARTS '2024-06-01 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO UPDATE proxies SET settings = JSON_SET(settings, '$.flow', 'xtls-rprx-vision') WHERE type = 'VLESS' AND JSON_UNQUOTE(JSON_EXTRACT(settings, '$.flow')) = '';
CREATE DEFINER=`root`@`%` EVENT `SetFlow` ON SCHEDULE EVERY 1 DAY STARTS '2024-06-01 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO
UPDATE proxies SET settings = JSON_SET(settings, '$.flow', 'xtls-rprx-vision')
WHERE type = 'VLESS' AND JSON_UNQUOTE(JSON_EXTRACT(settings, '$.flow')) = '';
```

::: tip نکته
Expand Down
3 changes: 2 additions & 1 deletion marzban/fa/examples/mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ MySQL در نسخه `v0.3.2` و بالاتر پشتیبانی می‌شود.
- باید یک سرویس برای MySQL ایجاد کنید. برای این کار، فایل `docker-compose.yml` به شکل زیر تغییر دهید.

::: code-group
```yml{9-10,12-20} [docker-compose.yml]
```yml{9-10,12-21} [docker-compose.yml]
services:
marzban:
image: gozargah/marzban:latest
Expand All @@ -38,6 +38,7 @@ services:
restart: always
env_file: .env
network_mode: host
command: --bind-address=127.0.0.1 --mysqlx-bind-address=127.0.0.1 --disable-log-bin
environment:
MYSQL_DATABASE: marzban
volumes:
Expand Down

0 comments on commit a2118e7

Please sign in to comment.