Advanced Nginx + ModSecurity WAF management platform — domain management, SSL, load balancing, Bot Manager (JA4), and real-time monitoring through a modern web UI.
Nginx Love helps teams configure load balancers with SSL termination and a Web Application Firewall without hand-editing nginx configs. Docker Compose is the recommended install path; a legacy VM option remains for existing deployments.
- ModSecurity WAF — OWASP CRS + custom rules
- Domain management — load balancing, upstream health checks, HTTPS backends
- SSL certificates — Let's Encrypt automation and manual upload
- Bot Manager (JA4) — fingerprint-based bot detection and policies
- ACL & access lists — IP, GeoIP, User-Agent filtering
- Monitoring & alerts — performance metrics, email/Telegram notifications
- Multi-user RBAC — admin, moderator, viewer roles
- Backup & cluster — export/restore, multi-node sync
Docker production uses a same-origin API proxy — the browser talks only to port 8080; API port 3001 stays internal.
flowchart LR
Browser -->|":8080"| FE[frontend nginx]
FE -->|"/api"| BE_API[backend API]
Internet -->|":80/:443"| BE_WAF[backend nginx WAF]
BE_API --> PG[(postgres)]
BE_WAF --> PG
| Port | Access | Purpose |
|---|---|---|
| 8080 | Public | Admin UI + /api reverse proxy |
| 80, 443 | Public | WAF / customer domains |
| 3001 | Internal | Node.js API (Docker network only) |
| 5432 | Internal | PostgreSQL |
See Architecture guide for volumes, networks, and legacy VM layout.
git clone https://github.com/TinyActive/nginx-love.git
cd nginx-love
bash scripts/install-docker.shOpen http://YOUR_SERVER_IP:8080 — default login below. First base image build may take ~15 minutes.
| Method | Command / script | Notes |
|---|---|---|
| Docker install | bash scripts/install-docker.sh |
Recommended for new servers |
| Docker upgrade | bash scripts/upgrade-docker.sh |
Keeps volumes, runs migrations |
| Docker Hub pull | docker compose -f docker-compose.yml -f docker-compose.pull.yml up -d |
Pre-built images |
| Legacy VM | sudo bash scripts/deploy.sh |
Host nginx + systemd |
| Development | bash scripts/quickstart.sh |
Docker dev profile (default) |
Upgrade and migration details: Upgrade guide · VM → Docker: bash scripts/migrate-vm-to-docker.sh
cd nginx-love && git pull && bash scripts/upgrade-docker.shsudo bash scripts/deploy.sh # fresh install
sudo bash scripts/update.sh # upgradeRe-run deploy.sh with --force-recreate-db only if you intentionally want to wipe the database.
| User | Password | Role |
|---|---|---|
admin |
admin123 |
admin |
operator |
operator123 |
moderator |
viewer |
viewer123 |
viewer |
Change the admin password after first login in production.
Full documentation lives in apps/docs/ (VitePress):
| Topic | Link |
|---|---|
| Introduction | apps/docs/guide/introduction.md |
| Installation | apps/docs/guide/installation.md |
| Docker deployment | apps/docs/guide/docker.md |
| Architecture | apps/docs/guide/architecture.md |
| Upgrade | apps/docs/guide/upgrade.md |
| Configuration | apps/docs/reference/configuration.md |
| Troubleshooting | apps/docs/reference/troubleshooting.md |
| API reference | apps/docs/api/ |
| OpenAPI spec | apps/api/openapi.yaml |
| Changelog | CHANGELOG.md |
Run docs locally: cd apps/docs && pnpm install && pnpm dev
Frontend: React 18, Vite, TypeScript, ShadCN UI, TanStack Query
Backend: Node.js 20, Express, Prisma, PostgreSQL 15
Edge: Nginx 1.28, ModSecurity 3, OWASP CRS, JA4 module
Deploy: Docker Compose (primary), systemd (legacy)
| Docker (recommended) | Legacy VM |
|---|---|
| Docker 24+ & Compose v2 | Ubuntu/Debian 22.04+ |
| 4 GB RAM recommended | 4 GB RAM recommended |
| 10 GB disk | Root/sudo access |
- Fork the repository and create a feature branch.
- Follow existing TypeScript and Prisma migration conventions.
- Open a pull request with a clear description.
Commit prefixes: feat:, fix:, docs:, refactor:, chore:
Licensed under the terms in LICENSE.
- GitHub Issues — bug reports
- GitHub Discussions — feature requests
- Telegram — community support
- Security: security@tinyactive.net
Made by TinyActive