93 lines
4.0 KiB
Markdown
93 lines
4.0 KiB
Markdown
# Generic rvs-prxy System Implementation
|
|
|
|
## Overview
|
|
This document addresses the implementation of a generic reverse proxy system with simplified command execution. The goal is to provide a more user-friendly approach for setting up reverse proxy services using FRP and Traefik.
|
|
|
|
## Current Commands (After Merging)
|
|
The scripts have been merged into a single `auto-sys-deploy.sh` script, eliminating the need for `DOWNLOAD_SOURCE` and `SCRIPT_PATH`:
|
|
|
|
### Linux Commands
|
|
- **From cmty-repos2.ivantito.com:**
|
|
```bash
|
|
ssh -i ~/.ssh/itl-devs1 -o StrictHostKeyChecking=accept-new -p 13076 ubuntu@cmty-repos2.ivantito.com "cat /repos/repos/cmptr-infra/rvs-prxy/auto-sys-deploy.sh" bash -s -- setup-rvs-prxy
|
|
```
|
|
|
|
- **From cmty-repos1.ivantito.com:**
|
|
```bash
|
|
ssh -i ~/.ssh/itl-devs1 -o StrictHostKeyChecking=accept-new -p 13072 ubuntu@cmty-repos1.ivantito.com "cat /wws/repos/cmptr-infra/rvs-prxy/auto-sys-deploy.sh" bash -s -- setup-rvs-prxy
|
|
```
|
|
|
|
## Simplified Approach: Unified Script
|
|
|
|
To address the complexity of the current commands, we recommend merging `auto-sys-deploy.sh` and `update-compose-config.sh` into a single, comprehensive script called `rvs-prxy-setup.sh`. This would:
|
|
|
|
1. **Reduce Command Length**: Instead of the long SSH command, users would run:
|
|
```bash
|
|
curl -s https://raw.githubusercontent.com/owner/repo/main/rvs-prxy-setup.sh | bash -s -- setup-rvs-prxy --service-port 3000 --domain myapp.example.com
|
|
```
|
|
|
|
2. **Simplify Parameter Passing**: All configuration options would be available through command-line arguments
|
|
|
|
3. **Include .env Support**: The unified script would support `.env` files for default values
|
|
|
|
## Proposed Unified Script Features
|
|
|
|
### 1. Command-Line Arguments
|
|
- `--instance-name`: Set the instance name
|
|
- `--service-port`: Set the internal service port (e.g., 3000)
|
|
- `--docker-network`: Set the Docker network
|
|
- `--frp-server`: Set the FRP server address
|
|
- `--domain`: Set the domain name
|
|
- `--env-file`: Specify the .env file to use
|
|
|
|
### 2. Environment File Support
|
|
- The script will automatically detect and use `.env`, `.env.development`, or `.env.production`
|
|
- Parameters from environment files are used as defaults during script execution
|
|
- Missing parameters will prompt for input
|
|
- Answered parameters are automatically saved to the appropriate `.env` file for future use
|
|
|
|
### 3. Simplified Execution
|
|
The unified approach would make the command much shorter and easier to remember:
|
|
```bash
|
|
# Download and execute with minimal parameters
|
|
curl -s https://raw.githubusercontent.com/owner/repo/main/rvs-prxy-setup.sh | bash -s -- setup-rvs-prxy --service-port 3000 --domain myapp.example.com
|
|
|
|
# Or with an existing .env file
|
|
curl -s https://raw.githubusercontent.com/owner/repo/main/rvs-prxy-setup.sh | bash -s -- setup-rvs-prxy --env-file .env
|
|
```
|
|
|
|
## Implementation Benefits
|
|
|
|
### 1. Reduced Complexity
|
|
- Single script handles both client and proxy configuration
|
|
- Simplified command syntax without requiring `DOWNLOAD_SOURCE` and `SCRIPT_PATH`
|
|
- More straightforward execution model
|
|
|
|
### 2. Streamlined Workflow
|
|
- Combined functionality of both current scripts
|
|
- Single point of execution for the entire setup process
|
|
- Better error handling and validation
|
|
|
|
### 3. Easy Maintenance
|
|
- Unified codebase for easier updates
|
|
- Centralized configuration management
|
|
- Consistent logging and error reporting
|
|
|
|
## Environment File Usage
|
|
- `.env` files must be created by the end-user on their local computer
|
|
- The file should be in the same directory where the command is executed
|
|
- The unified script will read configuration from the .env file before prompting for input
|
|
- Example .env file:
|
|
```
|
|
INSTANCE_NAME=myapp-3000
|
|
INTERNAL_SERVICE_PORT=3000
|
|
DOCKER_NETWORK=app-network
|
|
FRP_SERVER_ADDR=192.168.1.100
|
|
DOMAIN_NAME=myapp.example.com
|
|
```
|
|
|
|
## Future Recommendations
|
|
- Create a GitHub repository with the unified script
|
|
- Provide multiple download methods (curl, wget, direct SSH)
|
|
- Include comprehensive documentation and error handling in the unified script
|
|
- Support for various environments (development, staging, production) |