Ejecutar HitKeep como un único binario en Linux
La instalación mediante binario es la opción autogestionada más pequeña de HitKeep: un ejecutable para Linux, DuckDB y NSQ integrados y ninguna base de datos, caché ni cola externa. Úsala cuando necesites analítica web en un VPS con pocos recursos, una máquina virtual, una Raspberry Pi, un servidor físico o una red restringida donde Docker no sea la opción adecuada.
HitKeep publica binarios de cada versión únicamente para servidores Linux: linux/amd64 y linux/arm64. Descarga el archivo correspondiente, hazlo ejecutable y ejecútalo.
Consulta Datos y límites para citar el tamaño del binario, el uso de memoria, los límites de almacenamiento, los formatos de exportación y lo que HitKeep no pretende resolver. Los binarios actuales para Linux ocupan alrededor de 100 MB.
Objetivos de compilación compatibles
Section titled “Objetivos de compilación compatibles”| Artefacto | Objetivo |
|---|---|
hitkeep-linux-amd64 | Servidores y máquinas virtuales Linux de 64 bits |
hitkeep-linux-arm64 | Servidores Linux ARM64, Raspberry Pi, AWS Graviton y Hetzner CAX |
| Imagen Docker | linux/amd64 y linux/arm64 |
Los binarios sin empaquetar están pensados para hosts Linux con una glibc moderna. Usa Docker Compose cuando necesites la imagen de contenedor o cuando la distribución del host sea anterior a la versión base del binario.
Por tanto, la instalación mediante binario es adecuada para:
- Servidores físicos y máquinas virtuales
- Entornos con redes restringidas
- Raspberry Pi y servidores ARM (AWS Graviton, Hetzner CAX)
- Organizaciones que necesitan la menor superficie de ataque posible
Inicio rápido
Section titled “Inicio rápido”Descargar el binario
Section titled “Descargar el binario”Descarga desde GitHub Releases la última versión para tu arquitectura:
# Linux AMD64 (most common VPS/server)curl -L https://github.com/pascalebeier/hitkeep/releases/latest/download/hitkeep-linux-amd64 \ -o hitkeep && chmod +x hitkeep && sudo mv hitkeep /usr/local/bin/hitkeep
# Linux ARM64 (Raspberry Pi, AWS Graviton, Hetzner CAX)curl -L https://github.com/pascalebeier/hitkeep/releases/latest/download/hitkeep-linux-arm64 \ -o hitkeep && chmod +x hitkeep && sudo mv hitkeep /usr/local/bin/hitkeepEn redes restringidas, descarga el binario y SHA256SUMS desde la página de la versión de GitHub en una máquina conectada a Internet, verifica la suma de comprobación y transfiere después el binario verificado al servidor de destino.
Ejecutar con systemd
Section titled “Ejecutar con systemd”En servidores Linux de producción, usa systemd para que HitKeep se inicie al arrancar y se reinicie si falla.
Cada flag tiene una variable de entorno HITKEEP_* equivalente en una relación 1:1 (--public-url ↔ HITKEEP_PUBLIC_URL). Por tanto, puedes configurar todo mediante el entorno si lo prefieres. La unidad siguiente mezcla ambos métodos únicamente para que los secretos no aparezcan en la línea de comandos. La referencia de configuración enumera ambas formas para cada opción.
1. Crea un usuario de servicio y un directorio de datos específicos:
sudo useradd -r -s /bin/false hitkeepsudo mkdir -p /var/lib/hitkeep/data /var/lib/hitkeep/archivesudo chown -R hitkeep:hitkeep /var/lib/hitkeep2. Crea /etc/systemd/system/hitkeep.service:
[Unit]Description=HitKeep AnalyticsAfter=network.target
[Service]Type=simpleUser=hitkeepGroup=hitkeepWorkingDirectory=/var/lib/hitkeep
# Sensitive values via environment (not visible in ps aux).# Generate the secret with: openssl rand -hex 32Environment="HITKEEP_JWT_SECRET=change-this-to-a-long-random-string"Environment="HITKEEP_MAIL_PASSWORD=your-smtp-password"
# General configuration via flagsExecStart=/usr/local/bin/hitkeep \ --public-url=https://analytics.example.com \ --db-path=/var/lib/hitkeep/data/hitkeep.db \ --data-path=/var/lib/hitkeep/data \ --archive-path=/var/lib/hitkeep/archive \ --http-addr=:8080
Restart=on-failureRestartSec=5s
[Install]WantedBy=multi-user.targetTambién puedes usar un archivo de entorno adicional para los secretos, una opción más segura que evita guardarlos en la unidad:
sudo mkdir -p /etc/systemd/system/hitkeep.service.dsudo tee /etc/systemd/system/hitkeep.service.d/secrets.conf << 'EOF'[Service]Environment="HITKEEP_JWT_SECRET=your-secret-here"EOFsudo chmod 600 /etc/systemd/system/hitkeep.service.d/secrets.conf3. Activa e inicia el servicio:
sudo systemctl daemon-reloadsudo systemctl enable --now hitkeepsudo systemctl status hitkeepVerificación
Section titled “Verificación”Confirma la versión instalada, el estado del servicio y la disponibilidad de la base de datos:
hitkeep --versionsudo systemctl --no-pager status hitkeepcurl --fail http://127.0.0.1:8080/healthzcurl --fail http://127.0.0.1:8080/readyz/healthz confirma que el proceso está activo. /readyz confirma que la base de datos compartida y todas las bases de datos de tenants abiertas están listas.
Publicar HitKeep en un subdirectorio
Section titled “Publicar HitKeep en un subdirectorio”La mayoría de instalaciones deberían usar un hostname dedicado, como https://analytics.example.com. Si necesitas publicar HitKeep debajo de otro sitio, define HITKEEP_PUBLIC_URL con la ruta externa completa:
Environment="HITKEEP_PUBLIC_URL=https://www.example.net/hitkeep/"o bien:
hitkeep --public-url=https://www.example.net/hitkeep/El proxy inverso debe reenviar el mismo prefijo de ruta a HitKeep sin eliminarlo mediante una reescritura:
www.example.net { handle /hitkeep* { reverse_proxy 127.0.0.1:8080 }}Cuando la URL pública contiene /hitkeep/, el panel inserta <base href="/hitkeep/" />, las llamadas a la API permanecen bajo /hitkeep/api/... y el fragmento del tracker se puede instalar así:
<script async src="https://www.example.net/hitkeep/hk.js"></script>Si Web Vitals está activado, hk.js carga https://www.example.net/hitkeep/hk-vitals.js y envía muestras a /hitkeep/ingest/web-vitals. Las páginas vistas y los eventos automáticos siguen la misma regla para /hitkeep/ingest y /hitkeep/ingest/event.
En el modo con prefijo de ruta, HitKeep no expone rutas raíz /api/..., /hk.js ni rutas alternativas del panel. Los endpoints locales /healthz y /readyz siguen disponibles para comprobaciones de procesos, contenedores y Kubernetes.
Solución de problemas
Section titled “Solución de problemas”El inicio falla con failed to get final advertise address
Section titled “El inicio falla con failed to get final advertise address”Si HitKeep termina inmediatamente con:
failed to get final advertise address: no private IP address found, and explicit IP not providedla capa de clúster integrada no ha podido determinar qué dirección IP anunciar para el tráfico gossip. Esto suele ocurrir en entornos locales o de desarrollo donde se usa 0.0.0.0:7946 como dirección de enlace predeterminada, pero el host no tiene una dirección de red privada detectable.
Para una ejecución local de un único nodo, enlaza de forma explícita la dirección del clúster al loopback:
./hitkeep --bind-addr=127.0.0.1:7946O mediante una variable de entorno:
HITKEEP_BIND_ADDR=127.0.0.1:7946 ./hitkeepEn despliegues multinodo, define --bind-addr o HITKEEP_BIND_ADDR con una dirección privada real accesible desde los demás nodos, no con el loopback.
Actualización
Section titled “Actualización”Lee las notas de la última versión y crea una copia de seguridad completa. Descarga el binario nuevo para la misma arquitectura con el comando del inicio rápido y sustituye el ejecutable mientras el servicio está detenido:
sudo systemctl stop hitkeepsudo install -m 0755 ./hitkeep /usr/local/bin/hitkeepsudo systemctl start hitkeepcurl --fail http://127.0.0.1:8080/readyzhitkeep --versionConserva el binario anterior y la copia previa a la actualización hasta que tanto la comprobación de disponibilidad como una solicitud de seguimiento funcionen. Revisa las notas de la versión antes de volver a una versión anterior; una versión con migraciones de datos puede impedir ejecutar un binario anterior sobre los datos actualizados.
Copias de seguridad
Section titled “Copias de seguridad”Para un servicio en ejecución, usa preferentemente el worker integrado de copias de seguridad con checkpoints de HitKeep. Añade estas entradas a la sección [Service] de la unidad o a un archivo adicional de systemd y reinicia el servicio:
Environment="HITKEEP_BACKUP_PATH=/var/lib/hitkeep/backups"Environment="HITKEEP_BACKUP_INTERVAL=60"Environment="HITKEEP_BACKUP_RETENTION=24"Para copiar directamente el sistema de archivos, detén primero HitKeep para evitar que la base de datos y el WAL cambien por separado:
sudo systemctl stop hitkeeprsync -a /var/lib/hitkeep/data/ /backup/hitkeep-$(date +%Y%m%d)/rsync -a /var/lib/hitkeep/archive/ /backup/hitkeep-archive-$(date +%Y%m%d)/sudo systemctl start hitkeepLa copia debe incluir el HITKEEP_DB_PATH configurado, todo el árbol HITKEEP_DATA_PATH con las bases de datos de los tenants en tenants/*/hitkeep.db y cualquier ruta de archivos que necesites conservar. Consulta Copias de seguridad y restauración para ver comandos de restauración y opciones de S3.
Contenido relacionado
Section titled “Contenido relacionado”- Proxies de confianza — obligatorio si ejecutas HitKeep detrás de un proxy inverso
- Referencia de configuración
- Datos y límites
- Retención de datos
¿No quieres administrar servicios systemd, actualizaciones y copias de seguridad? Compara HitKeep Cloud.