Configuración
Al instalar de forma correcta HoupAuth, se generarán varias carpetas y archivos, a continuación se relacionan la estructura general y contenido de todos los archivos a tener en cuenta.
plugins/
└── HoupAuth/
├── config.yml
├── joins-events.yml
├── internal/
│ ├── spawn.yml
│ └── ha-database.db
└── locales/
├── en.yml
└── es.ymlconfig.yml
HoupAuth tiene muchas características, personalizaciones y opciones que pueden ser un poco dificíl de entender si no se lee cuidadosamente la configuración. Aquí te detallamos cada sección del config.yml y como configurarla correctamente según tus preferencias.
settings:
general:
language: "en"
debug: false
bstats: true
hashing:
# Define el algoritmo hash utilizado.
# - Opciones disponibles:
# |=> BCRYPT2Y - BCrypt versión 2Y (más seguro contra ciertos ataques)
# |=> BCRYPT2A - BCrypt versión 2A (más compatible, recomendado)
# |=> ARGON2ID - Argon2id híbrido (recomendado para servidores medianos)
# |=> ARGON2I - Argon2i independiente de datos (mejor contra ataques de canal lateral)
# |=> ARGON2D - Argon2d dependiente de datos (más rápido pero menos seguro)
algorithm: "BCRYPT2A"
# Configuración específica para BCrypt
bcrypt:
# Factor de costo (4-31). Valores más altos = más seguro pero más lento
# Recomendado: 12-15 para servidores modernos
cost: 12
# Configuración específica para Argon2
argon2:
# Número de iteraciones (recomendado: 3-10)
iterations: 3
# Memoria en KB (recomendado: 65536 = 64MB)
memory: 65536
# Número de hilos paralelos (recomendado: 1-4)
parallelism: 1
database:
#Define el tipo de database que usará HoupAuth para almacenar los datos de los jugadores
type: 'SQLITE' # Tipo de database puede ser "SQLITE" o "MYSQL"
# Edita la siguiente sección SOLO si el tipo es "MYSQL":
server:
host: 'localhost' # MySQL host
port: 3306 # MySQL port
database: 'houpclans' # MySQL database name
username: 'root' # MySQL username
password: '' # MySQL password
restrict:
# Configura las restricciones que tendrá el jugador antes de unirse al servidor.
name:
enabled: true # Habilita la lógica sobre nombre de jugadores. Eso hace que solo
# nombres que cumpla con el formato puedan ingresar
format: "[a-zA-Z0-9_-]*" #El formato permitido en el nombre del jugador
length:
min: 3 # Longitud mínima del nombre del jugador
max: 16 # Logitud máxima del nombre del jugador
account:
enabled: true # Habilita la lógica de limite de cuentas por IP
limit: 1 # Cantidad de cuentas permitidas por IP
allow-bypass: true # Habilita el bypass por permiso sobre cuentas.
attempts:
enabled: true # Habilita sistema de intentos fallidos en inicio de sesión
max:
login: 2 # Cantidad fallida antes de expulsar al jugador
kick: 2 # Cantidad de expulsiones permitidas antes de aplicar lógica de ban (si está habilitado)
ban:
enabled: true # Habilita la lógica de ban cuando se alcanza el límite de intentos fallidos
duration: "15m" # Tiempo inicial de baneo que se le aplicará al jugador.
increment: "10m" # Tiempo que irá incrementando sobre el valor inicial (Dejar en 0s para deshabilitar)
security:
# Oculta la información sensible en los LOGS del servidor.
# Previene que los pines o contraseñas aparezcan en el outpout de la consola.
# Habilita "true" para usar el sistema. En caso de "false" los comandos aparecerán
# en consola con el pin o contraseña que ingrese el jugador.
hide-sensitive-commands: true
hide-commands-completely: true #Si es true, /pin, /register, /login, /2fa no aparecerán en los logs.
#Si es false aparecerá "/pin ****"
authentication:
method:
default: "pin" # Opciones: password, pin
allow-change:
method: true # Permite cambiar a los jugadores entre métodos de inicio de sesión
channel: true # Permite cambiar a los jugadores el canal que se usará para iniciar sesión
pin:
channel: "inventory" # Opciones: command, inventory, anvil
success-message: "chat" # Opciones: chat, title, actionbar
auto-confirm: true # Auto confirmar el PIN cuando se completa (inventory channel)
show: false # Mostrar el pin en el titulo del inventory
length: 4 # Longitud del pin (mínima y máxima)
timeout: "30s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
block:
repetitive: true # Bloquea pines repetidos (Ej: 1111, 2222, 3333)
sequential: true # Bloquea pines secuenciales (Ej: 1234, 4321)
actions: # Recordatorios constantes enviados al jugador solicitando el ingreso del pin
title: true
actionbar: true
chat: true
password:
channel: "command" # Opciones: command, anvil
success-message: "chat" # Opciones: chat, title, actionbar
require-confirmation: true # Si es true, entonces al registrarse deberá colocar /register <password> <password>, si es false, solo tendrá que colocar /register <password>
length:
min: 6 # Longitud mínima de la contraseña
max: 32 # Longitud máxima de la contraseña
# Requerimientos de contraseña para que sean válidas
# 0 -> No tiene requisitos
# 1 -> Debe contener al menos un número
# 2 -> Debe contener al menos una letra mayúscula
# 3 -> Debe contener al menos un carácter especial
# Los niveles son acumulativos, por lo que si se pone 3, debe contener al menos un número y una letra mayúscula junto con un carácter especial
security: 1
timeout: "70s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
actions: # Recordatorios enviados al jugador
title: true
actionbar: true
chat: true
customization:
# Genera el mundo "ha-limbo" donde se enviarán los jugadores al ingresar al servidor.
# si está en fale, el mundo no se genera, y el jugador permanece en su posición con efectos aplicados.
limbo: true
# Habilita el uso del spawn auth.
# Si es "true" al completar registro/login se envia al jugador al auth spawn.
# Si es "false" y el limbo es "true" el jugador se envia a la última posición conocida.
# si es "false" y el limbo es "false" el jugador permanece en su posición actual.
auth-spawn: false
effects:
spectator: true # Cambia el modo de juego del jugador a espectador durante el proceso de registro/inicio de sesión
blindness: true # Aplica ceguera al jugador durante el proceso de autentificación
hide-inventory: true # Aplica lógica de ocultar inventario durante la autentificación
hide-scoreboard: true # Aplica lógica de ocultar scoreboard durante la autentificación
bossbar:
# Habilita la bossbar con el tiempo restante para iniciar sesión.
enabled: true
# Color de la Bossbar (Opciones: RED, BLUE, GREEN, PINK, PURPLE, WHITE, YELLOW).
color: "RED"
# Estilo de la BossBar (Opciones: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20).
style: "NOTCHED_6"
# Configuración del sistema de recordatorios (Las actions definidas en cada método)
reminders:
frequency: 5 # Segundos de espera entre cada envío
duration: 3 # Segundos que debe permanecer visible el recordatorio (para title)
# Configura las carácteristicas adicionales que tendrá HoupAuth
features:
2fa:
# Habilita el sistema de 2FA para que los jugadores puedan añadirlo a su cuenta.
enabled: true
channel: "command" # Opciones: command, inventory, anvil
issuer: "HoupAuth" # Nombre de la cuenta que se mostrará en las aplicaciones de TOPT
setup-timeout: 300 # Segundos que tiene el jugador para enlazar el 2FA a su cuenta.
show: false # Mostrar el pin en el titulo del inventory
timeout: "60s" # Duración que tendrá el jugador para ingresar el 2fa code.
max-failed-attempts: 2 # cantidad máxima de intentos fallidos antes de expulsar al jugador o cancelar el setup
actions: # Recordatorios enviado spara solicitar el ingreso del código 2FA.
title: true
actionbar: true
chat: true
# Configuración del autologin para jugadores ya autenticados.
auto-login:
# Habilita el autologin de manera global.
enabled: true
# Duración de la sesión guardada. (en horas, ej. 24 para un día).
# Establezca es -1 para que la sesión nunca expire.
session-expiry-hours: 72
# Habilita el sistema estricto de verificación
strict-security: true
motd:
# Esta es la carácteristica de enviar al jugador la cabeza en el chat.
enabled: true
# Habilita la compatibilidad de Skinsrestorer, haciendo que la cabeza que se muestre
# corresponda a la skin actual del jugador.
# Requiere que skinsRestorer esté instalado en el servidor.
use-skinsrestorer: false
# Usa siempre una cabeza de jugador establecida.
# Esto ignora la cabeza del jugador y skinsRestorer así estén habilitadas
# Para usarlo, deberá colocar el uuid correspondiente al jugador del que se desea
# usar la skin.
# Puede encontrar uuui's válidas aquuí: https://namemc.com/minecraft-skins
custom-head:
enabled: false
uuid: "c9d6f853-80ad-4edb-ba5e-2c46b334aa9d"
# Use una textura personalizada en el MOTD por URL
# Compatible con todas las imagenes en URL que terminen en .png, .jpg.
custom-icon:
enabled: false
url: "https://cdn-icons-png.flaticon.com/512/6772/6772234.png"
bedrock:
# Requiere de FloodGate y Geyser. Si están presentes en el servidor, se puede activar la opción
# Si está desactivada o no está presente FloodGate ni Geyser, se ignorará esta configuración.
# En caso de que esté activada, pero no se encuentren las dependencias, emitirá un warning y desactivará la opción.
enabled: true
# Opciones: all, register y login.
# Si es register: El jugador bedrock solo deberá registrarse en su primer inicio de sesión, pero nunca se le solicitará iniciar sesión. Tendrá algo así como un "auto-login" permanente.
# Si es login: El jugador tendrá el flujo normal: Registro y login cada vez que ingrese al servidor (respetando auto-login y 2fa)
# Si es all: El jugador bedrock no tendrá que registrarse ni iniciar sesión, siempre tendrá un ingreso directo al servidor. No tendrá acceso a los comandos relacionados con HoupAuth.
auth-type: "register"
channel: "command" # Opciones: forms, command
timeout: "90s" # Tiempo que tiene el jugador para registrarse/iniciar sesión
actions: # Recordatorios enviados solicitando ingreso de contraseña/pin/2fa
title: true
actionbar: true
chat: true
# Configuración de GUI
gui:
# Material usado para el fondo del GUI de canal inventory (e.g., black_stained_glass_pane).
background-item: black_stained_glass_pane
# Si está en true, entonces los números de los guis se mostraran en stock con su número correspondiente
# es decir, si está en true el botón 3 en el gui aparecerá con tres cabezas/material en ese slot.
digit-amount: false
# Establece el estilo de cada botón que se muestre en el plugin. Soporta tres formatos:
# - head: base64_texture_value (texturas de cabezas basadas en base64)
# - id: HeadDatabase_ID (Requiere plugin HeadDatabase)
# - material: MATERIAL_NAME (Material de Minecraft)
# Ejemplos:
# '0': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2YwOTAxOGY0NmYzNDllNTUzNDQ2OTQ2YTM4NjQ5ZmNmY2Y5ZmRmZDYyOTE2YWVjMzNlYmNhOTZiYjIxYjUifX19"
# '1': "id: 12345"
# '2': "material: DIAMOND"
textures:
'0': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2YwOTAxOGY0NmYzNDllNTUzNDQ2OTQ2YTM4NjQ5ZmNmY2Y5ZmRmZDYyOTE2YWVjMzNlYmNhOTZiYjIxYjUifX19"
'1': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2E1MTZmYmFlMTYwNThmMjUxYWVmOWE2OGQzMDc4NTQ5ZjQ4ZjZkNWI2ODNmMTljZjVhMTc0NTIxN2Q3MmNjIn19fQ=="
'2': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDY5OGFkZDM5Y2Y5ZTRlYTkyZDQyZmFkZWZkZWMzYmU4YTdkYWZhMTFmYjM1OWRlNzUyZTlmNTRhZWNlZGM5YSJ9fX0="
'3': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQ5ZTRjZDVlMWI5ZjNjOGQ2Y2E1YTFiZjQ1ZDg2ZWRkMWQ1MWU1MzVkYmY4NTVmZTlkMmY1ZDRjZmZjZDIifX19"
'4': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjJhM2Q1Mzg5ODE0MWM1OGQ1YWNiY2ZjODc0NjlhODdkNDhjNWMxZmM4MmZiNGU3MmY3MDE1YTM2NDgwNTgifX19"
'5': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDFmZTM2YzQxMDQyNDdjODdlYmZkMzU4YWU2Y2E3ODA5YjYxYWZmZDYyNDVmYTk4NDA2OTI3NWQxY2JhNzYzIn19fQ=="
'6': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2FiNGRhMjM1OGI3YjBlODk4MGQwM2JkYjY0Mzk5ZWZiNDQxODc2M2FhZjg5YWZiMDQzNDUzNTYzN2YwYTEifX19"
'7': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjk3NzEyYmEzMjQ5NmM5ZTgyYjIwY2M3ZDE2ZTE2OGIwMzViNmY4OWYzZGYwMTQzMjRlNGQ3YzM2NWRiM2ZiIn19fQ=="
'8': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJjMGZkYTlmYTFkOTg0N2EzYjE0NjQ1NGFkNjczN2FkMWJlNDhiZGFhOTQzMjQ0MjZlY2EwOTE4NTEyZCJ9fX0="
'9': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDZhYmM2MWRjYWVmYmQ1MmQ5Njg5YzA2OTdjMjRjN2VjNGJjMWFmYjU2YjhiMzc1NWU2MTU0YjI0YTVkOGJhIn19fQ=="
'backspace': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODVjMTBhNDY4NjNkNmZkYmY1MTA5NTBiNGMyNDZhMDliNmNlZGFhNDc1YWU5ZGY2MzEwNWE0NzIxN2JhNTA1NiJ9fX0="
'clear': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzRiMjk4NzMzMmYzZGJlOGMyNjI0YTJlOWQxOGIyZWNkZWIyZjI3M2EwODc5MDI5ZDBjMDcxNzcyMjg2NDZmNCJ9fX0="
'exit': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjQ3Y2YwZjNiOWVjOWRmMjQ4NWE5Y2Q0Nzk1YjYwYTM5MWM4ZTZlYmFjOTYzNTRkZTA2ZTMzNTdhOWE4ODYwNyJ9fX0="
'autologin': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmRiYzBjNTM1MjliYzlhODJkNmJjNzM5NzVlNmZlZWNhYWNjMzBlMDE2MzBmYjc3YTY2OTY0MGE5ZTZmZjIzOSJ9fX0="
'change_pin': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODkyOGVmMzM1MzEzMjE0YmI4Y2MxMzdkZjE1M2MxYmVlN2I3YTlkMWU4ZTYyODFmZTlkMzYyZDkxZmU5ZDg5In19fQ=="
'two_factor': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzg4NDdjNDNlZTAyMjc2ZmEzNDZkMmRiMTdiMDA5Njk2Zjk3OWY2ODA3OWQwYWMyNjZlODMyMTI3NDBjMjI5OSJ9fX0="
'confirm': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTkyZTMxZmZiNTljOTBhYjA4ZmM5ZGMxZmUyNjgwMjAzNWEzYTQ3YzQyZmVlNjM0MjNiY2RiNDI2MmVjYjliNiJ9fX0="
'cancel': "head: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjQ3Y2YwZjNiOWVjOWRmMjQ4NWE5Y2Q0Nzk1YjYwYTM5MWM4ZTZlYmFjOTYzNTRkZTA2ZTMzNTdhOWE4ODYwNyJ9fX0="
'book': "material: BOOK"
# ¡Llegaste hasta el final! ¿Muy complicado? Jaja, esperamos que HoupAuth cumpla con tus necesidades.
# Este archivo de config.yml corresponde a la versión 2.0 de HoupAuthÚltima actualización