Skip to content

Instantly share code, notes, and snippets.

@rsandrade
Last active April 2, 2025 10:35
Show Gist options
  • Select an option

  • Save rsandrade/c603b843273c21ed52964c2b8e92879e to your computer and use it in GitHub Desktop.

Select an option

Save rsandrade/c603b843273c21ed52964c2b8e92879e to your computer and use it in GitHub Desktop.
#!/bin/bash
set -e
ES_HOST="10.156.246.175" # provavelmente pode mudar para localhost
STACK_DIR="$(pwd)"
ES_PASSWORD=$(openssl rand -base64 16 | tr -dc 'A-Za-z0-9@#%+=' | head -c 20)
KIBANA_PASSWORD=$(openssl rand -base64 16 | tr -dc 'A-Za-z0-9@#%+=' | head -c 20)
echo "🔧 Criando docker-compose.yml..."
cat > docker-compose.yml <<EOF
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4
container_name: elasticsearch
environment:
- node.name=es-node
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=${ES_PASSWORD}
- ES_JAVA_OPTS=-Xms1g -Xmx1g
volumes:
- esdata:/usr/share/elasticsearch/data
ports:
- "${ES_HOST}:9200:9200"
- "9300:9300"
kibana:
image: docker.elastic.co/kibana/kibana:8.17.4
container_name: kibana
depends_on:
- elasticsearch
ports:
- "${ES_HOST}:5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://${ES_HOST}:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
- SERVER_PUBLICBASEURL=http://kibana.DOMAIN.TLD #coloque aqui o subdominio
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml:ro
volumes:
esdata:
EOF
echo "🔐 Gerando chaves de criptografia..."
generate_key() {
openssl rand -base64 32 | tr -d '\n' | head -c 32
}
ENCRYPTION_KEY=$(generate_key)
ENCRYPTED_SAVED_OBJECTS_KEY=$(generate_key)
REPORTING_KEY=$(generate_key)
echo "📝 Criando kibana.yml com chaves..."
cat > kibana.yml <<EOF
server.name: kibana
server.host: "0.0.0.0"
xpack.security.encryptionKey: "${ENCRYPTION_KEY}"
xpack.encryptedSavedObjects.encryptionKey: "${ENCRYPTED_SAVED_OBJECTS_KEY}"
xpack.reporting.encryptionKey: "${REPORTING_KEY}"
EOF
echo "🚀 Subindo containers..."
docker compose up -d
echo "⏳ Aguardando Elasticsearch ficar disponível..."
until curl -s -u elastic:${ES_PASSWORD} http://${ES_HOST}:9200 >/dev/null; do
sleep 2
done
echo "✅ Elasticsearch está acessível."
echo "🔐 Definindo senha para kibana_system..."
curl -s -X POST -u elastic:${ES_PASSWORD} \
-H "Content-Type: application/json" \
-d "{\"password\":\"${KIBANA_PASSWORD}\"}" \
http://${ES_HOST}:9200/_security/user/kibana_system/_password >/dev/null
echo "🎉 Stack configurado com sucesso!"
echo ""
echo "🔑 Credenciais:"
echo " elastic: ${ES_PASSWORD}"
echo " kibana_system: ${KIBANA_PASSWORD}"
echo ""
echo "🌐 Acesse: http://kibana.DOMAIN.TLD com o usuário 'elastic'."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment