Sibedas PBG Web - Documentation
Dokumentasi lengkap untuk setup dan penggunaan aplikasi Sibedas PBG Web.
📋 Table of Contents
- Quick Start
- Architecture
- Environment Setup
- Production Deployment
- SSL Configuration
- Monitoring
- Troubleshooting
🚀 Quick Start
Prerequisites
- Docker & Docker Compose
- Domain name (untuk production)
- Port 80 dan 443 terbuka (untuk Let's Encrypt)
Local Development
# Clone repository
git clone <repository-url>
cd sibedas-pbg-web
# Setup local environment
./scripts/setup-local.sh
Production Deployment
# Copy environment file
cp env.production.example .env
# Edit environment variables
nano .env
# Deploy dengan reverse proxy dan SSL
./scripts/setup-reverse-proxy.sh setup
🏗️ Architecture
Local Development
Browser → Port 8000 → Nginx → PHP-FPM → MariaDB
Production dengan Reverse Proxy
Internet → Reverse Proxy (80/443) → Internal Nginx → PHP-FPM → MariaDB
Components
- Reverse Proxy Nginx: Entry point, SSL termination, routing
- Internal Nginx: Serves Sibedas application
- Application Container: PHP-FPM with Supervisor (queue & scheduler)
- Database Container: MariaDB with backup import
⚙️ Environment Setup
Required Variables
# Domain & SSL
DOMAIN=sibedas.yourdomain.com
EMAIL=admin@yourdomain.com
SSL_TYPE=self-signed # atau letsencrypt
# Database
DB_PASSWORD=your_secure_password
MYSQL_ROOT_PASSWORD=your_root_password
# Laravel
APP_KEY=base64:your_app_key_here
APP_URL=https://sibedas.yourdomain.com
Generate App Key
docker-compose exec app php artisan key:generate
🚀 Production Deployment
Step-by-Step Production Deployment
1. Server Preparation
# Update system
sudo apt update && sudo apt upgrade -y
# Install Docker & Docker Compose
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Install Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Logout and login again for group changes
exit
# SSH back to server
2. Clone Repository
# Clone project
git clone <repository-url>
cd sibedas-pbg-web
# Set proper permissions
chmod +x scripts/*.sh
3. Environment Configuration
# Copy environment template
cp env.production.example .env
# Edit environment variables
nano .env
Required Environment Variables:
# Domain & SSL
DOMAIN=sibedas.yourdomain.com
EMAIL=admin@yourdomain.com
SSL_TYPE=letsencrypt # atau self-signed untuk testing
# Database
DB_DATABASE=sibedas
DB_USERNAME=sibedas_user
DB_PASSWORD=your_secure_database_password
MYSQL_ROOT_PASSWORD=your_secure_root_password
# Laravel
APP_NAME="Sibedas PBG Web"
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:your_app_key_here
APP_URL=https://sibedas.yourdomain.com
VITE_APP_URL=https://sibedas.yourdomain.com
# Mail Configuration
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your_email@gmail.com
MAIL_FROM_NAME="Sibedas PBG Web"
# Google Sheets API
SPREAD_SHEET_ID=your_google_sheets_id_here
4. Generate Application Key
# Generate Laravel app key
php artisan key:generate --show
# Copy the generated key to .env file
5. Deploy Application
# Option A: Full deployment with SSL (Recommended)
./scripts/setup-reverse-proxy.sh setup
# Option B: Deploy without SSL first
./scripts/deploy-production.sh deploy
6. SSL Setup (if not done in step 5)
# For Let's Encrypt (Production)
DOMAIN=yourdomain.com EMAIL=admin@yourdomain.com ./scripts/setup-ssl.sh letsencrypt
# For Self-Signed (Testing)
./scripts/setup-ssl.sh self-signed
7. Verify Deployment
# Check container status
docker-compose ps
# Check application health
curl -f http://localhost/health-check
# Check SSL certificate
./scripts/setup-ssl.sh check
# View logs
docker-compose logs nginx-proxy
docker-compose logs app
Scripts yang Diperlukan
Essential Scripts (Wajib)
scripts/setup-reverse-proxy.sh- Setup lengkap reverse proxy dan SSLscripts/deploy-production.sh- Deployment productionscripts/setup-ssl.sh- Setup SSL certificates
Optional Scripts
scripts/setup-local.sh- Setup local developmentscripts/import-sibedas-database.sh- Manual database import (otomatis via docker-compose)
Scripts yang Tidak Diperlukan
scripts/build-and-zip.sh- Tidak diperlukan karena menggunakan Docker build
Deployment Commands Summary
# 1. Setup environment
cp env.production.example .env
nano .env
# 2. Deploy with SSL (Recommended)
./scripts/setup-reverse-proxy.sh setup
# 3. Or deploy step by step
./scripts/deploy-production.sh deploy
./scripts/setup-ssl.sh letsencrypt
# 4. Check status
./scripts/setup-reverse-proxy.sh status
🔒 SSL Configuration
Self-Signed Certificate
SSL_TYPE=self-signed ./scripts/setup-reverse-proxy.sh setup
Let's Encrypt Certificate
DOMAIN=myapp.com EMAIL=admin@myapp.com SSL_TYPE=letsencrypt ./scripts/setup-reverse-proxy.sh setup
SSL Management
# Check certificate
./scripts/setup-ssl.sh check
# Renew certificate
./scripts/setup-ssl.sh renew
📊 Monitoring
Container Status
# Check all containers
docker-compose ps
# Check specific service
docker-compose ps app
Logs
# Application logs
docker-compose logs app
# Reverse proxy logs
docker-compose logs nginx-proxy
# Database logs
docker-compose logs db
# Follow logs
docker-compose logs -f nginx-proxy
Health Checks
# Application health
curl -f http://localhost/health-check
# SSL certificate
./scripts/setup-ssl.sh check
🛠️ Troubleshooting
SSL Issues
# Check certificate files
docker exec sibedas_nginx_proxy ls -la /etc/nginx/ssl/
# Test SSL connection
openssl s_client -connect yourdomain.com:443
# Check nginx config
docker exec sibedas_nginx_proxy nginx -t
Container Issues
# Restart services
docker-compose restart
# Check network
docker network ls
# Check volumes
docker volume ls
Database Issues
# Import database manually
./scripts/import-sibedas-database.sh
# Check database connection
docker exec sibedas_app php artisan db:monitor
Performance Issues
# Check resource usage
docker stats
# Check nginx access logs
docker exec sibedas_nginx_proxy tail -f /var/log/nginx/sibedas_access.log
🔧 Maintenance
Backup
# Database backup
docker exec sibedas_db mysqldump -u root -p sibedas > backup.sql
# Volume backup
docker run --rm -v sibedas_app_storage:/data -v $(pwd):/backup alpine tar czf /backup/storage.tar.gz -C /data .
Update Application
# Pull latest changes
git pull
# Rebuild and restart
docker-compose up -d --build
SSL Certificate Renewal
# Manual renewal
./scripts/setup-ssl.sh renew
# Automatic renewal (cron)
0 12 * * * /path/to/sibedas-pbg-web/scripts/setup-ssl.sh renew
📁 Project Structure
sibedas-pbg-web/
├── docker/ # Docker configurations
│ ├── nginx/ # Nginx configs
│ ├── mysql/ # MySQL configs
│ └── supervisor/ # Supervisor configs
├── scripts/ # Deployment scripts
│ ├── setup-local.sh # Local development
│ ├── setup-reverse-proxy.sh # Reverse proxy setup
│ ├── deploy-production.sh # Production deployment
│ ├── setup-ssl.sh # SSL setup
│ └── import-sibedas-database.sh # Database import
├── docs/ # Documentation
├── docker-compose.yml # Production compose
├── docker-compose.local.yml # Local development compose
└── README.md # Main README
🆘 Support
Common Commands
# Start services
docker-compose up -d
# Stop services
docker-compose down
# View logs
docker-compose logs [service]
# Execute commands
docker-compose exec app php artisan [command]
# Check status
./scripts/setup-reverse-proxy.sh status
Getting Help
- Check logs:
docker-compose logs [service] - Check status:
./scripts/setup-reverse-proxy.sh status - Restart services:
docker-compose restart - Review this documentation