226 lines
5.1 KiB
Markdown
226 lines
5.1 KiB
Markdown
# Frontend Access Setup Complete
|
|
**Tanggal:** 2025-01-09
|
|
**Reverse Proxy:** Nginx
|
|
**Status:** ✅ **CONFIGURED & RUNNING**
|
|
|
|
## Configuration Summary
|
|
|
|
### Nginx Configuration
|
|
- **Config File:** `/etc/nginx/sites-available/calypso`
|
|
- **Enabled:** `/etc/nginx/sites-enabled/calypso`
|
|
- **Port:** 80 (HTTP)
|
|
- **Root Directory:** `/opt/calypso/web`
|
|
- **API Backend:** `http://localhost:8080`
|
|
|
|
### Service Status
|
|
- ✅ **Nginx:** Running
|
|
- ✅ **Calypso API:** Running on port 8080
|
|
- ✅ **Frontend Files:** Served from `/opt/calypso/web`
|
|
|
|
## Access URLs
|
|
|
|
### Local Access
|
|
- **Frontend:** http://localhost/
|
|
- **API:** http://localhost/api/v1/health
|
|
- **Login Page:** http://localhost/login
|
|
|
|
### Network Access
|
|
- **Frontend:** http://<server-ip>/
|
|
- **API:** http://<server-ip>/api/v1/health
|
|
|
|
## Nginx Configuration Details
|
|
|
|
### Static Files Serving
|
|
```nginx
|
|
root /opt/calypso/web;
|
|
index index.html;
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
```
|
|
|
|
### API Proxy
|
|
```nginx
|
|
location /api {
|
|
proxy_pass http://localhost:8080;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
```
|
|
|
|
### WebSocket Support
|
|
```nginx
|
|
location /ws {
|
|
proxy_pass http://localhost:8080;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_read_timeout 86400s;
|
|
proxy_send_timeout 86400s;
|
|
}
|
|
```
|
|
|
|
### Terminal WebSocket
|
|
```nginx
|
|
location /api/v1/system/terminal/ws {
|
|
proxy_pass http://localhost:8080;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_read_timeout 86400s;
|
|
proxy_send_timeout 86400s;
|
|
}
|
|
```
|
|
|
|
## Features Enabled
|
|
|
|
✅ **Static File Serving**
|
|
- Frontend files served from `/opt/calypso/web`
|
|
- SPA routing support (try_files fallback to index.html)
|
|
- Static asset caching (1 year)
|
|
|
|
✅ **API Proxy**
|
|
- All `/api/*` requests proxied to backend
|
|
- Proper headers forwarding
|
|
- Timeout configuration
|
|
|
|
✅ **WebSocket Support**
|
|
- `/ws` endpoint for monitoring events
|
|
- `/api/v1/system/terminal/ws` for terminal console
|
|
- Long timeout for persistent connections
|
|
|
|
✅ **Security Headers**
|
|
- X-Frame-Options: SAMEORIGIN
|
|
- X-Content-Type-Options: nosniff
|
|
- X-XSS-Protection: 1; mode=block
|
|
|
|
✅ **Performance**
|
|
- Gzip compression enabled
|
|
- Static asset caching
|
|
- Optimized timeouts
|
|
|
|
## Service Management
|
|
|
|
### Nginx Commands
|
|
```bash
|
|
# Start/Stop/Restart
|
|
sudo systemctl start nginx
|
|
sudo systemctl stop nginx
|
|
sudo systemctl restart nginx
|
|
|
|
# Reload configuration (without downtime)
|
|
sudo systemctl reload nginx
|
|
|
|
# Check status
|
|
sudo systemctl status nginx
|
|
|
|
# Test configuration
|
|
sudo nginx -t
|
|
```
|
|
|
|
### View Logs
|
|
```bash
|
|
# Access logs
|
|
sudo tail -f /var/log/nginx/calypso-access.log
|
|
|
|
# Error logs
|
|
sudo tail -f /var/log/nginx/calypso-error.log
|
|
|
|
# All Nginx logs
|
|
sudo journalctl -u nginx -f
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Test Frontend
|
|
```bash
|
|
# Check if frontend is accessible
|
|
curl http://localhost/
|
|
|
|
# Check if index.html is served
|
|
curl http://localhost/index.html
|
|
```
|
|
|
|
### Test API Proxy
|
|
```bash
|
|
# Health check
|
|
curl http://localhost/api/v1/health
|
|
|
|
# Should return JSON response
|
|
```
|
|
|
|
### Test WebSocket
|
|
```bash
|
|
# Test WebSocket connection (requires wscat or similar)
|
|
wscat -c ws://localhost/ws
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Frontend Not Loading
|
|
1. Check Nginx status: `sudo systemctl status nginx`
|
|
2. Check Nginx config: `sudo nginx -t`
|
|
3. Check file permissions: `ls -la /opt/calypso/web/`
|
|
4. Check Nginx error logs: `sudo tail -f /var/log/nginx/calypso-error.log`
|
|
|
|
### API Calls Failing
|
|
1. Check backend is running: `sudo systemctl status calypso-api`
|
|
2. Test backend directly: `curl http://localhost:8080/api/v1/health`
|
|
3. Check Nginx proxy logs: `sudo tail -f /var/log/nginx/calypso-access.log`
|
|
|
|
### WebSocket Not Working
|
|
1. Check WebSocket headers in browser DevTools
|
|
2. Verify backend WebSocket endpoint is working
|
|
3. Check Nginx WebSocket configuration
|
|
4. Verify proxy_set_header Upgrade and Connection are set
|
|
|
|
### Permission Issues
|
|
1. Check file ownership: `ls -la /opt/calypso/web/`
|
|
2. Check Nginx user: `grep user /etc/nginx/nginx.conf`
|
|
3. Ensure files are readable: `sudo chmod -R 755 /opt/calypso/web`
|
|
|
|
## Firewall Configuration
|
|
|
|
If firewall is enabled, allow HTTP traffic:
|
|
```bash
|
|
# UFW
|
|
sudo ufw allow 80/tcp
|
|
sudo ufw allow 'Nginx Full'
|
|
|
|
# firewalld
|
|
sudo firewall-cmd --permanent --add-service=http
|
|
sudo firewall-cmd --reload
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ Frontend accessible via Nginx
|
|
2. ⏭️ Setup SSL/TLS (HTTPS) - Recommended for production
|
|
3. ⏭️ Configure domain name (if applicable)
|
|
4. ⏭️ Setup monitoring/alerting
|
|
5. ⏭️ Configure backup strategy
|
|
|
|
## SSL/TLS Setup (Optional)
|
|
|
|
For production, setup HTTPS:
|
|
|
|
```bash
|
|
# Install Certbot
|
|
sudo apt-get install certbot python3-certbot-nginx
|
|
|
|
# Get certificate (replace with your domain)
|
|
sudo certbot --nginx -d your-domain.com
|
|
|
|
# Auto-renewal is configured automatically
|
|
```
|
|
|
|
---
|
|
|
|
**Status:** ✅ **FRONTEND ACCESSIBLE**
|
|
**URL:** http://localhost/ (or http://<server-ip>/)
|
|
**API:** http://localhost/api/v1/health
|