Files
frps-manager/scripts/dev.sh
T
Your Name 71214524f4 feat: frps-manager v1.0 - frp 0.70.1 multi-tenant web management system
- Multi-tenant client/proxy management with Flask+SQLite
- Frps server control (start/restart/token rotation)
- Generate frpc.ini with shared server token + admin API
- Dashboard API integration (live client/proxy status)
- RBAC: admin/tenant_admin/user roles
- Audit logging for all operations
- Systemd service files included
- Requires legacy INI format (frp 0.70 TOML auth broken)
2026-08-10 14:17:49 +08:00

55 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Local dev launcher — runs frps-manager on :5300 with gunicorn using the
# project venv. Use this when iterating without systemd.
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")/.."
mkdir -p runtime/conf runtime/logs instance
if [ ! -x runtime/bin/frps ]; then
echo "[dev] runtime/bin/frps missing — running deploy.sh to fetch it"
bash scripts/deploy.sh --no-systemd --dry-run || true
fi
if [ ! -d venv ]; then
echo "[dev] venv missing — create one and install requirements"
python3 -m venv venv
venv/bin/pip install -r requirements.txt
fi
# Ensure frps service is *not* taking port 7000/7500 while we develop
if systemctl is-active --quiet frps.service 2>/dev/null; then
echo "[dev] stopping existing frps.service so dev frps can take port 7000"
sudo systemctl stop frps.service
fi
# Start frps under the dev user (not as a daemon) if not already running
if ! ss -tlnp 2>/dev/null | grep -q ':7000 '; then
echo "[dev] starting frps from runtime/conf/frps.toml"
mkdir -p runtime/conf
if [ ! -s runtime/conf/frps.toml ]; then
venv/bin/python -c "
import os
os.environ.setdefault('FRPS_CONFIG', os.path.abspath('runtime/conf/frps.toml'))
from app import write_frps_config, FRPS_CONFIG
write_frps_config()
print('wrote', os.environ.get('FRPS_CONFIG'))
"
fi
nohup runtime/bin/frps -c runtime/conf/frps.toml > runtime/logs/frps.log 2>&1 &
echo $! > runtime/logs/frps.pid
sleep 2
fi
# Initialize DB (idempotent)
venv/bin/python init_db.py
echo "[dev] launching gunicorn on :5300"
exec venv/bin/gunicorn \
--workers 2 \
--bind 0.0.0.0:5300 \
--reload \
--access-logfile runtime/logs/web-access.log \
--error-logfile runtime/logs/web-error.log \
wsgi:app