This guide walks you through the initial setup of Sentinel Kit, from deployment to first access.
Before starting, ensure your system meets the following requirements:
git clone https://github.com/codeyourweb/sentinel-kit.git
cd sentinel-kit
Most of the parameters for this stack are defined in the .env file located at the root directory. These settings are loaded before the stack starts. If the stack is already running, you must restart it for any changes to take effect.
The following configuration block defines the active services using Docker Compose profiles and sets the Elasticsearch cluster mode.
COMPOSE_PROFILES=sftp,es-secondary-node,phpmyadmin,kibana,internal-monitoring
ELASTICSEARCH_CLUSTER_MODE=multi-node
You can remove certain services if you don’t need them. Simply remove the corresponding profile from the COMPOSE_PROFILES list:
By default, Elasticsearch is configured as a two-node cluster (multi-node). For environments with limited resources, you can switch to a single-node setup by removing the es-secondary-node profile and updating ELASTICSEARCH_CLUSTER_MODE as shown below:
COMPOSE_PROFILES=sftp,phpmyadmin,kibana,internal-monitoring
ELASTICSEARCH_CLUSTER_MODE=single-node
__Note:__ Switching between single-node and multi-node can be done at any point during the stack’s lifecycle without requiring a complete reinstallation or data loss.
To limit the memory allocated to the Elasticsearch cluster, modify the following variable (default is 4GB):
ELASTICSEARCH_MEMORY_LIMIT=4294967296
🌐 Domain Names The hostnames for the exposed services are customizable here. It is mandatory to map these hostnames to the stack’s IP address either in your DNS configuration or in your local hosts file (for isolated local installations).
| Service | Environment Variable | Default Hostname |
|---|---|---|
| Frontend | SENTINELKIT_FRONTEND_HOSTNAME | sentinel-kit.local |
| Backend API | SENTINELKIT_BACKEND_HOSTNAME | backend.sentinel-kit.local |
| phpMyAdmin | SENTINELKIT_PMA_HOSTNAME | phpmyadmin.sentinel-kit.local |
| Kibana | SENTINELKIT_KIBANA_HOSTNAME | kibana.sentinel-kit.local |
| Grafana | SENTINELKIT_GRAFANA_HOSTNAME | grafana.sentinel-kit.local |
🔒 Secrets and Credentials
For production usage, you can change any of the default credentials below.
⚠️ __Important:__ Once the stack is initialized, changing certain secrets (like database or Elasticsearch credentials) can destabilize services. It is strongly recommended to modify these values only before the initial launch of the stack.
SENTINELKIT_DATAMONITOR_SERVER_TOKEN=9561ffd1b6de615286b9e52a9d5bc3226970449700c9461bdbe4225730b47b20
BACKEND_JWT_PASSPHRASE=f164cfc913d2faf65a1b7bc8ccd4aa8b11b5958bce7c20c8cf159a576f8a75f7
MYSQL_ROOT_PASSWORD=sentinel-kit_r00tp4ssw0rd
MYSQL_USER=sentinel-kit_user
MYSQL_PASSWORD=sentinel-kit_passwd
MYSQL_DATABASE=sentinel-kit_db
GF_SECURITY_ADMIN_USER=sentinel-kit_grafana_admin
GF_SECURITY_ADMIN_PASSWORD=sentinel-kit_grafana_password
SFTP_USER=sentinel-kit_sftp_user
SFTP_PASSWORD=sentinel-kit_sftp_passwd
ELASTICSEARCH_CLUSTER_NAME=sentinel-kit-elasticsearch-cluster
ELASTICSEARCH_PASSWORD=sentinelkit_elastic_passwd
Use the integrated console command as Administrator:
./launcher.sh local-dns-install
Or, if you want to do it manually, add these entries to your system’s hosts file:
Windows: Edit C:\Windows\System32\drivers\etc\hosts
Linux/macOS: Edit /etc/hosts
Add to your hosts file :
127.0.0.1 sentinel-kit.local
127.0.0.1 backend.sentinel-kit.local
127.0.0.1 phpmyadmin.sentinel-kit.local
127.0.0.1 kibana.sentinel-kit.local
127.0.0.1 grafana.sentinel-kit.local
Windows PowerShell:
./launcher.ps1 start
Linux/macOS:
./launcher.sh start
The launcher will:
docker-compose up -d
Note: First startup takes 5-10 minutes as services initialize and dependencies download.
# Using launcher
./launcher status
# Using Docker directly
docker-compose ps
All services should show as “Up” or “running”:
sentinel-kit-app-frontendsentinel-kit-app-backendsentinel-kit-app-db-elasticsearch-es01sentinel-kit-app-db-elasticsearch-es02 (only if you run a elastic cluster)sentinel-kit-app-utils-kibanasentinel-kit-app-utils-grafanasentinel-kit-app-db-mysqlsentinel-kit-app-server-fluentbitsentinel-kit-app-server-caddyOnce services are running:
https://sentinel-kit.local./launcher console
or with a docker exec command:
docker exec -it sentinel-kit-app-backend bash
php bin/console app:users:create
https://sentinel-kit.localadmin (or your chosen username)Upon first login, you’ll see:
Password resetting could be done
backend:/var/www/html# php bin/console app:users:renew-password demo@example.com MyNewPa$$w0rd
[OK] User password reset successful.
And you can also reset user OTP:
backend:/var/www/html# php bin/console app:users:renew-otp demo@example.com
[OK] User OTP reset successful.
Now that your platform is running:
Services won’t start:
Can’t access web interface:
Elasticsearch fails to start:
./launcher logs