Vai al contenuto
Discord

Installare un server Discord

Questa guida spiega come creare un'applicazione e un bot nel portale sviluppatori Discord, proteggere il token, invitarlo in un server della community e ospitarlo 24/7 su un VPS Linux (systemd, pm2 o Docker). Servono 30-45 minuti; un VPS entry-level basta per un piccolo bot.

Ultimo aggiornamento: 09/10/2026

Questa guida spiega come creare un'applicazione e un bot nel portale sviluppatori Discord, proteggere il token, invitarlo in un server della community e ospitarlo 24/7 su un VPS Linux (systemd, pm2 o Docker). Servono 30-45 minuti; un VPS entry-level basta per un piccolo bot.

Installazione passo dopo passo

  1. Attiva l'autenticazione a due fattori sul tuo account Discord e installa una versione LTS attuale di Node.js (o Python).

  2. Crea un'applicazione su discord.com/developers/applications (New Application).

  3. Scheda Bot: genera il token (Reset Token) e copialo una sola volta in un gestore di password o in un file .env.

  4. Attiva solo i Privileged Gateway Intents che usi davvero (Presence, Server Members, Message Content).

  5. Genera il link di invito (scope bot + applications.commands, permessi minimi) con lo strumento «Link di invito bot».

  6. Apri il link, scegli il tuo server (serve il permesso «Gestisci server») e autorizza.

  7. Scrivi un bot minimo (discord.js) e provalo in locale con il token in .env.

  8. Prepara un VPS Linux: utente non root, firewall, Node.js (vedi la guida «Preparare un VPS»).

  9. Distribuisci il codice, metti il token in un file .env (chmod 600) e avvia il bot con systemd, pm2 o Docker.

  10. Configura il server della community: ruoli, canali, permessi, webhook e moderazione.

Prerequisiti

Servono un account Discord (con 2FA), un server di cui sei proprietario o amministratore e Node.js LTS (o Python): controlla la versione minima richiesta dalla release di discord.js che installi. Per l'hosting: un VPS Linux (1 vCPU e da 512 MB a 1 GB di RAM bastano di solito per un piccolo bot, da adeguare al codice). Non condividere mai il token del bot: dà il controllo completo del bot.

Creare l'applicazione e il bot

  • discord.com/developers/applications → New Application → nome → Create.
  • General Information: copia l'Application ID (il client_id pubblico).
  • Bot → Reset Token → copia il token (mostrato una sola volta).
  • Se il token trapela (repo Git pubblico, screenshot…), fai subito Reset Token.

Proteggere il token (.env)

Non mettere mai il token nel codice. Usa un file .env escluso da Git e leggibile solo dal tuo utente. Esempio (valore fittizio):

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

Privileged Intents

  • Server Members Intent: eventi di ingresso/uscita ed elenco completo dei membri.
  • Message Content Intent: lettura del testo dei messaggi (inutile se usi solo comandi slash).
  • Presence Intent: stati di presenza dei membri.
  • Oltre un certo numero di server (100 secondo la policy Discord al momento della stesura) questi intent richiedono la verifica del bot: controlla la policy attuale.

Invitare il bot

Il link di invito ha questa forma (client_id fittizio, permissions = 3072: vedere e scrivere nei canali). Calcola l'intero con il calcolatore di permessi e componi il link con lo strumento dedicato:

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

Bot minimo (discord.js)

Installazione: npm init -y && npm install discord.js dotenv. File index.js (vedi discordjs.guide per l'API aggiornata):

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);

Ospitare con systemd

File /etc/systemd/system/discord-bot.service (adatta User e percorsi; verifica il percorso di node con «which node»). Poi: sudo systemctl daemon-reload && sudo systemctl enable --now discord-bot; log: 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

Ospitare con pm2

pm2 riavvia il processo in caso di crash. Il comando «pm2 startup» mostra un comando sudo da eseguire per avviare pm2 al boot.

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

Ospitare con Docker

Dockerfile qui sotto (adatta la versione di Node a quella richiesta da discord.js). Costruisci ed esegui passando il token con un file env: 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"]

Configurare il server della community

  • Ruoli: crea ruoli per funzione (admin, moderatore, membro) con permessi minimi; il ruolo del bot deve stare sopra i ruoli che gestisce.
  • Canali: categorie (benvenuto, regole, generale, supporto, vocale) e permessi per categoria anziché per canale.
  • Webhook: per pubblicare lo stato dei tuoi server di gioco, costruisci l'embed con lo strumento «Creatore di embed per webhook».
  • Moderazione: livello di verifica, AutoMod, registro attività; attiva il requisito 2FA per i moderatori nelle impostazioni del server.
  • Visibilità: inserisci il tuo server di gioco su game-rank.com/jeux per farti trovare.

Risoluzione dei problemi

  • «TokenInvalid» / «An invalid token was provided»: token errato, spazio extra o token reimpostato. Ricopialo con Reset Token.
  • «Used disallowed intents»: attiva l'intent privilegiato corrispondente nella scheda Bot o rimuovilo dal codice.
  • «Missing Access» / «Missing Permissions»: il bot non ha il permesso in quel canale o il suo ruolo è troppo in basso nella gerarchia.
  • I comandi slash non compaiono: mancava lo scope applications.commands nell'invito o i comandi non sono registrati (deploy); reinvita il bot con il link giusto.
  • Il bot si disconnette sul VPS: leggi i log (journalctl -u discord-bot -f), verifica la memoria disponibile e che Restart=on-failure sia impostato.

Domande frequenti

Un bot Discord è gratuito?
Creare un bot nel portale sviluppatori è gratuito. Solo l'hosting (VPS o macchina sempre accesa) può costare qualche euro al mese.
Cosa fare se il mio token è trapelato?
Clicca subito su Reset Token nella scheda Bot, aggiorna il file .env, riavvia il bot e controlla il registro attività del server.
systemd, pm2 o Docker?
systemd è il più leggero e integrato in Linux; pm2 è comodo con più processi Node.js; Docker isola l'ambiente e rende il deploy riproducibile. Tutti e tre riavviano il bot dopo un crash.
Mi serve una porta aperta per ospitare un bot?
No: il bot apre da sé una connessione in uscita verso Discord. Solo la porta SSH deve restare raggiungibile per l'amministrazione (a meno di esporre un server web).

Strumenti per il tuo server Discord

Discord
DiscordAccesso libero
Componi un messaggio webhook Discord con embed, anteprima dal vivo, JSON ed esempio curl. Dal sito non viene inviato nulla.
WebhookEmbedApri
Documentazione
Discord
DiscordAccesso libero
Converti l'intero dei permessi Discord in caselle e viceversa, con i valori di bit ufficiali.
PermessiBotApri
Documentazione
Discord
DiscordAccesso libero
Crea l'URL OAuth2 di invito del tuo bot: client_id, scope, permessi e server preselezionato.
OAuth2BotApri
Documentazione