Discord Webhook Manager es una aplicación web potente y moderna construida con Laravel y React para gestionar, programar y enviar mensajes profesionales a través de Webhooks de Discord. Permite la colaboración en equipos, el uso de plantillas avanzadas y la automatización de envíos.
- Gestión de Webhooks: Crea, valida y organiza tus webhooks de Discord.
- Editor Visual Avanzado: Diseña mensajes con Embeds, colores, autor, footer, timestamp y menciones (@user, @everyone) con vista previa en tiempo real idéntica a Discord.
- Mensajes Programados:
- Envíos Únicos: Programa mensajes para una fecha exacta.
- Recurrentes: Configura repeticiones diarias, semanales o mensuales.
- Archivos Adjuntos: Sube imágenes o videos (hasta 10MB) que se envían y auto-eliminan para ahorrar espacio.
- Plantillas Reutilizables: Guarda tus diseños frecuentes con variables dinámicas (
{{username}},{{date}}). - Colaboración en Equipo: Invita usuarios a tus webhooks con roles granulares (Admin, Editor, Viewer).
- Generación con IA: Usa OpenAI o Google Gemini para redactar contenido automáticamente.
- Historial de Envíos: Registro detallado de cada mensaje enviado con estado y respuesta de la API.
- Interfaz Premium: Diseño moderno con Shadcn UI, modo oscuro, animaciones y glassmorphism.
- Backend: Laravel 12.x (PHP 8.4)
- Base de Datos: PostgreSQL
- Frontend: React + TypeScript (Inertia.js)
- Cola de Trabajos: Redis (recomendado) o Database
- Servidor Web Recomendado: Nginx + Ubuntu Server
Esta guía asume que tienes un servidor Ubuntu 22.04/24.04 limpio.
Asegúrate de tener instalado:
- Git, Curl, Unzip
- PHP 8.4 con extensiones:
BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, PDO_PgSQL, Tokenizer, XML, Curl, Zip. - Composer (Gestor de paquetes PHP).
- Node.js 20+ & NPM.
- PostgreSQL 14+.
- Nginx (Servidor Web).
- Supervisor (Gestor de procesos para colas).
Clona el repositorio y prepara el entorno:
cd /var/www
git clone https://github.com/tu-usuario/discord-webhook-manager.git
cd discord-webhook-manager
# Instalar dependencias PHP
composer install --optimize-autoloader --no-dev
# Instalar dependencias JS
npm install
npm run buildCopia el archivo de ejemplo y configúralo (¡NO USES CREDENCIALES POR DEFECTO!):
cp .env.example .env
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
php artisan key:generateEdita el .env (nano .env) con tus datos:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://tudominio.com
# Base de Datos
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=discord_webhook
DB_USERNAME=tu_usuario_db
DB_PASSWORD=tu_password_db
# Colas (Esencial para mensajes programados)
QUEUE_CONNECTION=database
# O usa 'redis' si tienes Redis instalado (recomendado para producción)
# Correo (Para invitaciones)
MAIL_MAILER=smtp
MAIL_HOST=smtp.tuservidor.com
MAIL_PORT=587
MAIL_USERNAME=tu_usuario_smtp
MAIL_PASSWORD=tu_password_smtp
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="no-reply@tudominio.com"Ejecuta las migraciones para crear las tablas:
php artisan migrate --forceCrea un archivo en /etc/nginx/sites-available/discord-manager:
server {
listen 80;
server_name tudominio.com;
root /var/www/discord-webhook-manager/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}Activa el sitio y reinicia Nginx:
ln -s /etc/nginx/sites-available/discord-manager /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxPara que los mensajes programados se envíen, necesitas un worker corriendo en segundo plano.
Instala Supervisor:
apt install supervisorCrea /etc/supervisor/conf.d/discord-worker.conf:
[program:discord-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/discord-webhook-manager/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/discord-webhook-manager/storage/logs/worker.log
stopwaitsecs=3600Inicia el proceso:
supervisorctl reread
supervisorctl update
supervisorctl start discord-worker:*El scheduler de Laravel necesita ejecutarse cada minuto para disparar los mensajes programados.
Edita el crontab del usuario www-data:
crontab -u www-data -eAñade esta línea al final:
* * * * * cd /var/www/discord-webhook-manager && php artisan schedule:run >> /dev/null 2>&1- Logs de Aplicación:
tail -f storage/logs/laravel.log - Logs del Worker:
tail -f storage/logs/worker.log - Estado de la Cola:
php artisan queue:monitor - Limpieza Automática: El sistema borra automáticamente los archivos adjuntos de mensajes programados después de enviarlos.
Las Pull Requests son bienvenidas. Para cambios importantes, abre primero un issue para discutir lo que te gustaría cambiar.
Este proyecto está bajo la licencia Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).
- Compartir: Copiar y redistribuir el material en cualquier medio o formato.
- Adaptar: Remezclar, transformar y crear a partir del material.
- Atribución: Debes dar crédito de manera adecuada, brindar un enlace a la licencia e indicar si se han realizado cambios.
- No Comercial: No puedes hacer uso del material con propósitos comerciales.
Para más detalles, consulta el archivo LICENSE.
