Files
2025-06-26 18:28:26 +07:00
..
2025-06-26 18:28:26 +07:00

Sibedas PBG Web - Documentation

Dokumentasi lengkap untuk setup dan penggunaan aplikasi Sibedas PBG Web.

📋 Table of Contents

  1. Quick Start
  2. Architecture
  3. Environment Setup
  4. Production Deployment
  5. SSL Configuration
  6. Monitoring
  7. 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 SSL
  • scripts/deploy-production.sh - Deployment production
  • scripts/setup-ssl.sh - Setup SSL certificates

Optional Scripts

  • scripts/setup-local.sh - Setup local development
  • scripts/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

  1. Check logs: docker-compose logs [service]
  2. Check status: ./scripts/setup-reverse-proxy.sh status
  3. Restart services: docker-compose restart
  4. Review this documentation

📚 Additional Resources