# سرویس systemd

> باینری پنل را به شکل یک سرویس بومی اجرا کنید که در بوت و در خطا دوباره راه می‌افتد.

Source: https://joinnasnet.com/fa/guides/nasnet-linux/install/systemd/
Last updated: 2026-08-14

---

## مرور کلی

در حالت systemd، پنل به شکل باینری خالی `nasnet-panel` اجرا می‌شود و یک فایل unit
مدیریتش می‌کند، بدون اینکه Docker در کار باشد. اگر استقرار systemd را انتخاب
کنید، نصب‌کنندهٔ راهنما همین unit را برایتان می‌نویسد. این صفحه نشان می‌دهد چه چیزی
تولید می‌شود، تا بتوانید بازبینی‌اش کنید، دستی بازسازی‌اش کنید، یا یک نصب در حال
اجرا را عیب‌یابی کنید.

## پیش از شروع

- یک توزیع لینوکس بر پایهٔ systemd (`systemctl` باید موجود باشد).
- باینری `nasnet-panel` سر جایش باشد و یک فایل `.env` کنارش.
- یک پایگاه‌داده در دسترس، یا PostgreSQL روی میزبان یا `DB_DRIVER=sqlite`.

## گام‌ها

1. باینری را در `/usr/local/nasnet-panel/bin/nasnet-panel` نصب کنید و `.env`
خودتان را در `/usr/local/nasnet-panel/.env` بگذارید.
2. unit را در `/etc/systemd/system/nasnet-panel.service` بنویسید:

```ini
[Unit]
Description=nasnet-panel Backend API
Documentation=https://github.com/nasnet-community/nasnet-panel-linux
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/usr/local/nasnet-panel
EnvironmentFile=/usr/local/nasnet-panel/.env
ExecStart=/usr/local/nasnet-panel/bin/nasnet-panel serve
Restart=always
RestartSec=5
LimitNOFILE=65536

StandardOutput=journal
StandardError=journal
SyslogIdentifier=nasnet-panel

[Install]
WantedBy=multi-user.target
```

وقتی PostgreSQL روی همان میزبان اجرا می‌شود، نصب‌کننده unit پایگاه‌داده را به
`After=` و به یک سطر `Requires=` هم اضافه می‌کند، و `Environment=DB_HOST=localhost`
را می‌گذارد.

3. systemd را بارگذاری دوباره کنید، بعد سرویس را فعال و اجرا کنید.

```bash
sudo systemctl daemon-reload
sudo systemctl enable nasnet-panel --now
```

4. مطمئن شوید که در حال اجراست و لاگ‌ها را بخوانید.

```bash
systemctl is-active nasnet-panel
journalctl -u nasnet-panel -n 50 -f
```

## مرجع

| مسیر | چیست |
| ---- | ---- |
| `/usr/local/nasnet-panel` | پوشهٔ نصب و پوشهٔ کاری |
| `/usr/local/nasnet-panel/bin/nasnet-panel` | باینری پنل |
| `/usr/local/nasnet-panel/.env` | فایل محیط که unit بارگذاری می‌کند |
| `/etc/systemd/system/nasnet-panel.service` | خود فایل unit |
| `/usr/local/nasnet-pgsql` | پوشهٔ نصب PostgreSQL همراه بسته، وقتی استفاده شود |
| `nasnet-postgresql.service` | unit مربوط به PostgreSQL همراه بسته، وقتی استفاده شود |

## رفع مشکلات

| نشانه | چه کنید |
| ----- | ------- |
| سرویس راه می‌افتد و بی‌درنگ می‌میرد. | `Restart=always` هر پنج ثانیه از نو تلاش می‌کند، پس برای خطای واقعی `journalctl -u nasnet-panel -n 50` را تماشا کنید. کوتاه بودن `JWT_SECRET_KEY` (کمتر از ۳۲ نویسه) و در دسترس نبودن پایگاه‌داده دو دلیل رایج‌تر هستند. |

## مرتبط

- [نصب‌کنندهٔ راهنما](/fa/guides/nasnet-linux/install/installer-script/)
- [باینری‌های منتشرشده](/fa/guides/nasnet-linux/install/binaries/)
- [بستهٔ آفلاین](/fa/guides/nasnet-linux/install/offline-bundle/)
