mirror of
https://github.com/johndoe6345789/docker-swarm-termina.git
synced 2026-04-24 13:45:01 +00:00
- Created GitHub Actions workflow for automated release packaging
- Triggers on git tags (v*) or manual workflow dispatch
- Builds uncompressed .tar files for CapRover (as required)
- Creates checksums and deployment instructions
- Automatically publishes to GitHub Releases
- Added release build script (create-caprover-releases.sh)
- Generates backend-caprover-{version}.tar (uncompressed)
- Generates frontend-caprover-{version}.tar (uncompressed)
- Creates documentation package (compressed for convenience)
- Generates SHA256 checksums for verification
- Created QUICKSTART.md for rapid deployment guide
- Option 1: Pre-built releases (fastest)
- Option 2: Deploy from source (latest changes)
- Verification steps and troubleshooting
- Updated documentation for CapRover tar format
- CapRover requires uncompressed .tar files (not .tar.gz)
- Updated all references in README, QUICKSTART, and releases/README
- Added clear notes about file format requirements
- Updated .gitignore to exclude release artifacts but keep README
- Updated main README with CapRover deployment section
This enables automated release creation on tag push and provides
easy deployment packages for CapRover users.
https://claude.ai/code/session_01NfGGGQ9Zn6ue7PRZpAoB2N
225 lines
6.3 KiB
Markdown
225 lines
6.3 KiB
Markdown
# Docker Swarm Container Terminal WebUI
|
|
|
|
A modern, secure web interface for managing Docker containers with interactive terminal access.
|
|
|
|
## Features
|
|
|
|
- 🔐 **Secure Authentication** - Username/password authentication to protect container access
|
|
- 📦 **Container Management** - View all active containers with real-time status updates
|
|
- 💻 **Interactive Terminal** - Execute commands directly in running containers
|
|
- 🎨 **Modern UI** - Built with Material UI and Next.js for a polished experience
|
|
- 🐳 **Docker Native** - Direct integration with Docker API
|
|
- 📱 **Responsive Design** - Works seamlessly on desktop and mobile devices
|
|
|
|
## Tech Stack
|
|
|
|
### Frontend
|
|
- **Next.js 14+** - React framework with App Router
|
|
- **Material UI (MUI)** - Modern component library
|
|
- **TypeScript** - Type-safe development
|
|
- **Tailwind CSS** - Utility-first styling
|
|
|
|
### Backend
|
|
- **Flask** - Python web framework
|
|
- **Docker SDK** - Python Docker integration
|
|
- **Flask-CORS** - Cross-origin resource sharing
|
|
|
|
### Deployment
|
|
- **Docker** - Containerized deployment
|
|
- **Docker Compose** - Multi-container orchestration
|
|
- **CapRover** - Docker Swarm deployment platform
|
|
- **GHCR** - GitHub Container Registry for images
|
|
|
|
## Quick Start
|
|
|
|
### Using CapRover (Recommended for Production)
|
|
|
|
Pre-built deployment packages are available in [Releases](https://github.com/johndoe6345789/docker-swarm-termina/releases):
|
|
|
|
1. Download the latest release packages:
|
|
- `backend-caprover-{version}.tar` (uncompressed - required by CapRover)
|
|
- `frontend-caprover-{version}.tar` (uncompressed - required by CapRover)
|
|
|
|
2. Deploy to CapRover:
|
|
- Upload backend `.tar` file to your CapRover backend app
|
|
- Upload frontend `.tar` file to your CapRover frontend app
|
|
|
|
For detailed instructions, see:
|
|
- **[QUICKSTART.md](QUICKSTART.md)** - Fast deployment guide
|
|
- **[CAPROVER_DEPLOYMENT.md](CAPROVER_DEPLOYMENT.md)** - Complete CapRover setup guide
|
|
|
|
### Using Docker Compose (Local Development)
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/johndoe6345789/docker-swarm-termina.git
|
|
cd docker-swarm-termina
|
|
```
|
|
|
|
2. Start the application:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
3. Access the application:
|
|
- Frontend: http://localhost:3000
|
|
- Backend API: http://localhost:5000
|
|
|
|
4. Login with default credentials:
|
|
- Username: `admin`
|
|
- Password: `admin123`
|
|
|
|
### Manual Setup
|
|
|
|
#### Backend Setup
|
|
|
|
1. Navigate to the backend directory:
|
|
```bash
|
|
cd backend
|
|
```
|
|
|
|
2. Install Python dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. Create `.env` file (optional):
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env to set custom credentials
|
|
```
|
|
|
|
4. Run the Flask application:
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
The backend will be available at http://localhost:5000
|
|
|
|
#### Frontend Setup
|
|
|
|
1. Navigate to the frontend directory:
|
|
```bash
|
|
cd frontend
|
|
```
|
|
|
|
2. Install Node.js dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Create `.env.local` file:
|
|
```bash
|
|
cp .env.local.example .env.local
|
|
# Edit if backend is running on a different URL
|
|
```
|
|
|
|
4. Run the development server:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The frontend will be available at http://localhost:3000
|
|
|
|
## Configuration
|
|
|
|
### Backend Environment Variables
|
|
|
|
- `ADMIN_USERNAME` - Admin username (default: `admin`)
|
|
- `ADMIN_PASSWORD` - Admin password (default: `admin123`)
|
|
- `FLASK_ENV` - Flask environment (default: `development`)
|
|
|
|
### Frontend Environment Variables
|
|
|
|
- `NEXT_PUBLIC_API_URL` - Backend API URL (default: `http://localhost:5000`)
|
|
|
|
## API Endpoints
|
|
|
|
### Authentication
|
|
- `POST /api/auth/login` - Authenticate user
|
|
- `POST /api/auth/logout` - Logout user
|
|
|
|
### Containers
|
|
- `GET /api/containers` - List all containers
|
|
- `POST /api/containers/<id>/exec` - Execute command in container
|
|
|
|
### Health
|
|
- `GET /api/health` - Health check endpoint
|
|
|
|
## Deployment Options
|
|
|
|
### CapRover (Docker Swarm)
|
|
|
|
**Production-ready deployment packages** are automatically built and published to [GitHub Releases](https://github.com/johndoe6345789/docker-swarm-termina/releases).
|
|
|
|
- **Quick Deploy**: Upload pre-built tar files to CapRover
|
|
- **Documentation**: See [CAPROVER_DEPLOYMENT.md](CAPROVER_DEPLOYMENT.md)
|
|
- **Includes**: Enhanced Docker socket debugging and diagnostics
|
|
|
|
### Docker Images (GHCR)
|
|
|
|
Images are automatically built and pushed to GitHub Container Registry:
|
|
|
|
- Backend: `ghcr.io/johndoe6345789/docker-swarm-termina-backend`
|
|
- Frontend: `ghcr.io/johndoe6345789/docker-swarm-termina-frontend`
|
|
|
|
## Security Considerations
|
|
|
|
⚠️ **Important Security Notes:**
|
|
|
|
1. **Change Default Credentials** - Always change the default admin credentials in production
|
|
2. **Docker Socket Access** - The backend requires access to Docker socket (`/var/run/docker.sock`)
|
|
3. **Network Security** - Use proper firewall rules and network isolation
|
|
4. **HTTPS** - Use HTTPS in production (reverse proxy recommended)
|
|
5. **Session Management** - Current implementation uses simple token-based auth; consider implementing JWT or OAuth for production
|
|
|
|
## Development
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
.
|
|
├── backend/ # Flask backend
|
|
│ ├── app.py # Main Flask application
|
|
│ ├── requirements.txt # Python dependencies
|
|
│ └── Dockerfile # Backend Docker image
|
|
├── frontend/ # Next.js frontend
|
|
│ ├── app/ # Next.js app directory
|
|
│ ├── components/ # React components
|
|
│ ├── lib/ # Utility functions and API client
|
|
│ └── Dockerfile # Frontend Docker image
|
|
├── docker-compose.yml # Docker Compose configuration
|
|
└── .github/
|
|
└── workflows/
|
|
└── docker-publish.yml # GHCR publishing workflow
|
|
```
|
|
|
|
### Building for Production
|
|
|
|
#### Build Docker Images
|
|
```bash
|
|
docker-compose build
|
|
```
|
|
|
|
#### Push to GHCR
|
|
Images are automatically pushed when code is merged to main. To manually push:
|
|
|
|
```bash
|
|
docker tag docker-swarm-termina-backend ghcr.io/johndoe6345789/docker-swarm-termina-backend:latest
|
|
docker tag docker-swarm-termina-frontend ghcr.io/johndoe6345789/docker-swarm-termina-frontend:latest
|
|
docker push ghcr.io/johndoe6345789/docker-swarm-termina-backend:latest
|
|
docker push ghcr.io/johndoe6345789/docker-swarm-termina-frontend:latest
|
|
```
|
|
|
|
## License
|
|
|
|
MIT License - see [LICENSE](LICENSE) file for details
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
## Support
|
|
|
|
For issues, questions, or contributions, please open an issue on GitHub.
|