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)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user