Saltar al contenido
Discord

Instalar un servidor de Discord

Esta guía explica cómo crear una aplicación y un bot en el portal de desarrolladores de Discord, proteger su token, invitarlo a un servidor comunitario y alojarlo 24/7 en un VPS Linux (systemd, pm2 o Docker). Cuenta con 30 a 45 minutos; un VPS básico basta para un bot pequeño.

Última actualización: 9/10/2026

Esta guía explica cómo crear una aplicación y un bot en el portal de desarrolladores de Discord, proteger su token, invitarlo a un servidor comunitario y alojarlo 24/7 en un VPS Linux (systemd, pm2 o Docker). Cuenta con 30 a 45 minutos; un VPS básico basta para un bot pequeño.

Instalación paso a paso

  1. Activa la autenticación en dos pasos en tu cuenta de Discord e instala una versión LTS actual de Node.js (o Python).

  2. Crea una aplicación en discord.com/developers/applications (New Application).

  3. Pestaña Bot: genera el token (Reset Token) y cópialo una sola vez en un gestor de contraseñas o un archivo .env.

  4. Activa solo los Privileged Gateway Intents que realmente uses (Presence, Server Members, Message Content).

  5. Genera el enlace de invitación (scopes bot + applications.commands, permisos mínimos) con la herramienta «Enlace de invitación de bot».

  6. Abre el enlace, elige tu servidor (se requiere el permiso «Gestionar servidor») y autoriza.

  7. Escribe un bot mínimo (discord.js) y pruébalo en local con el token en .env.

  8. Prepara un VPS Linux: usuario no root, cortafuegos, Node.js (ver la guía «Preparar un VPS»).

  9. Despliega el código, guarda el token en un archivo .env (chmod 600) y ejecuta el bot con systemd, pm2 o Docker.

  10. Configura el servidor comunitario: roles, canales, permisos, webhooks y moderación.

Requisitos previos

Necesitas una cuenta de Discord (con 2FA), un servidor del que seas propietario o administrador y Node.js LTS (o Python): comprueba la versión mínima que exige la versión de discord.js que instales. Para el alojamiento: un VPS Linux (1 vCPU y 512 MB a 1 GB de RAM suelen bastar para un bot pequeño; ajusta según tu código). Nunca compartas el token del bot: da control total del bot.

Crear la aplicación y el bot

  • discord.com/developers/applications → New Application → nombre → Create.
  • General Information: copia el Application ID (el client_id público).
  • Bot → Reset Token → copia el token (se muestra una sola vez).
  • Si el token se filtra (repositorio Git público, captura…), haz Reset Token de inmediato.

Proteger el token (.env)

Nunca pongas el token en el código. Usa un archivo .env excluido de Git y legible solo por tu usuario. Ejemplo (valor ficticio):

echo 'DISCORD_TOKEN=ChangeMe!' > .env
chmod 600 .env
echo '.env' >> .gitignore

Privileged Intents

  • Server Members Intent: eventos de entrada/salida y lista completa de miembros.
  • Message Content Intent: leer el texto de los mensajes (innecesario si solo usas comandos slash).
  • Presence Intent: estados de presencia de los miembros.
  • Pasado cierto número de servidores (100 según la política de Discord al redactar esto), estos intents exigen verificar el bot: consulta la política vigente.

Invitar al bot

El enlace de invitación tiene esta forma (client_id ficticio, permissions = 3072: ver y escribir en canales). Calcula el entero con la calculadora de permisos y monta el enlace con la herramienta dedicada:

https://discord.com/oauth2/authorize?client_id=123456789012345678&scope=bot%20applications.commands&permissions=3072

Bot mínimo (discord.js)

Instalación: npm init -y && npm install discord.js dotenv. Archivo index.js (consulta discordjs.guide para la API actualizada):

require('dotenv').config();
const { Client, Events, GatewayIntentBits } = require('discord.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once(Events.ClientReady, (c) => console.log(`Logged in as ${c.user.tag}`));

client.login(process.env.DISCORD_TOKEN);

Alojar con systemd

Archivo /etc/systemd/system/discord-bot.service (adapta User y rutas; comprueba la ruta de node con «which node»). Luego: sudo systemctl daemon-reload && sudo systemctl enable --now discord-bot; logs: journalctl -u discord-bot -f.

[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser/bot
EnvironmentFile=/home/botuser/bot/.env
ExecStart=/usr/bin/node index.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Alojar con pm2

pm2 reinicia el proceso si falla. El comando «pm2 startup» muestra un comando sudo que debes ejecutar para que pm2 arranque con el sistema.

sudo npm install -g pm2
pm2 start index.js --name discord-bot
pm2 save
pm2 startup
pm2 logs discord-bot

Alojar con Docker

Dockerfile abajo (ajusta la versión de Node a la que exige discord.js). Construye y ejecuta pasando el token con un archivo de entorno: docker build -t discord-bot . && docker run -d --restart unless-stopped --env-file .env --name discord-bot discord-bot

FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
USER node
CMD ["node", "index.js"]

Configurar el servidor comunitario

  • Roles: crea roles por función (admin, moderador, miembro) con los permisos mínimos; el rol del bot debe estar por encima de los roles que gestiona.
  • Canales: categorías (bienvenida, reglas, general, soporte, voz) y permisos por categoría en vez de por canal.
  • Webhooks: para publicar el estado de tus servidores de juego, crea el embed con la herramienta «Creador de embeds para webhooks».
  • Moderación: nivel de verificación, AutoMod, registro de auditoría; activa el requisito de 2FA para moderadores en los ajustes del servidor.
  • Visibilidad: registra tu servidor de juego en game-rank.com/jeux para ganar visibilidad.

Solución de problemas

  • «TokenInvalid» / «An invalid token was provided»: token erróneo, espacio sobrante o token restablecido. Cópialo de nuevo con Reset Token.
  • «Used disallowed intents»: activa el intent privilegiado correspondiente en la pestaña Bot o quítalo del código.
  • «Missing Access» / «Missing Permissions»: el bot no tiene permiso en ese canal o su rol está demasiado bajo en la jerarquía.
  • Los comandos slash no aparecen: faltó el scope applications.commands en la invitación o los comandos no están registrados (despliegue); reinvita al bot con el enlace correcto.
  • El bot se desconecta en el VPS: lee los logs (journalctl -u discord-bot -f), comprueba la memoria disponible y que Restart=on-failure esté definido.

Preguntas frecuentes

¿Es gratis un bot de Discord?
Crear un bot en el portal de desarrolladores es gratis. Solo el alojamiento (un VPS o un equipo siempre encendido) puede costar unos euros al mes.
¿Qué hago si mi token se filtró?
Haz clic de inmediato en Reset Token en la pestaña Bot, actualiza tu .env, reinicia el bot y revisa el registro de auditoría del servidor.
¿systemd, pm2 o Docker?
systemd es lo más ligero y viene integrado en Linux; pm2 es práctico si gestionas varios procesos Node.js; Docker aísla el entorno y hace el despliegue reproducible. Los tres reinician el bot tras un fallo.
¿Necesito abrir un puerto para alojar un bot?
No: el bot abre por sí mismo una conexión saliente hacia Discord. Solo el puerto SSH debe seguir accesible para administrar (salvo que expongas un servidor web).

Herramientas para tu servidor de Discord

Discord
DiscordAcceso libre
Crea un mensaje de webhook de Discord con embeds, vista previa en vivo, JSON y ejemplo curl. Nada se envía desde el sitio.
WebhookEmbedAbrir
Documentación
Discord
DiscordAcceso libre
Convierte el entero de permisos de Discord en casillas y viceversa, con los valores de bits oficiales.
PermisosBotAbrir
Documentación
Discord
DiscordAcceso libre
Crea la URL OAuth2 de invitación de tu bot: client_id, scopes, permisos y servidor preseleccionado.
OAuth2BotAbrir
Documentación