A modern, web-based Nginx reverse proxy manager, designed to simplify the management of proxy hosts, SSL certificates, and upstream servers through an intuitive interface.
- Proxy Host Management: Create, edit, and delete proxy hosts with custom configurations
- SSL Certificate Management: Automatic SSL certificate generation and renewal with Let's Encrypt integration
- Upstream Management: Configure and manage upstream servers for load balancing
- Real-time Configuration: Live Nginx configuration editing with validation
- Status Monitoring: Real-time Nginx service status monitoring
- User authentication system with role-based access control
- Secure session management
- Protected API routes
- Admin and user role permissions
- Clean, responsive design built with Tailwind CSS
- Real-time updates and status indicators
- Intuitive dashboard with statistics
- Dark/light theme support
- Mobile-friendly interface
- Automatic Nginx configuration generation
- Configuration validation before applying changes
- Backup and restore functionality
- Docker integration ready
- Supervisor process management
- Cron job automation for certificate renewal
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Backend: Node.js, Express, SQLite
- Authentication: Custom JWT-based authentication
- Server: Nginx, Supervisor, Certbot
- Containerization: Docker, Docker Compose
- Docker and Docker Compose
- Node.js
- Git
-
Clone the repository
git clone <repository-url> cd greeting-card-proxy
-
Start with Docker Compose
docker-compose up -d
-
Access the application
- Open your browser and navigate to
http://localhost:3000 - Use default credentials:
- Username:
admin - Password:
admin123
- Username:
- Open your browser and navigate to
-
Clone and install dependencies
git clone <repository-url> cd greeting-card-proxy npm install
-
Start development server
npm run dev
-
Access the application
- Development server:
http://localhost:3000
- Development server:
Create a .env.local file in the root directory:
# Database
DATABASE_PATH=./data/database.db
# Application
NODE_ENV=production
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Nginx
NGINX_CONFIG_PATH=./nginx-config
NGINX_CONF_PATH=./nginx.conf
# SSL
SSL_EMAIL=your-email@domain.comThe application comes with a default admin user:
- Username:
admin - Password:
admin123
- Click "Add Proxy Host" button on the dashboard
- Fill in the required information:
- Domain: Your domain name (e.g.,
example.com) - Forward Hostname/IP: Target server IP or hostname
- Forward Port: Target server port
- Domain: Your domain name (e.g.,
- Configure SSL settings if needed
- Save the configuration
- Navigate to "Certificates" section
- Click "Request New Certificate"
- Enter domain names
- The system will automatically request and install SSL certificates
- Certificates are automatically renewed before expiration
- Go to "Upstreams" section
- Create upstream groups for load balancing
- Add multiple servers to each upstream
- Configure load balancing method (round-robin, least-connected, etc.)
- Access "Users" section (Admin only)
- Create new users with appropriate roles
- Manage user permissions and access levels
POST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/me- Get current user info
GET /api/sites- List all proxy hostsPOST /api/sites- Create new proxy hostPUT /api/sites/[id]- Update proxy hostDELETE /api/sites/[id]- Delete proxy host
GET /api/certificates- List certificatesPOST /api/certificates- Request new certificatePOST /api/certificates/renew-all- Renew all certificates
GET /api/nginx/status- Nginx service statusPOST /api/nginx/validate- Validate configurationGET /api/config- Get system configuration
The application includes a complete Docker setup:
- nginx-manager: Main Next.js application
- nginx: Nginx reverse proxy server
- supervisor: Process management
./data:/app/data- Database and persistent data./nginx-config:/etc/nginx/sites-enabled- Nginx site configurations./ssl:/etc/ssl/certs- SSL certificates storage
80: HTTP traffic443: HTTPS traffic3000: Application interface
greeting-card-proxy/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── auth/ # Authentication pages
│ ├── certificates/ # SSL management
│ ├── config/ # System configuration
│ ├── upstreams/ # Upstream management
│ └── users/ # User management
├── components/ # React components
├── lib/ # Utility libraries
├── data/ # Database files
├── nginx-config/ # Nginx configurations
├── docker-compose.yml # Docker composition
├── Dockerfile # Docker build file
└── supervisord.conf # Supervisor configuration
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
View application logs:
# All services
docker-compose logs
# Specific service
docker-compose logs nginx-manager
docker-compose logs nginx- Change default admin credentials immediately
- Use strong passwords for all user accounts
- Regularly update SSL certificates
- Monitor access logs for suspicious activity
- Keep the application updated to the latest version
- Use HTTPS in production environments
- Enable Nginx caching for static content
- Configure appropriate upstream health checks
- Monitor system resources and scale as needed
- Use CDN for static assets when possible
- Implement rate limiting for API endpoints
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- 📧 Email: iamapinan@gmail.com
- 🌐 Website: https://iamapinan.com
- Built with ❤️ by iamapinan
- SSL certificates provided by Let's Encrypt
- Icons by Lucide React
Version: 2.0.2
Last Updated: 06/2025
Maintainer: iamapinan
