301 lines
6.0 KiB
Markdown
301 lines
6.0 KiB
Markdown
# Calypso Systemd Services
|
|
|
|
## Overview
|
|
Calypso menggunakan systemd untuk mengelola kedua service (backend API dan frontend dev server) secara otomatis.
|
|
|
|
## Services
|
|
|
|
### 1. Backend API Service
|
|
**File**: `/etc/systemd/system/calypso-api.service`
|
|
|
|
**Description**: Calypso Backend API Server (Go)
|
|
- Port: 8080
|
|
- Binary: `/development/calypso/backend/bin/calypso-api`
|
|
- User: root
|
|
- Auto-restart: Yes
|
|
|
|
### 2. Frontend Service
|
|
**File**: `/etc/systemd/system/calypso-frontend.service`
|
|
|
|
**Description**: Calypso Frontend Development Server (Vite + React)
|
|
- Port: 3000
|
|
- Working Directory: `/development/calypso/frontend`
|
|
- Command: `npm run dev`
|
|
- User: root
|
|
- Auto-restart: Yes
|
|
- Depends on: calypso-api.service (optional)
|
|
|
|
## Service Management
|
|
|
|
### Start Services
|
|
```bash
|
|
# Backend
|
|
sudo systemctl start calypso-api
|
|
|
|
# Frontend
|
|
sudo systemctl start calypso-frontend
|
|
|
|
# Both
|
|
sudo systemctl start calypso-api calypso-frontend
|
|
```
|
|
|
|
### Stop Services
|
|
```bash
|
|
# Backend
|
|
sudo systemctl stop calypso-api
|
|
|
|
# Frontend
|
|
sudo systemctl stop calypso-frontend
|
|
|
|
# Both
|
|
sudo systemctl stop calypso-api calypso-frontend
|
|
```
|
|
|
|
### Restart Services
|
|
```bash
|
|
# Backend
|
|
sudo systemctl restart calypso-api
|
|
|
|
# Frontend
|
|
sudo systemctl restart calypso-frontend
|
|
|
|
# Both
|
|
sudo systemctl restart calypso-api calypso-frontend
|
|
```
|
|
|
|
### Check Status
|
|
```bash
|
|
# Backend
|
|
sudo systemctl status calypso-api
|
|
|
|
# Frontend
|
|
sudo systemctl status calypso-frontend
|
|
|
|
# Quick check both
|
|
sudo systemctl is-active calypso-api calypso-frontend
|
|
```
|
|
|
|
### Enable/Disable Auto-start on Boot
|
|
```bash
|
|
# Enable (already enabled by default)
|
|
sudo systemctl enable calypso-api
|
|
sudo systemctl enable calypso-frontend
|
|
|
|
# Disable
|
|
sudo systemctl disable calypso-api
|
|
sudo systemctl disable calypso-frontend
|
|
|
|
# Check if enabled
|
|
sudo systemctl is-enabled calypso-api calypso-frontend
|
|
```
|
|
|
|
## Viewing Logs
|
|
|
|
### Real-time Logs
|
|
```bash
|
|
# Backend logs (follow mode)
|
|
sudo journalctl -u calypso-api -f
|
|
|
|
# Frontend logs (follow mode)
|
|
sudo journalctl -u calypso-frontend -f
|
|
|
|
# Both services
|
|
sudo journalctl -u calypso-api -u calypso-frontend -f
|
|
```
|
|
|
|
### Recent Logs
|
|
```bash
|
|
# Last 50 lines
|
|
sudo journalctl -u calypso-api -n 50
|
|
|
|
# Last 100 lines
|
|
sudo journalctl -u calypso-frontend -n 100
|
|
|
|
# Today's logs
|
|
sudo journalctl -u calypso-api --since today
|
|
|
|
# Last hour
|
|
sudo journalctl -u calypso-frontend --since "1 hour ago"
|
|
```
|
|
|
|
### Search Logs
|
|
```bash
|
|
# Search for errors
|
|
sudo journalctl -u calypso-api | grep -i error
|
|
|
|
# Search for specific text
|
|
sudo journalctl -u calypso-frontend | grep "dataset"
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Service Won't Start
|
|
|
|
1. **Check service status**:
|
|
```bash
|
|
sudo systemctl status calypso-frontend --no-pager
|
|
```
|
|
|
|
2. **Check logs**:
|
|
```bash
|
|
sudo journalctl -u calypso-frontend -n 50
|
|
```
|
|
|
|
3. **Verify binary/command exists**:
|
|
```bash
|
|
# Backend
|
|
ls -lh /development/calypso/backend/bin/calypso-api
|
|
|
|
# Frontend
|
|
which npm
|
|
cd /development/calypso/frontend && npm --version
|
|
```
|
|
|
|
4. **Check permissions**:
|
|
```bash
|
|
sudo systemctl cat calypso-frontend
|
|
```
|
|
|
|
### Service Keeps Restarting
|
|
|
|
1. **Check restart limit**:
|
|
```bash
|
|
sudo systemctl status calypso-frontend
|
|
```
|
|
|
|
2. **View detailed logs**:
|
|
```bash
|
|
sudo journalctl -u calypso-frontend --since "5 minutes ago"
|
|
```
|
|
|
|
3. **Test manual start**:
|
|
```bash
|
|
# Frontend
|
|
cd /development/calypso/frontend
|
|
npm run dev
|
|
|
|
# Backend
|
|
cd /development/calypso/backend
|
|
./bin/calypso-api -config config.yaml.example
|
|
```
|
|
|
|
### Port Already in Use
|
|
|
|
```bash
|
|
# Check what's using port 3000
|
|
sudo ss -tlnp | grep 3000
|
|
|
|
# Check what's using port 8080
|
|
sudo ss -tlnp | grep 8080
|
|
|
|
# Kill process if needed
|
|
sudo kill <PID>
|
|
```
|
|
|
|
## Service Configuration
|
|
|
|
### Backend Environment Variables
|
|
Backend menggunakan environment variables yang didefinisikan di service file.
|
|
|
|
Edit `/etc/systemd/system/calypso-api.service`:
|
|
```ini
|
|
[Service]
|
|
Environment="CALYPSO_DB_PASSWORD=your_password"
|
|
Environment="CALYPSO_JWT_SECRET=your_secret"
|
|
```
|
|
|
|
Setelah edit:
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl restart calypso-api
|
|
```
|
|
|
|
### Frontend Environment Variables
|
|
Frontend menggunakan NODE_ENV=development.
|
|
|
|
Edit `/etc/systemd/system/calypso-frontend.service`:
|
|
```ini
|
|
[Service]
|
|
Environment="NODE_ENV=development"
|
|
Environment="VITE_API_URL=http://localhost:8080"
|
|
```
|
|
|
|
Setelah edit:
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl restart calypso-frontend
|
|
```
|
|
|
|
## Monitoring
|
|
|
|
### Check if Services are Running
|
|
```bash
|
|
# Quick check
|
|
sudo systemctl is-active calypso-api calypso-frontend
|
|
|
|
# Detailed status
|
|
sudo systemctl status calypso-api calypso-frontend --no-pager
|
|
```
|
|
|
|
### Monitor Resource Usage
|
|
```bash
|
|
# Using systemd-cgtop
|
|
sudo systemd-cgtop
|
|
|
|
# Using journalctl metrics
|
|
sudo journalctl -u calypso-api | grep -i "memory\|cpu"
|
|
```
|
|
|
|
### Service Uptime
|
|
```bash
|
|
# Backend uptime
|
|
systemctl show calypso-api --property=ActiveEnterTimestamp
|
|
|
|
# Frontend uptime
|
|
systemctl show calypso-frontend --property=ActiveEnterTimestamp
|
|
```
|
|
|
|
## Access URLs
|
|
|
|
- **Frontend Portal**: http://10.10.14.16:3000 or http://localhost:3000
|
|
- **Backend API**: http://10.10.14.16:8080 or http://localhost:8080
|
|
- **API Health Check**: http://localhost:8080/api/v1/health
|
|
|
|
## Systemd Service Files
|
|
|
|
### Backend Service File Location
|
|
`/etc/systemd/system/calypso-api.service`
|
|
|
|
### Frontend Service File Location
|
|
`/etc/systemd/system/calypso-frontend.service`
|
|
|
|
### View Service Configuration
|
|
```bash
|
|
# Backend
|
|
sudo systemctl cat calypso-api
|
|
|
|
# Frontend
|
|
sudo systemctl cat calypso-frontend
|
|
```
|
|
|
|
## Boot Sequence
|
|
|
|
On system boot:
|
|
1. Network is up
|
|
2. calypso-api service starts
|
|
3. calypso-frontend service starts (waits for API if configured)
|
|
4. Both services are ready
|
|
|
|
## Notes
|
|
|
|
- **Backend**: Production-grade service using compiled Go binary
|
|
- **Frontend**: Development server (Vite) - for production, build static files and serve with nginx
|
|
- **Auto-restart**: Both services akan restart otomatis jika crash
|
|
- **Logs**: Semua logs tersimpan di systemd journal
|
|
- **Dependencies**: Frontend wants backend (optional dependency)
|
|
|
|
---
|
|
**Date**: 2025-12-25
|
|
**Status**: ✅ Both Services Active and Enabled
|
|
**Boot**: ✅ Auto-start enabled
|