Files
element_matrix_chat/mas/scripts/bootstrap.sh
T

65 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CONFIG_FILE="${ROOT_DIR}/config.yaml"
CONFIG_TEMPLATE="${ROOT_DIR}/config.example.yaml"
SECRETS_DIR="${ROOT_DIR}/secrets"
KEYS_DIR="${ROOT_DIR}/keys"
ENCRYPTION_FILE="${SECRETS_DIR}/encryption.key"
SHARED_SECRET_FILE="${SECRETS_DIR}/shared_secret.txt"
SIGNING_KEY_FILE="${KEYS_DIR}/mas_signing.key"
command -v openssl >/dev/null 2>&1 || {
echo "openssl es requerido para generar los secretos." >&2
exit 1
}
mkdir -p "${SECRETS_DIR}" "${KEYS_DIR}"
if [ ! -f "${CONFIG_TEMPLATE}" ]; then
echo "No se encontró ${CONFIG_TEMPLATE}, abortando." >&2
exit 1
fi
if [ ! -f "${CONFIG_FILE}" ]; then
cp "${CONFIG_TEMPLATE}" "${CONFIG_FILE}"
echo "Se creó ${CONFIG_FILE} a partir de la plantilla."
else
echo "Ya existe ${CONFIG_FILE}, se deja intacto."
fi
if [ ! -f "${ENCRYPTION_FILE}" ]; then
openssl rand -hex 32 > "${ENCRYPTION_FILE}"
chmod 600 "${ENCRYPTION_FILE}"
echo "Generada clave de cifrado en ${ENCRYPTION_FILE}"
else
echo "Ya existe ${ENCRYPTION_FILE}"
fi
if [ ! -f "${SHARED_SECRET_FILE}" ]; then
openssl rand -hex 48 > "${SHARED_SECRET_FILE}"
chmod 600 "${SHARED_SECRET_FILE}"
echo "Generado secreto compartido en ${SHARED_SECRET_FILE}"
else
echo "Ya existe ${SHARED_SECRET_FILE}"
fi
if [ ! -f "${SIGNING_KEY_FILE}" ]; then
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out "${SIGNING_KEY_FILE}" >/dev/null
chmod 600 "${SIGNING_KEY_FILE}"
echo "Generada clave RSA en ${SIGNING_KEY_FILE}"
else
echo "Ya existe ${SIGNING_KEY_FILE}"
fi
cat <<MSG
============================================
Recuerda copiar el contenido de:
${SHARED_SECRET_FILE}
al bloque matrix_authentication_service.secret en synapse_data/homeserver.yaml.
Revisa también ${CONFIG_FILE} para ajustar dominios/URLs públicas.
============================================
MSG