60 lines
1.3 KiB
Desktop File
60 lines
1.3 KiB
Desktop File
[Unit]
|
|
Description=VPN Gateway WebUI Service
|
|
Documentation=https://github.com/yourusername/vpn-gateway
|
|
After=network-online.target vpn-killswitch.service
|
|
Wants=network-online.target
|
|
Requires=vpn-killswitch.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
Group=root
|
|
WorkingDirectory=/opt/vpn-gateway
|
|
|
|
# Environment
|
|
Environment="PATH=/opt/vpn-gateway/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
Environment="PYTHONPATH=/opt/vpn-gateway"
|
|
Environment="FLASK_APP=app.py"
|
|
Environment="FLASK_ENV=production"
|
|
|
|
# Pre-start delay to ensure network is ready
|
|
ExecStartPre=/bin/bash -c 'sleep 5'
|
|
|
|
# Start command with gunicorn
|
|
ExecStart=/opt/vpn-gateway/venv/bin/gunicorn \
|
|
--bind 0.0.0.0:5000 \
|
|
--workers 2 \
|
|
--threads 4 \
|
|
--worker-class sync \
|
|
--worker-connections 1000 \
|
|
--max-requests 1000 \
|
|
--max-requests-jitter 50 \
|
|
--timeout 120 \
|
|
--keepalive 5 \
|
|
--access-logfile /var/log/vpn-gateway-access.log \
|
|
--error-logfile /var/log/vpn-gateway-error.log \
|
|
--log-level info \
|
|
--capture-output \
|
|
app:app
|
|
|
|
# Restart policy
|
|
Restart=always
|
|
RestartSec=10
|
|
StartLimitInterval=60
|
|
StartLimitBurst=3
|
|
|
|
# Security settings
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
|
|
# Resource limits
|
|
LimitNOFILE=65536
|
|
LimitNPROC=4096
|
|
|
|
# Kill settings
|
|
KillMode=mixed
|
|
KillSignal=SIGTERM
|
|
TimeoutStopSec=30
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|