۱. نصب Node.js
نسخهی مخزن Ubuntu برای بسیاری از برنامهها کافی است:
sudo apt update
sudo apt install -y nodejs npm
node --versionاگر نسخهی جدیدتری لازم دارید، فایل باینری رسمی را از nodejs.org دانلود و در /opt باز کنید.
۲. کاربر و پوشهی برنامه
sudo useradd -r -m -d /opt/api -s /usr/sbin/nologin api
sudo -u api git clone https://git.example.ir/team/api.git /opt/api/app
cd /opt/api/app && sudo -u api npm ci --omit=dev۳. فایل سرویس
sudo nano /etc/systemd/system/api.service[Unit]
Description=Company API (Node.js)
After=network-online.target
Wants=network-online.target
[Service]
User=api
WorkingDirectory=/opt/api/app
Environment=NODE_ENV=production
Environment=PORT=4000
EnvironmentFile=-/etc/api.env
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=3
# محدودیتهای امنیتی
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/opt/api/app/uploads
[Install]
WantedBy=multi-user.targetرمزها و کلیدها را در /etc/api.env بگذارید، با مجوز 600 و مالکیت root.
۴. اجرا و لاگ
sudo systemctl daemon-reload
sudo systemctl enable --now api
systemctl status api --no-pager
journalctl -u api -f۵. پشت Nginx
location / {
proxy_pass http://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}برنامه را فقط روی 127.0.0.1 گوشبهزنگ کنید تا مستقیم از بیرون در دسترس نباشد.
۶. انتشار نسخهی جدید
cd /opt/api/app
sudo -u api git pull
sudo -u api npm ci --omit=dev
sudo systemctl restart api