Contenido del curso
Traccar
Guía de Compilación y Despliegue de Traccar
Te voy a mostrar como compilar y desplegar traccar en un servidor como digital ocean, aws, etc.
Emmanuel Díaz Leal Hernández
May 25, 2024
Intermediate
Comandos Rápidos
Copia y pega estos comandos para despliegue instantáneo
Despliegue del Backend
git pull && ./gradlew assemble && sudo systemctl stop traccar && sudo cp -r ./target/* /opt/traccar/ && sudo cp -r ./schema/* /opt/traccar/schema && sudo systemctl start traccar
Despliegue del Frontend
git pull && npm i && npm run build && sudo cp -r ./build/* /opt/traccar/web/
Monitoreo en Vivo
tail -f /opt/traccar/logs/tracker-server.log
Configuración del Entorno
Antes de comenzar, verifica tus herramientas:
java -version # Java 11+ requerido
node -v # Node.js 18+ requerido
npm -v # Última versión compatible
Consejo profesional: Usa
nvmpara gestión de versiones de Node.js en entornos de producción
Proceso de Compilación del Backend
Configuración Inicial del Repositorio
git clone --recursive https://github.com/traccar/traccar.git
cd traccar
Flujo de Compilación y Despliegue
# Compilar la aplicación
./gradlew assemble
# Apagado controlado
sudo systemctl stop traccar
# Desplegar artefactos
sudo cp -r ./target/* /opt/traccar/
sudo cp -r ./schema/* /opt/traccar/schema
# Reiniciar el servicio
sudo systemctl start traccar
Advertencia: Siempre detén el servicio antes de reemplazar JARs para evitar bloqueos de archivos
Proceso de Compilación del Frontend
Configuración del Repositorio
git clone https://github.com/traccar/traccar-web.git
cd traccar-web
Pipeline de Compilación y Despliegue
# Resolución de dependencias
npm install
# Compilación para producción
npm run build
# Despliegue en caliente (sin tiempo de inactividad)
sudo cp -r build/* /opt/traccar/web/
Característica: Los despliegues del frontend no requieren reiniciar el servicio - solo actualiza tu navegador
Arsenal de Solución de Problemas
Diagnósticos del Servicio
# Análisis profundo de logs del servicio
sudo journalctl -u traccar
# Streaming de logs en tiempo real
journalctl -u traccar -f
# Verificar estado del servicio
sudo systemctl status traccar
Recuperación de Permisos
# Arreglar problemas de propiedad
sudo chown -R traccar:traccar /opt/traccar/
# Verificar permisos de archivos
ls -la /opt/traccar/
# Resetear permisos si es necesario
sudo chmod -R 755 /opt/traccar/
Estrategias Avanzadas de Despliegue
Script de Compilación Automatizado
Crea tu arsenal de despliegue con deploy.sh:
#!/bin/bash
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${YELLOW}Compilando backend...${NC}"
./gradlew assemble
echo -e "${YELLOW}Deteniendo servicio Traccar...${NC}"
sudo systemctl stop traccar
echo -e "${YELLOW}Desplegando artefactos...${NC}"
sudo cp -r ./target/* /opt/traccar/
sudo cp -r ./schema/* /opt/traccar/schema
echo -e "${YELLOW}Iniciando servicio Traccar...${NC}"
sudo systemctl start traccar
echo -e "${GREEN}¡Despliegue completado!${NC}"
# Verificación de salud con lógica de reintentos
sleep 5
REINTENTOS=3
for i in $(seq 1 $REINTENTOS); do
if curl -f http://localhost:8082 > /dev/null 2>&1; then
echo -e "${GREEN}¡El servicio está funcionando correctamente!${NC}"
exit 0
else
echo -e "${YELLOW}Intento de verificación $i/$REINTENTOS falló, reintentando...${NC}"
sleep 3
fi
done
echo -e "${RED}La verificación de salud falló después de $REINTENTOS intentos${NC}"
exit 1
Hazlo ejecutable:
chmod +x deploy.sh && ./deploy.sh
Optimización del Flujo de Desarrollo
# Recarga en vivo para desarrollo del frontend
npm run dev
# Monitoreo de logs en segundo plano con filtros
tail -f /opt/traccar/logs/tracker-server.log | grep -E "(ERROR|WARN|Exception)"
# Vigilar cambios en archivos durante desarrollo
find /opt/traccar -name "*.jar" | entr -r sudo systemctl restart traccar
Monitoreo de Salud en Producción
# Verificación integral del servicio
curl -f http://localhost:8082 && echo "Servicio funcionando" || echo "Servicio caído"
# Verificación de puertos
netstat -tlnp | grep :8082
# Monitoreo de uso de memoria
ps aux | grep traccar | awk '{print $2, $4, $11}' | head -1
# Verificación de espacio en disco para logs
df -h /opt/traccar/logs/
Estrategia de Rollback
# Respaldar despliegue actual
sudo cp -r /opt/traccar/target /opt/traccar/target.backup.$(date +%Y%m%d_%H%M%S)
# Procedimiento de rollback rápido
sudo systemctl stop traccar
sudo cp -r /opt/traccar/target.backup.* /opt/traccar/target/
sudo systemctl start traccar
Mejores Prácticas para Producción
Configuración de Variables de Entorno
export TRACCAR_HOME=/opt/traccar
export JAVA_OPTS="-Xms1g -Xmx2g -server"
Configuración de Rotación de Logs
# Agregar a /etc/logrotate.d/traccar
/opt/traccar/logs/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 644 traccar traccar
postrotate
systemctl reload traccar
endscript
}
Hardening del Servicio Systemd
# Seguridad mejorada del servicio
sudo systemctl edit traccar
Agregar configuración de override:
[Service]
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/opt/traccar
Comandos de Verificación Rápida
Estado del Sistema
# Verificar que todos los componentes estén funcionando
systemctl is-active traccar && echo "Servicio activo"
curl -s http://localhost:8082 > /dev/null && echo "API respondiendo"
Limpieza de Logs
# Limpiar logs antiguos manualmente
find /opt/traccar/logs -name "*.log.*" -mtime +30 -delete
# Verificar tamaño de logs actuales
du -sh /opt/traccar/logs/
Monitoreo de Performance
# CPU y memoria del proceso Traccar
top -p $(pgrep -f traccar)
# Conexiones de red activas
ss -tuln | grep :8082