<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Antonin Courtadon</title>
    <description>The latest articles on DEV Community by Antonin Courtadon (@antonin_courtadon_a7636c8).</description>
    <link>https://dev.to/antonin_courtadon_a7636c8</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4232539%2Fdcd3c1a0-c755-4fb5-88a0-88b4782690f4.jpg</url>
      <title>DEV Community: Antonin Courtadon</title>
      <link>https://dev.to/antonin_courtadon_a7636c8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/antonin_courtadon_a7636c8"/>
    <language>en</language>
    <item>
      <title>Günstiger VPS mit viel RAM: Worauf Sie achten sollten</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:56:20 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/gunstiger-vps-mit-viel-ram-worauf-sie-achten-sollten-2061</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/gunstiger-vps-mit-viel-ram-worauf-sie-achten-sollten-2061</guid>
      <description>&lt;p&gt;Offenlegung: Ich bin Antonin Courtadon, Gründer von ACLClouds.&lt;/p&gt;

&lt;p&gt;Vor wenigen Jahren war ein Server mit 16 GB RAM ein Gerät, das man für teures Geld mietete. Heute bieten mehrere Anbieter diese Ausstattung für unter 10 EUR im Monat an. Die eigentliche Frage ist deshalb nicht mehr, ob man sich das leisten kann, sondern was man darauf betreibt und was man selbst pflegen muss.&lt;/p&gt;

&lt;p&gt;Dieser Artikel nutzt die Angebote von ACLClouds als Beispiel, weil ich deren Werte kenne. Die Methode funktioniert aber bei jedem VPS: Last und Ressourcen zusammenbringen und prüfen, was der Anbieter übernimmt und was nicht.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was die Werte bedeuten
&lt;/h2&gt;

&lt;p&gt;Ein VPS (virtueller privater Server) ist eine virtuelle Maschine auf einem physischen Host. Sie hat ein eigenes Betriebssystem, eine eigene IP-Adresse und Root-Zugriff. Was darauf läuft, liegt in Ihrer Verantwortung.&lt;/p&gt;

&lt;p&gt;Drei Werte sind entscheidend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM&lt;/strong&gt; bestimmt, wie viele Dienste gleichzeitig im Speicher bleiben können. Wenn er knapp wird, lagert Linux aus, und alles wird langsamer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vCPU&lt;/strong&gt; ist ein Anteil an Rechenzeit. Vier vCPU sind vier virtuelle Kerne, der physische Host wird jedoch geteilt, sodass anhaltende Last schwanken kann.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Festplatte&lt;/strong&gt; nimmt Betriebssystem, Datenbanken, Logs, Backups und Uploads auf. Sie füllt sich schneller als erwartet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bei kleinen Diensten begrenzt meist zuerst der RAM, danach der Speicherplatz. Die Prozessorleistung wird vor allem bei Komprimierung, Transkodierung oder Massenberechnungen wichtig.&lt;/p&gt;

&lt;h2&gt;
  
  
  Die Linux-Tarife von ACLClouds
&lt;/h2&gt;

&lt;p&gt;Stand der Veröffentlichung dieses Artikels. Preise und Ausstattung können sich ändern; prüfen Sie die Angaben auf der Preisseite, bevor Sie eine Entscheidung treffen. Vergleichen Sie dabei immer dieselben Kriterien, nicht nur den Monatspreis.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tarif&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;Festplatte&lt;/th&gt;
&lt;th&gt;Preis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mini&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;4,99 EUR / Monat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Essentiel&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;td&gt;9,99 EUR / Monat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;48 GB&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;150 GB&lt;/td&gt;
&lt;td&gt;21,99 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;250 GB&lt;/td&gt;
&lt;td&gt;34,99 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Monatspreise inkl. MwSt. ohne Mindestlaufzeit; mit 1 Jahr Laufzeit: 3,99, 7,99, 17,59 und 27,99 EUR pro Monat.&lt;/p&gt;

&lt;p&gt;Der Tarif Essentiel, um den es hier geht, bietet 16 GB RAM und 4 vCPU für 9,99 EUR im Monat, mit KVM-Virtualisierung und Servern in Frankreich.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was hinter „unter 10 Euro“ steckt
&lt;/h2&gt;

&lt;p&gt;Ein niedriger Preis hilft nur, wenn Sie wissen, was Sie kaufen. Prüfen Sie diese Punkte, bevor Sie zahlen:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kriterium&lt;/th&gt;
&lt;th&gt;Warum es zählt&lt;/th&gt;
&lt;th&gt;Tarif Essentiel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Begrenzt, wie viele Dienste geladen bleiben&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vCPU&lt;/td&gt;
&lt;td&gt;Begrenzt die dauerhafte Rechenleistung&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speicherplatz&lt;/td&gt;
&lt;td&gt;Datenbanken, Logs und Backups füllen ihn&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtualisierung&lt;/td&gt;
&lt;td&gt;Bestimmt die Trennung zu anderen Kunden&lt;/td&gt;
&lt;td&gt;KVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standort&lt;/td&gt;
&lt;td&gt;Latenz und Ort der Daten&lt;/td&gt;
&lt;td&gt;Frankreich&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kontrolle über das System&lt;/td&gt;
&lt;td&gt;Sie brauchen Root, um zu installieren, was Sie wollen&lt;/td&gt;
&lt;td&gt;Root-Zugriff auf die Linux-VM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sicherheitsupdates&lt;/td&gt;
&lt;td&gt;Wer spielt Patches ein&lt;/td&gt;
&lt;td&gt;Sie selbst, sofern Sie nichts anderes einrichten&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups&lt;/td&gt;
&lt;td&gt;Eine VM ist kein Backup&lt;/td&gt;
&lt;td&gt;Ihre Aufgabe: eigene Kopien planen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Die beiden letzten Zeilen werden oft übersehen. Ein VPS gibt Ihnen Kontrolle, und Kontrolle bedeutet Arbeit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was auf 16 GB sinnvoll läuft
&lt;/h2&gt;

&lt;p&gt;Entscheidend ist, was die Dienste tun, nicht nur wie viele es sind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eine Flotte aus Discord- oder Telegram-Bots.&lt;/strong&gt; Mehrere Bots in Node.js oder Python, jeweils mit eigenem Prozessmanager, brauchen nur einen Bruchteil der 16 GB. Grenzen setzen das Speicherwachstum jedes Bots und seine ausgehenden Verbindungen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eine kleine Website oder API.&lt;/strong&gt; Eine Anwendung in Laravel, Node oder Django mit PostgreSQL oder MySQL passt gut. Betreiben Sie Datenbank und Anwendung nur dann auf einer Maschine, wenn der Verkehr überschaubar ist, und messen Sie den RAM-Bedarf unter realer Last.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Einen Spieleserver für eine kleine Gruppe.&lt;/strong&gt; Viele Spieleserver brauchen viel Speicher. Prüfen Sie die Anforderungen des konkreten Spiels und die Spielerzahl. Ein Minecraft-Server für wenige Freunde kann neben einem Bot laufen; für Dutzende Spieler braucht es eine eigene Planung.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selbst gehostete Werkzeuge.&lt;/strong&gt; Git-Server, Passwortmanager, Wiki, Monitoring, Dateisynchronisation. Das nutzt freien RAM gut, doch jedes Werkzeug ist ein weiterer Dienst, der aktualisiert werden muss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entwicklung und Staging.&lt;/strong&gt; Eine Testkopie der Anwendung, eine Testdatenbank und ein CI-Runner können sich die Maschine teilen, wenn Sie sie durch getrennte Benutzer und klare Ports isolieren.&lt;/p&gt;

&lt;p&gt;Schlecht passt alles, was einen großen Cache, einen umfangreichen Suchindex oder ein dauerhaft im Speicher gehaltenes KI-Modell braucht. Dafür sind ein größerer Tarif oder eine andere Architektur nötig.&lt;/p&gt;

&lt;h2&gt;
  
  
  Die ehrlichen Grenzen eines VPS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sie administrieren ihn selbst.&lt;/strong&gt; Updates, Firewall, SSH-Schlüssel, fail2ban, Log-Rotation und Backups liegen bei Ihnen. Wenn Sie das nie gemacht haben, lernen Sie zuerst die Grundlagen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ein VPS ist keine Hochverfügbarkeit.&lt;/strong&gt; Eine einzelne Maschine ist ein einzelner Ausfallpunkt. Wenn der Dienst wichtig ist, planen Sie eine zweite Maschine oder ein Wiederherstellungsverfahren.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ressourcenlimits sind real.&lt;/strong&gt; 16 GB und 4 vCPU sind für einen kleinen Stack viel, für einen großen zu wenig. Messen Sie, bevor Sie einen größeren Tarif buchen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Der Preis ist kein Versprechen.&lt;/strong&gt; Prüfen Sie, ob der Preis wiederkehrend ist, ob Umsatzsteuer enthalten ist und was bei der Verlängerung passiert.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Checkliste für den ersten Tag
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Legen Sie einen Nicht-Root-Benutzer an, hinterlegen Sie Ihren SSH-Schlüssel und deaktivieren Sie die Anmeldung per Passwort.&lt;/li&gt;
&lt;li&gt;Führen Sie das Systemupdate aus und aktivieren Sie automatische Sicherheitsupdates.&lt;/li&gt;
&lt;li&gt;Richten Sie eine Firewall ein, die nur die nötigen Ports öffnet (22 für SSH, 80 und 443 für eine Website).&lt;/li&gt;
&lt;li&gt;Betreiben Sie jeden Dienst in einem Container oder einem eigenen Benutzer, damit ein Absturz nicht die anderen mitreißt.&lt;/li&gt;
&lt;li&gt;Messen Sie den Speicherbedarf nach einer Stunde und nach einem Tag:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
ps aux &lt;span class="nt"&gt;--sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-%mem | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Richten Sie eine Sicherung Ihrer Daten außerhalb der Maschine ein und testen Sie einmal die Wiederherstellung.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Typische Fehler bei der Auswahl
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nur auf den Preis schauen.&lt;/strong&gt; Ein Tarif mit weniger RAM ist günstiger, aber ein Dienst, der ständig auslagert, kostet am Ende Zeit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Die Festplatte vergessen.&lt;/strong&gt; Logs wachsen unbemerkt. Legen Sie eine Rotation fest, bevor der Speicher voll ist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keine Wiederherstellung testen.&lt;/strong&gt; Ein Backup, das nie eingespielt wurde, ist nur eine Hoffnung. Probieren Sie es einmal im Monat auf einer Testmaschine aus.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Häufige Fragen
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Brauche ich 16 GB RAM für einen Bot?&lt;/strong&gt;&lt;br&gt;
Nein. Ein Bot braucht meist deutlich weniger. Der Grund für 16 GB ist, mehrere Dienste zusammen betreiben zu können, ohne das Setup bei jeder Erweiterung neu zu planen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kann ich Docker installieren?&lt;/strong&gt;&lt;br&gt;
Auf einem Linux-VPS mit Root-Zugriff ja. Das ist der übliche Weg, mehrere Dienste zu betreiben. Folgen Sie der aktuellen Installationsanleitung für Ihr Betriebssystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bleibt der Preis nach dem ersten Monat gleich?&lt;/strong&gt;&lt;br&gt;
Prüfen Sie die Preisseite und Ihre Rechnung. Bestätigen Sie den Verlängerungspreis und den Abrechnungszeitraum, bevor Sie sich binden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux oder Windows?&lt;/strong&gt;&lt;br&gt;
Wenn Ihre Software unter Linux läuft, wählen Sie Linux, das günstiger ist. Windows brauchen Sie für bestimmte Windows-Programme; ACLClouds bietet dafür auch Windows-RDP-Server an.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warum ist ein VPS günstiger als ein dedizierter Server?&lt;/strong&gt;&lt;br&gt;
Ein VPS teilt die physische Hardware zwischen mehreren virtuellen Maschinen. Sie erhalten dedizierte Ressourcen für Ihre VM, aber nicht die ganze physische Maschine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weiterlesen
&lt;/h2&gt;

&lt;p&gt;Testen Sie mit dem kleinsten Tarif, der zu Ihrem Stack passt, messen Sie einen Monat lang und steigen Sie nur auf, wenn die Zahlen es verlangen. Unsere Seiten: &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; (Englisch) und &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt; (Französisch).&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, Gründer von ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vps</category>
      <category>linux</category>
      <category>selfhosting</category>
      <category>german</category>
    </item>
    <item>
      <title>Hosting gratis para bots de Discord: guía práctica 2026</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:52:41 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/hosting-gratis-para-bots-de-discord-guia-practica-2026-2d6i</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/hosting-gratis-para-bots-de-discord-guia-practica-2026-2d6i</guid>
      <description>&lt;p&gt;Divulgación: soy Antonin Courtadon, fundador de ACLClouds.&lt;/p&gt;

&lt;p&gt;Tu bot funciona en tu ordenador, pero deja de responder en cuanto apagas la máquina o cierras la terminal. Un hosting gratuito resuelve eso, pero antes de elegir conviene entender qué significa «gratis» en cada oferta: casi siempre hay un límite de tiempo, de recursos o de ambos.&lt;/p&gt;

&lt;p&gt;Esta guía usa como ejemplo la oferta gratuita de ACLClouds, cuyas cifras conozco, y termina con una lista de comprobación válida para cualquier proveedor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué necesita un bot para estar «24/7»
&lt;/h2&gt;

&lt;p&gt;Un bot es un programa que mantiene una conexión con Discord y espera eventos: un mensaje, un miembro nuevo, un comando slash. Solo responde mientras su proceso está en marcha. Para que siga en línea hacen falta tres cosas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;que el proceso &lt;strong&gt;arranque&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;que el proceso &lt;strong&gt;sobreviva&lt;/strong&gt; a caídas y picos de memoria;&lt;/li&gt;
&lt;li&gt;que el &lt;strong&gt;periodo de hosting siga vigente&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;El tercer punto es el que más se olvida. Muchas ofertas gratuitas caducan. Si el plazo termina sin renovación, el bot se detiene aunque el código sea correcto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Las cifras de la oferta gratuita de ACLClouds
&lt;/h2&gt;

&lt;p&gt;Estos son los valores del plan gratuito de bot de Discord en el momento de escribir este artículo. Compruébalos en la página de tu bot antes de depender de ellos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1 bot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;315 MB de RAM&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0,25 vCPU&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;715 MB de almacenamiento&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subidas de hasta 100 MB&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 días gratis&lt;/strong&gt;, renovables sin coste desde la página del bot. Puedes renovar en los 2 días previos a la caducidad o cuando el bot esté suspendido.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada bot tiene su propio acceso SFTP (puerto 2222, usuario &lt;code&gt;bot-&lt;/code&gt; seguido de 8 caracteres), una tarjeta para el token de Discord, consola con registros y detección automática del archivo de inicio. Las imágenes de Node.js y Python incluyen ffmpeg, yt-dlp y deno, útiles si tu bot reproduce audio o descarga contenido.&lt;/p&gt;

&lt;p&gt;Son recursos modestos: bastan para un bot de moderación, de bienvenida, de tickets o de utilidades con pocos comandos. No bastan si el bot guarda en caché miles de miembros, carga un modelo de IA grande o transcodifica vídeo sin parar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tabla: qué comprobar antes de elegir
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterio&lt;/th&gt;
&lt;th&gt;Por qué importa&lt;/th&gt;
&lt;th&gt;Plan gratuito de ACLClouds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Duración y renovación&lt;/td&gt;
&lt;td&gt;Un plazo caducado detiene el bot sin aviso&lt;/td&gt;
&lt;td&gt;4 días, renovable desde la página del bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Los bots de Node.js y Python crecen con la caché&lt;/td&gt;
&lt;td&gt;315 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Bucles largos, imágenes y audio consumen CPU&lt;/td&gt;
&lt;td&gt;0,25 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Almacenamiento&lt;/td&gt;
&lt;td&gt;Registros, descargas y cachés llenan el disco&lt;/td&gt;
&lt;td&gt;715 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tamaño de subida&lt;/td&gt;
&lt;td&gt;El código y las dependencias pasan por el panel&lt;/td&gt;
&lt;td&gt;Hasta 100 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acceso a archivos&lt;/td&gt;
&lt;td&gt;Corregir sin redesplegar todo&lt;/td&gt;
&lt;td&gt;SFTP en el puerto 2222, una cuenta por bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Registros&lt;/td&gt;
&lt;td&gt;Para entender un fallo a las 3 de la madrugada&lt;/td&gt;
&lt;td&gt;Registros y consola por bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Archivo de inicio&lt;/td&gt;
&lt;td&gt;Un punto de entrada no encontrado hace perder tiempo&lt;/td&gt;
&lt;td&gt;Detección automática&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paso a plan de pago&lt;/td&gt;
&lt;td&gt;Evita migrar todo cuando el bot crece&lt;/td&gt;
&lt;td&gt;Planes de pago: de 1 a 4 vCPU por bot&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Si un proveedor no te da estas cifras, pídelas antes de desplegar. Un proveedor serio las muestra en su página de planes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso a paso: un bot mínimo en discord.py
&lt;/h2&gt;

&lt;p&gt;El procedimiento es parecido en discord.js. Este bot responde «pong» al comando &lt;code&gt;!ping&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Crea la aplicación en el portal de desarrolladores de Discord.&lt;/strong&gt; En la sección &lt;em&gt;Bot&lt;/em&gt;, genera el token y cópialo. Nunca lo pegues en el código, en un repositorio ni en un chat. Activa también &lt;strong&gt;Message Content Intent&lt;/strong&gt;: sin esa opción, &lt;code&gt;message.content&lt;/code&gt; llega vacío.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Escribe el bot&lt;/strong&gt; en &lt;code&gt;bot.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;

&lt;span class="n"&gt;intents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_ready&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Conectado como &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;!ping&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pong&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y un &lt;code&gt;requirements.txt&lt;/code&gt; con la línea &lt;code&gt;discord.py&amp;gt;=2.3,&amp;lt;3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Pruébalo en tu ordenador.&lt;/strong&gt; En Linux o macOS: &lt;code&gt;export DISCORD_TOKEN="tu-token"&lt;/code&gt; y después &lt;code&gt;python bot.py&lt;/code&gt;. Cuando aparezca «Conectado como...», escribe &lt;code&gt;!ping&lt;/code&gt; en un servidor de pruebas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Súbelo al hosting.&lt;/strong&gt; En el panel de ACLClouds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;crea un bot (el plan gratuito incluye uno);&lt;/li&gt;
&lt;li&gt;sube tus archivos desde el panel o por SFTP, en el puerto 2222;&lt;/li&gt;
&lt;li&gt;pega el token en la &lt;strong&gt;tarjeta de token de Discord&lt;/strong&gt;. El panel rechaza un valor que parece un nombre de variable, por ejemplo el texto &lt;code&gt;DISCORD_TOKEN&lt;/code&gt; escrito en lugar del token;&lt;/li&gt;
&lt;li&gt;revisa el &lt;strong&gt;archivo de inicio&lt;/strong&gt; (&lt;code&gt;bot.py&lt;/code&gt; o &lt;code&gt;index.js&lt;/code&gt;);&lt;/li&gt;
&lt;li&gt;arranca el bot y abre la pestaña de &lt;strong&gt;registros&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No subas &lt;code&gt;node_modules&lt;/code&gt;, ni entornos virtuales, ni el archivo &lt;code&gt;.env&lt;/code&gt;. Mantente dentro de los 100 MB de subida y los 715 MB de almacenamiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Lee los registros.&lt;/strong&gt; El primer arranque es donde aparecen los errores:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mensaje&lt;/th&gt;
&lt;th&gt;Causa probable&lt;/th&gt;
&lt;th&gt;Solución&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Error de intents privilegiados&lt;/td&gt;
&lt;td&gt;Message Content Intent desactivado&lt;/td&gt;
&lt;td&gt;Actívalo en el portal y reinicia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;LoginFailure&lt;/code&gt; / token inválido&lt;/td&gt;
&lt;td&gt;Token incorrecto o regenerado&lt;/td&gt;
&lt;td&gt;Copia de nuevo el token en la tarjeta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ModuleNotFoundError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dependencias no instaladas&lt;/td&gt;
&lt;td&gt;Comprueba que &lt;code&gt;requirements.txt&lt;/code&gt; se haya subido&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;El bot se reinicia en bucle&lt;/td&gt;
&lt;td&gt;Excepción al arrancar&lt;/td&gt;
&lt;td&gt;Lee la primera línea del rastro, no la última&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Mantener el bot en línea
&lt;/h2&gt;

&lt;p&gt;El plazo gratuito caduca. Anota la fecha de inicio y renueva desde la página del bot dentro de la ventana permitida: en los 2 días previos a la caducidad, o cuando el bot esté suspendido. Un bot sin renovar se detiene, aunque su código sea perfecto.&lt;/p&gt;

&lt;p&gt;Guarda también tu código fuera del proveedor, en un repositorio Git privado. Así puedes volver a desplegarlo en minutos si algo falla.&lt;/p&gt;

&lt;h2&gt;
  
  
  Límites que conviene conocer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Un bot gratuito no es un servicio en el que puedas confiar sin mantenimiento: depende de la renovación y de los límites del plan.&lt;/li&gt;
&lt;li&gt;315 MB de RAM y 0,25 vCPU son poco. Escribe el código pensando en esos límites o contrata más.&lt;/li&gt;
&lt;li&gt;715 MB de almacenamiento bastan mientras los registros estén controlados. Un bot que escribe registros sin rotarlos llenará el disco.&lt;/li&gt;
&lt;li&gt;La renovación es responsabilidad tuya.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cuándo pasar a un plan de pago
&lt;/h2&gt;

&lt;p&gt;Conviene pagar cuando el bot está en varios servidores y responde todo el día, cuando necesita más de 315 MB de RAM, cuando añades tareas en segundo plano o un panel web, o cuando otras personas dependen de él. En ACLClouds, los planes de pago fijan los vCPU por bot: Starter 1, Pro 2, Advanced 3 y Business 4. Los precios están en la página de planes.&lt;/p&gt;

&lt;p&gt;Si necesitas un servidor completo y no solo un bot, nuestros VPS Linux empiezan en 16 GB de RAM y 4 vCPU.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;¿El hosting gratuito de bots es realmente gratis?&lt;/strong&gt;&lt;br&gt;
Sí, dentro de sus límites. La oferta de ACLClouds incluye un bot con 315 MB de RAM y 0,25 vCPU durante 4 días, renovables sin coste desde la página del bot. Gratis no significa desatendido: la renovación es lo que mantiene el bot activo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Mi bot puede funcionar 24/7 en el plan gratuito?&lt;/strong&gt;&lt;br&gt;
Funciona mientras el periodo esté vigente y lo renueves en la ventana prevista. La disponibilidad continua sin renovaciones requiere un plan de pago. Revisa las condiciones antes de que otros dependan del bot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Por qué mi bot se desconecta tras unos días?&lt;/strong&gt;&lt;br&gt;
La causa más habitual es un periodo caducado sin renovar. La segunda es superar la memoria asignada. Los registros te dirán cuál ha sido.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Necesito activar la intención de contenido de mensajes?&lt;/strong&gt;&lt;br&gt;
Sí, si tu bot lee el texto de los mensajes, por ejemplo con comandos con prefijo. Se activa en el portal de desarrolladores de Discord. Es una norma de Discord, no del proveedor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Puedo pasar a un plan de pago más adelante?&lt;/strong&gt;&lt;br&gt;
Sí. Mantén tu código en Git y el cambio será una modificación de configuración, no una reescritura.&lt;/p&gt;

&lt;h2&gt;
  
  
  Más información
&lt;/h2&gt;

&lt;p&gt;Puedes ver la oferta de bots en &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; (inglés) y la versión en francés en &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, fundador de ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;




</description>
      <category>discord</category>
      <category>python</category>
      <category>node</category>
      <category>spanish</category>
    </item>
    <item>
      <title>VPS Linux pas cher avec 16 Go de RAM : que faire avec</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:47:39 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/vps-linux-pas-cher-avec-16-go-de-ram-que-faire-avec-hmi</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/vps-linux-pas-cher-avec-16-go-de-ram-que-faire-avec-hmi</guid>
      <description>&lt;p&gt;Déclaration de transparence : je suis Antonin Courtadon, fondateur d'ACLClouds.&lt;/p&gt;

&lt;p&gt;Il y a quelques années, 16 Go de RAM étaient une machine qu'on louait à l'année. Aujourd'hui, plusieurs hébergeurs les proposent pour moins de 10 € par mois. La vraie question n'est plus « puis-je me le payer », mais « qu'est-ce que je mets dessus, et que dois-je gérer moi-même ».&lt;/p&gt;

&lt;p&gt;Cet article utilise les offres d'ACLClouds comme exemple, parce que je connais leurs chiffres. La méthode, en revanche, marche avec n'importe quel VPS : adapter la charge aux ressources, puis vérifier ce que l'hébergeur prend en charge et ce qu'il ne prend pas en charge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que signifient les chiffres
&lt;/h2&gt;

&lt;p&gt;Un VPS (serveur privé virtuel) est une machine virtuelle sur un serveur physique. Elle a son système d'exploitation, sa propre adresse IP et un accès root. Ce qui tourne dedans relève de vous.&lt;/p&gt;

&lt;p&gt;Trois valeurs comptent :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;La RAM&lt;/strong&gt; détermine combien de services peuvent rester chargés en même temps. Quand elle manque, Linux passe par le swap et tout ralentit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les vCPU&lt;/strong&gt; sont une part du temps processeur. Quatre vCPU représentent quatre cœurs virtuels, mais le serveur physique est partagé : une charge soutenue peut donc varier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le disque&lt;/strong&gt; accueille le système, les bases de données, les journaux, les sauvegardes et les fichiers envoyés. Il se remplit plus vite qu'on ne le croit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour la plupart des petites charges, la RAM est la première limite, puis le disque. Le processeur compte surtout pour la compression, le transcodage ou le calcul en lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les offres Linux d'ACLClouds
&lt;/h2&gt;

&lt;p&gt;Voici les VPS Linux publiés au moment où j'écris. Les prix et les caractéristiques peuvent changer : confirmez-les sur la page des tarifs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Offre&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;Disque&lt;/th&gt;
&lt;th&gt;Prix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mini&lt;/td&gt;
&lt;td&gt;8 Go&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;40 Go&lt;/td&gt;
&lt;td&gt;4,99 € / mois&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Essentiel&lt;/td&gt;
&lt;td&gt;16 Go&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;80 Go&lt;/td&gt;
&lt;td&gt;9,99 € / mois&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;48 Go&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;150 Go&lt;/td&gt;
&lt;td&gt;21,99 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;64 Go&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;250 Go&lt;/td&gt;
&lt;td&gt;34,99 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prix mensuels TTC sans engagement ; avec un engagement d'un an : 3,99, 7,99, 17,59 et 27,99 € par mois.&lt;/p&gt;

&lt;p&gt;L'offre Essentiel, celle de cet article, donne 16 Go de RAM et 4 vCPU pour 9,99 € par mois, avec une virtualisation KVM et des serveurs en France.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que cache « moins de 10 € »
&lt;/h2&gt;

&lt;p&gt;Un prix bas ne sert que si vous savez ce que vous achetez. Vérifiez ces points avant de payer.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critère&lt;/th&gt;
&lt;th&gt;Pourquoi&lt;/th&gt;
&lt;th&gt;Offre Essentiel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Nombre de services gardés en mémoire&lt;/td&gt;
&lt;td&gt;16 Go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vCPU&lt;/td&gt;
&lt;td&gt;Capacité de calcul soutenu&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disque&lt;/td&gt;
&lt;td&gt;Bases, journaux et sauvegardes le remplissent&lt;/td&gt;
&lt;td&gt;80 Go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtualisation&lt;/td&gt;
&lt;td&gt;Isolation vis-à-vis des autres clients&lt;/td&gt;
&lt;td&gt;KVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Localisation&lt;/td&gt;
&lt;td&gt;Latence et lieu de stockage des données&lt;/td&gt;
&lt;td&gt;France&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contrôle du système&lt;/td&gt;
&lt;td&gt;Il faut root pour installer ce que vous voulez&lt;/td&gt;
&lt;td&gt;Accès root sur la VM Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mises à jour de sécurité&lt;/td&gt;
&lt;td&gt;Qui applique les correctifs&lt;/td&gt;
&lt;td&gt;Vous, sauf si vous mettez en place un outil dédié&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sauvegardes&lt;/td&gt;
&lt;td&gt;Une VM n'est pas une sauvegarde&lt;/td&gt;
&lt;td&gt;À votre charge : planifiez vos copies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Les deux dernières lignes sont celles qu'on oublie. Un VPS donne le contrôle, et le contrôle implique du travail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que faire avec 16 Go
&lt;/h2&gt;

&lt;p&gt;Tout dépend de ce que font les services, pas seulement de leur nombre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Une flotte de bots Discord ou Telegram.&lt;/strong&gt; Plusieurs bots Node.js ou Python, chacun avec son gestionnaire de processus, tiennent sur une fraction des 16 Go. Vos limites sont la croissance mémoire de chaque bot et ses connexions sortantes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Un petit site ou une API.&lt;/strong&gt; Une application Laravel, Node ou Django avec PostgreSQL ou MySQL convient bien. Gardez la base et l'application sur la même machine seulement si le trafic est modeste, et mesurez la mémoire sous charge réelle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Un serveur de jeu pour un petit groupe.&lt;/strong&gt; Beaucoup de serveurs de jeu sont gourmands en mémoire. Vérifiez les besoins du jeu précis et le nombre de joueurs. Un serveur Minecraft pour quelques amis peut cohabiter avec un bot ; un serveur pour des dizaines de joueurs demande une vraie planification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Des outils auto-hébergés.&lt;/strong&gt; Forge Git, gestionnaire de mots de passe, wiki, supervision, synchronisation de fichiers. C'est un bon usage de la RAM disponible, mais chaque outil est une chose de plus à mettre à jour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Développement et préproduction.&lt;/strong&gt; Une copie de test de votre application, une base de test et un runner de CI peuvent cohabiter, à condition de les isoler par utilisateurs distincts et ports clairs.&lt;/p&gt;

&lt;p&gt;Ce qui tient mal : tout ce qui exige un gros cache, un index de recherche volumineux ou un modèle d'IA gardé en mémoire en permanence. Il faut alors une offre plus grande ou une autre architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les limites honnêtes d'un VPS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vous l'administrez.&lt;/strong&gt; Mises à jour, pare-feu, clés SSH, fail2ban, rotation des journaux et sauvegardes vous incombent. Si vous ne l'avez jamais fait, apprenez les bases avant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un VPS n'est pas la haute disponibilité.&lt;/strong&gt; Une seule machine est un point de défaillance. Si le service compte, prévoyez une seconde machine ou une procédure de restauration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les limites de ressources sont réelles.&lt;/strong&gt; 16 Go et 4 vCPU suffisent beaucoup pour une petite pile, pas pour une grosse. Mesurez avant de prendre plus grand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le prix n'est pas une promesse de tranquillité.&lt;/strong&gt; Vérifiez si le tarif est récurrent, s'il inclut la TVA et ce qui change au renouvellement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Liste de démarrage
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Créez un utilisateur non-root, ajoutez votre clé SSH et désactivez la connexion par mot de passe.&lt;/li&gt;
&lt;li&gt;Lancez la mise à jour du système et activez les mises à jour de sécurité automatiques.&lt;/li&gt;
&lt;li&gt;Configurez un pare-feu qui n'ouvre que les ports utiles (22 pour SSH, 80 et 443 pour un site).&lt;/li&gt;
&lt;li&gt;Installez chaque service dans un conteneur ou un utilisateur séparé, pour qu'un plantage n'emporte pas les autres.&lt;/li&gt;
&lt;li&gt;Mesurez la mémoire après une heure, puis après une journée :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
ps aux &lt;span class="nt"&gt;--sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-%mem | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Planifiez une sauvegarde de vos données hors de la machine, et testez une restauration.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Questions fréquentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Faut-il 16 Go de RAM pour un bot ?&lt;/strong&gt;&lt;br&gt;
Non. Un bot a besoin de beaucoup moins. On prend 16 Go pour faire cohabiter plusieurs services sans tout repenser à chaque ajout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puis-je installer Docker ?&lt;/strong&gt;&lt;br&gt;
Sur un VPS Linux avec accès root, oui : c'est l'approche courante pour faire tourner plusieurs services. Suivez le guide d'installation de votre système d'exploitation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le prix reste-t-il le même après le premier mois ?&lt;/strong&gt;&lt;br&gt;
Vérifiez la page des tarifs et votre facture : confirmez le tarif de renouvellement et la période de facturation avant de vous engager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Faut-il une offre Linux ou Windows ?&lt;/strong&gt;&lt;br&gt;
Si votre logiciel tourne sous Linux, choisissez Linux, moins cher. Windows est nécessaire pour certains logiciels Windows ; ACLClouds propose aussi des VPS Windows en RDP pour ces cas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pourquoi un VPS coûte-t-il moins cher qu'un serveur dédié ?&lt;/strong&gt;&lt;br&gt;
Un VPS partage le matériel physique entre plusieurs machines virtuelles. Vous disposez de ressources dédiées à votre VM, pas de la machine entière.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pour aller plus loin
&lt;/h2&gt;

&lt;p&gt;Si vous voulez tester l'idée, commencez par le plus petit plan qui convient à votre pile, mesurez, et ne montez en gamme que si les chiffres le demandent. Nos pages VPS : &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt; (français) et &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; (anglais).&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, fondateur d'ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vps</category>
      <category>linux</category>
      <category>selfhosting</category>
      <category>french</category>
    </item>
    <item>
      <title>Héberger un bot Discord gratuitement en 2026 : limites réelles</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:45:18 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/heberger-un-bot-discord-gratuitement-en-2026-limites-reelles-m0j</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/heberger-un-bot-discord-gratuitement-en-2026-limites-reelles-m0j</guid>
      <description>&lt;p&gt;Déclaration de transparence : je suis Antonin Courtadon, fondateur d'ACLClouds.&lt;/p&gt;

&lt;p&gt;Votre bot tourne sur votre ordinateur, mais il s'arrête dès que vous fermez le terminal ou éteignez la machine. La solution la plus rapide est un hébergement gratuit. La question utile est ailleurs : que peut-on faire avec, et combien de temps tient le gratuit ?&lt;/p&gt;

&lt;p&gt;Cet article répond à ces deux questions. Il prend pour exemple l'offre gratuite d'ACLClouds, dont je connais les chiffres, et il explique comment vérifier n'importe quel hébergeur avant de s'engager.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que « 24/7 » veut dire concrètement
&lt;/h2&gt;

&lt;p&gt;Un bot est un programme qui reste connecté à Discord et attend les événements : un message, un nouveau membre, une commande slash. Il ne fonctionne que tant que son processus tourne. Pour qu'il reste en ligne, il faut trois choses :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;un processus qui démarre&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;un processus qui survit&lt;/strong&gt; aux plantages et aux pics de mémoire ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;un créneau d'hébergement encore valide&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Le troisième point est celui qu'on oublie. Beaucoup d'offres gratuites sont limitées dans le temps. Quand le créneau expire sans renouvellement, le bot s'arrête, quel que soit le code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les chiffres de l'offre gratuite ACLClouds
&lt;/h2&gt;

&lt;p&gt;Voici les valeurs de l'offre gratuite de bot Discord, telles qu'elles sont au moment où j'écris. Vérifiez-les sur la page du bot avant de vous engager.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1 bot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;315 Mo de RAM&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0,25 vCPU&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;715 Mo de stockage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Envois jusqu'à 100 Mo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 jours gratuits&lt;/strong&gt;, renouvelables gratuitement depuis la page du bot. Le renouvellement est possible dans les 2 jours qui précèdent l'expiration, ou une fois le bot suspendu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chaque bot dispose de son propre accès SFTP (port 2222, identifiant &lt;code&gt;bot-&lt;/code&gt; suivi de 8 caractères), d'une carte pour le token Discord, d'une console avec les journaux, et d'une détection automatique du fichier de démarrage. Les images Node.js et Python incluent ffmpeg, yt-dlp et deno, utiles si votre bot lit de l'audio ou télécharge des médias.&lt;/p&gt;

&lt;p&gt;Ces valeurs sont modestes. 315 Mo suffisent pour un bot de modération, un bot d'accueil, un bot de tickets ou un bot utilitaire avec quelques commandes. Elles ne suffisent pas pour un bot qui met en cache des milliers de membres, charge un modèle d'IA volumineux ou transcode de la vidéo en boucle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tableau : quoi vérifier avant de choisir
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critère&lt;/th&gt;
&lt;th&gt;Pourquoi c'est important&lt;/th&gt;
&lt;th&gt;Offre gratuite ACLClouds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Durée et renouvellement&lt;/td&gt;
&lt;td&gt;Un créneau expiré arrête le bot sans prévenir&lt;/td&gt;
&lt;td&gt;4 jours, renouvelable depuis la page du bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Les bots Node.js et Python grossissent avec le cache&lt;/td&gt;
&lt;td&gt;315 Mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Processeur&lt;/td&gt;
&lt;td&gt;Boucles longues, traitement d'images ou d'audio&lt;/td&gt;
&lt;td&gt;0,25 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stockage&lt;/td&gt;
&lt;td&gt;Journaux, fichiers téléchargés, caches&lt;/td&gt;
&lt;td&gt;715 Mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Taille d'envoi&lt;/td&gt;
&lt;td&gt;Code, ressources et dépendances passent par le panneau&lt;/td&gt;
&lt;td&gt;Jusqu'à 100 Mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accès aux fichiers&lt;/td&gt;
&lt;td&gt;Corriger sans tout redéployer&lt;/td&gt;
&lt;td&gt;SFTP, port 2222, un compte par bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Journaux&lt;/td&gt;
&lt;td&gt;Pour comprendre un plantage à 3 h du matin&lt;/td&gt;
&lt;td&gt;Journaux et console par bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fichier de démarrage&lt;/td&gt;
&lt;td&gt;Un point d'entrée non trouvé fait perdre du temps&lt;/td&gt;
&lt;td&gt;Détection automatique&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passage à une offre payante&lt;/td&gt;
&lt;td&gt;Éviter de tout migrer si le bot grandit&lt;/td&gt;
&lt;td&gt;Offres payantes : 1 à 4 vCPU par bot selon l'offre&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Si un hébergeur ne vous donne pas ces chiffres, demandez-les avant de déployer. Un hébergeur honnête les affiche sur sa page d'offres.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pas à pas : déployer un bot discord.py
&lt;/h2&gt;

&lt;p&gt;Le principe est le même pour discord.js. Voici un bot minimal qui répond « pong » à la commande &lt;code&gt;!ping&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Créer l'application dans le portail développeur Discord.&lt;/strong&gt; Dans la section &lt;em&gt;Bot&lt;/em&gt;, générez le token et copiez-le. Ne le collez jamais dans le code, un dépôt Git ou un message. Activez aussi &lt;strong&gt;Message Content Intent&lt;/strong&gt; : sans lui, &lt;code&gt;message.content&lt;/code&gt; arrive vide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Écrire le bot&lt;/strong&gt; (fichier &lt;code&gt;bot.py&lt;/code&gt;) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;

&lt;span class="n"&gt;intents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_ready&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Connecté en tant que &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;!ping&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pong&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et un fichier &lt;code&gt;requirements.txt&lt;/code&gt; contenant &lt;code&gt;discord.py&amp;gt;=2.3,&amp;lt;3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Tester sur votre ordinateur.&lt;/strong&gt; Sous Linux ou macOS : &lt;code&gt;export DISCORD_TOKEN="votre-token"&lt;/code&gt;, puis &lt;code&gt;python bot.py&lt;/code&gt;. Quand le terminal affiche « Connecté en tant que... », tapez &lt;code&gt;!ping&lt;/code&gt; sur le serveur de test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Envoyer le bot sur l'hébergement.&lt;/strong&gt; Dans le tableau de bord ACLClouds :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;créez un bot (l'offre gratuite en inclut un) ;&lt;/li&gt;
&lt;li&gt;envoyez vos fichiers par le panneau ou en SFTP, sur le port 2222 ;&lt;/li&gt;
&lt;li&gt;collez le token dans la &lt;strong&gt;carte du token Discord&lt;/strong&gt;. Le panneau refuse une valeur qui ressemble à un nom de variable, par exemple le texte &lt;code&gt;DISCORD_TOKEN&lt;/code&gt; tapé à la place du token ;&lt;/li&gt;
&lt;li&gt;vérifiez le &lt;strong&gt;fichier de démarrage&lt;/strong&gt; (&lt;code&gt;bot.py&lt;/code&gt; ou &lt;code&gt;index.js&lt;/code&gt;) ;&lt;/li&gt;
&lt;li&gt;lancez le bot et ouvrez l'onglet &lt;strong&gt;journaux&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;N'envoyez ni &lt;code&gt;node_modules&lt;/code&gt;, ni environnement virtuel, ni fichier &lt;code&gt;.env&lt;/code&gt;. Restez dans les 100 Mo d'envoi et les 715 Mo de stockage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Lire les journaux.&lt;/strong&gt; Le premier démarrage est celui où les erreurs apparaissent. Erreurs fréquentes :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Message&lt;/th&gt;
&lt;th&gt;Cause probable&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Erreur d'intents privilégiés&lt;/td&gt;
&lt;td&gt;Message Content Intent désactivé&lt;/td&gt;
&lt;td&gt;Activez-le dans le portail, puis redémarrez&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;LoginFailure&lt;/code&gt; / token invalide&lt;/td&gt;
&lt;td&gt;Token incorrect ou réinitialisé&lt;/td&gt;
&lt;td&gt;Recopiez le token dans la carte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ModuleNotFoundError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dépendances absentes&lt;/td&gt;
&lt;td&gt;Vérifiez que &lt;code&gt;requirements.txt&lt;/code&gt; est envoyé&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Le bot redémarre en boucle&lt;/td&gt;
&lt;td&gt;Exception au démarrage&lt;/td&gt;
&lt;td&gt;Lisez la première ligne de la trace, pas la dernière&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Garder le bot en ligne
&lt;/h2&gt;

&lt;p&gt;Le créneau gratuit expire. Notez la date de démarrage et renouvelez depuis la page du bot dans la fenêtre prévue : dans les 2 jours avant l'expiration, ou une fois le bot suspendu. Un bot non renouvelé s'arrête, même si son code est parfait.&lt;/p&gt;

&lt;p&gt;Gardez aussi votre code hors de l'hébergeur, dans un dépôt Git privé. Vous pourrez redéployer en quelques minutes si quelque chose casse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limites à connaître
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Un bot gratuit n'est pas un service sur lequel compter sans entretien : il dépend du renouvellement et des limites de l'offre.&lt;/li&gt;
&lt;li&gt;315 Mo de RAM et 0,25 vCPU sont peu. Écrivez votre code pour ces limites, ou prenez une offre supérieure.&lt;/li&gt;
&lt;li&gt;715 Mo de stockage suffisent tant que vos journaux tournent. Un bot qui écrit des journaux sans rotation finira par remplir le disque.&lt;/li&gt;
&lt;li&gt;Le renouvellement est de votre responsabilité.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quand passer à une offre payante
&lt;/h2&gt;

&lt;p&gt;Passez à une offre payante quand le bot est présent sur plusieurs serveurs et répond toute la journée, quand il lui faut plus de 315 Mo de RAM, quand vous ajoutez des tâches de fond ou un tableau de bord web, ou quand d'autres personnes dépendent de lui. Sur ACLClouds, les offres payantes fixent le nombre de vCPU par bot : Starter 1, Pro 2, Advanced 3, Business 4. Les tarifs se trouvent sur la page des offres.&lt;/p&gt;

&lt;p&gt;Si vous avez besoin d'un serveur complet plutôt que d'un bot, nos VPS Linux démarrent à 8 Go de RAM et 2 vCPU (voir l'article suivant de cette série).&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions fréquentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Un hébergement de bot gratuit est-il vraiment gratuit ?&lt;/strong&gt;&lt;br&gt;
Oui, dans ses limites. L'offre ACLClouds donne un bot avec 315 Mo de RAM et 0,25 vCPU pour 4 jours, renouvelables gratuitement depuis la page du bot. Gratuit ne veut pas dire sans surveillance : c'est le renouvellement qui maintient le bot en ligne.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mon bot peut-il tourner 24 h/24 sur l'offre gratuite ?&lt;/strong&gt;&lt;br&gt;
Il tourne tant que le créneau est valide et que vous le renouvelez dans la fenêtre prévue. Une disponibilité continue sans renouvellement suppose une offre payante ; vérifiez les conditions avant de faire dépendre un service de votre bot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pourquoi mon bot est-il hors ligne après quelques jours ?&lt;/strong&gt;&lt;br&gt;
La cause la plus fréquente est un créneau expiré non renouvelé. La deuxième est un dépassement de mémoire. Les journaux indiquent laquelle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dois-je activer l'intention « contenu des messages » ?&lt;/strong&gt;&lt;br&gt;
Oui si votre bot lit le texte des messages (commandes préfixées, par exemple). Vous l'activez dans le portail développeur Discord. C'est une règle de Discord, pas de l'hébergeur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puis-je passer plus tard à une offre payante ?&lt;/strong&gt;&lt;br&gt;
Oui. Gardez votre code dans Git : le passage devient un changement de configuration, pas une réécriture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pour aller plus loin
&lt;/h2&gt;

&lt;p&gt;Consultez la page de l'offre de bot sur &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt; et, pour la version anglaise, &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, fondateur d'ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;




</description>
      <category>discord</category>
      <category>python</category>
      <category>node</category>
      <category>french</category>
    </item>
    <item>
      <title>Free Subdomain for Your Game Server, Bot or Website: How It Works</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:39:54 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/free-subdomain-for-your-game-server-bot-or-website-how-it-works-2of6</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/free-subdomain-for-your-game-server-bot-or-website-how-it-works-2of6</guid>
      <description>&lt;p&gt;Disclosure: I'm Antonin Courtadon, founder of ACLClouds.&lt;/p&gt;

&lt;p&gt;Nobody wants to share &lt;code&gt;203.0.113.45:25565&lt;/code&gt; with friends. A name such as &lt;code&gt;play.example.com&lt;/code&gt; is easier to remember, easier to change when the server moves, and easier to put on a poster. That is what a subdomain does: it attaches a readable name to a service.&lt;/p&gt;

&lt;p&gt;This article explains how that mapping works, where it stops working, and how to get a free subdomain on aclclouds.online for a game server, a bot dashboard or a small website.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a subdomain works
&lt;/h2&gt;

&lt;p&gt;The Domain Name System (DNS) translates names into addresses. A domain such as &lt;code&gt;example.com&lt;/code&gt; has records; a record of type &lt;strong&gt;A&lt;/strong&gt; points a name to an IPv4 address. A &lt;strong&gt;CNAME&lt;/strong&gt; points a name to another name. A subdomain is just a name below the domain, such as &lt;code&gt;play.example.com&lt;/code&gt;, with its own record.&lt;/p&gt;

&lt;p&gt;When someone types &lt;code&gt;play.example.com&lt;/code&gt;, their computer asks DNS for the address, receives the IP of your server, and connects to it. The rest is up to the service listening on that address.&lt;/p&gt;

&lt;p&gt;Two things DNS does not do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It does not choose the port.&lt;/strong&gt; The name leads to an IP. The port (for example 80 for HTTP, 443 for HTTPS, 25565 for Minecraft) is still set by the service and by the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not guarantee the server is running.&lt;/strong&gt; A correct name pointing to a stopped server gives the same error as a wrong IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web apps versus game servers
&lt;/h2&gt;

&lt;p&gt;For a website or a dashboard, the subdomain is usually enough: the browser uses port 443, and a reverse proxy routes the request to your app. You set the record and the proxy handles the rest.&lt;/p&gt;

&lt;p&gt;For a game server, the situation depends on the game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some games let the client connect to a hostname and port typed by the player (&lt;code&gt;play.example.com:25565&lt;/code&gt;). The subdomain works, but the port must still be open and reachable.&lt;/li&gt;
&lt;li&gt;Minecraft also supports an SRV record (&lt;code&gt;_minecraft._tcp&lt;/code&gt;), which tells clients the port to use. If the name is &lt;code&gt;play.example.com&lt;/code&gt; and the SRV record points to the port, players can type just the name. Check your server software's documentation before relying on it, because support varies.&lt;/li&gt;
&lt;li&gt;Some games and bots need a fixed IP. A subdomain can change without disturbing players, but the server's address still has to be stable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be careful with the word "free". A free subdomain makes a name available. It does not make a game server free to run, and it does not open ports for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ACLClouds offers
&lt;/h2&gt;

&lt;p&gt;ACLClouds provides free subdomains on &lt;strong&gt;aclclouds.online&lt;/strong&gt;. The free-subdomains page is in the client dashboard. Check on that page which kinds of service a subdomain can be attached to before you plan your setup, because the rules can differ between hosted services and external machines.&lt;/p&gt;

&lt;p&gt;Practical notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free subdomains are on aclclouds.online. If you want your own domain (for example &lt;code&gt;play.yourbrand.com&lt;/code&gt;), you set up that domain's DNS records yourself, at your registrar.&lt;/li&gt;
&lt;li&gt;A subdomain is a name, not a hosting slot. You still need a service running behind it.&lt;/li&gt;
&lt;li&gt;Keep the record pointing at the right address. When you move a server, update the record and wait for it to propagate. Old caches can keep the previous address for a while.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step by step: a free subdomain for a small web app
&lt;/h2&gt;

&lt;p&gt;Imagine a small web dashboard for a project, listening on port 3000.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the free subdomains page in the ACLClouds dashboard and reserve a name, for example &lt;code&gt;mybot&lt;/code&gt;. The address becomes &lt;code&gt;mybot.aclclouds.online&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Attach the name to the service it should reach, using the fields the page shows. The exact screens can change, so follow the labels on the page rather than a remembered layout.&lt;/li&gt;
&lt;li&gt;Make sure your app listens on the port it is attached to, and that it binds to all interfaces (&lt;code&gt;0.0.0.0&lt;/code&gt;), not only to &lt;code&gt;127.0.0.1&lt;/code&gt;. An app bound to localhost is invisible from outside.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;https://mybot.aclclouds.online&lt;/code&gt; in a browser. If it does not load, check the app logs first, then the attachment, then the port.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a game server, the first steps are the same. The difference is that a game client connects with a hostname and port, so you must also make sure the game's port is reachable through the firewall rules of your server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison: what to check on a subdomain service
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;th&gt;ACLClouds free subdomains&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Domain used&lt;/td&gt;
&lt;td&gt;Determines how people reach you&lt;/td&gt;
&lt;td&gt;aclclouds.online&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Free names still need a running service&lt;/td&gt;
&lt;td&gt;Free to reserve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your own domain&lt;/td&gt;
&lt;td&gt;Brand and long-term control&lt;/td&gt;
&lt;td&gt;Set up in your own DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Record management&lt;/td&gt;
&lt;td&gt;Lets you change the target&lt;/td&gt;
&lt;td&gt;Managed from the dashboard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Game ports&lt;/td&gt;
&lt;td&gt;DNS does not open them&lt;/td&gt;
&lt;td&gt;Check your service's port and firewall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changes&lt;/td&gt;
&lt;td&gt;Old caches delay the switch&lt;/td&gt;
&lt;td&gt;Plan a few minutes of propagation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limits, stated plainly
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A subdomain does not replace security. Do not expose a dashboard or an admin panel without authentication.&lt;/li&gt;
&lt;li&gt;A game port is still a port. If your home network blocks it, the name will not help.&lt;/li&gt;
&lt;li&gt;Free subdomains are for the platform's domain. A brand-new domain with your own name is a separate setup and a separate cost.&lt;/li&gt;
&lt;li&gt;Changes are not instant. Expect minutes, sometimes longer, before every client sees a new target.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is a free subdomain the same as a domain?&lt;/strong&gt;&lt;br&gt;
It is a name under a domain that someone else owns. On aclclouds.online, the domain belongs to ACLClouds and the subdomain is yours to use within the platform rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use a free subdomain for a game server?&lt;/strong&gt;&lt;br&gt;
Yes, if the server software supports a hostname and port, and if the port is open. Test with a friend outside your network before you announce the address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my site show an error after I set the subdomain?&lt;/strong&gt;&lt;br&gt;
Check that the app runs, that it listens on the right port and interface, and that the record points at the target you chose. Propagation can take a little time after a change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an SRV record?&lt;/strong&gt;&lt;br&gt;
Only for games that support it, such as Minecraft, and only if you want players to type the name without a port. Otherwise type the port after the name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens if I stop the service?&lt;/strong&gt;&lt;br&gt;
The name still exists, but nothing answers. Visitors see a connection error, not a redirect, so tell your users about maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Reserve a free subdomain, point it at a test service, and check that it loads from a phone on mobile data. That single test catches most setup mistakes. The English documentation is at &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; and the French one at &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, founder of ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>subdomain</category>
      <category>dns</category>
      <category>gameserver</category>
      <category>selfhosting</category>
    </item>
    <item>
      <title>Cheap VPS with 16 GB RAM Under 10 Euros a Month: What It Runs</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:34:28 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/cheap-vps-with-16-gb-ram-under-10-euros-a-month-what-it-runs-30lj</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/cheap-vps-with-16-gb-ram-under-10-euros-a-month-what-it-runs-30lj</guid>
      <description>&lt;p&gt;Disclosure: I'm Antonin Courtadon, founder of ACLClouds.&lt;/p&gt;

&lt;p&gt;Sixteen gigabytes of RAM used to be a server you paid for by the quarter. Today, several providers sell it for less than the price of a streaming subscription. The question is no longer "can I afford it" but "what should I put on it, and what do I have to look after myself".&lt;/p&gt;

&lt;p&gt;This article answers both questions. It uses the plans from ACLClouds as the worked example, because we know their numbers. The method works for any VPS: match the workload to the resources, then check what the provider does and does not handle for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers mean
&lt;/h2&gt;

&lt;p&gt;A VPS (virtual private server) is a virtual machine on a physical host, with its own operating system, its own IP address and root access. You are responsible for what runs inside it.&lt;/p&gt;

&lt;p&gt;Three figures matter most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM&lt;/strong&gt; decides how many services can stay in memory at once. When RAM runs out, Linux starts swapping, and everything slows down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vCPU&lt;/strong&gt; is a share of processor time. Four vCPU means four virtual cores that you share with nobody else on the same VM, but the physical host is shared with other customers' machines, so heavy sustained load can still vary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk&lt;/strong&gt; is where your operating system, databases, logs, backups and uploads live. It fills faster than people expect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most small workloads are limited by RAM first, then by disk. CPU matters when you compress, transcode, hash or render things in bulk.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ACLClouds Linux plans
&lt;/h2&gt;

&lt;p&gt;Here are the Linux VPS plans as published at the time of writing. Prices and specifications can change, so confirm them on the pricing page before you decide.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;Disk&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mini&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;4.99 EUR / month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Essentiel&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;td&gt;9.99 EUR / month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;48 GB&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;150 GB&lt;/td&gt;
&lt;td&gt;21.99 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;250 GB&lt;/td&gt;
&lt;td&gt;34.99 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prices are monthly without commitment; with a 1-year commitment they are 3.99, 7.99, 17.59 and 27.99 EUR a month (VAT included).&lt;/p&gt;

&lt;p&gt;The Essentiel plan is the one this article is about: 16 GB of RAM and 4 vCPU for 9.99 EUR a month, on KVM virtualisation, with servers in France.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "under 10 euros" hides
&lt;/h2&gt;

&lt;p&gt;A low price is only useful if you know what you are buying. Check these points before you pay for any VPS.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;th&gt;Essentiel plan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Limits how many services stay loaded&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vCPU&lt;/td&gt;
&lt;td&gt;Limits sustained processing&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk space&lt;/td&gt;
&lt;td&gt;Databases, logs and backups fill it&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtualisation&lt;/td&gt;
&lt;td&gt;Determines isolation from other customers&lt;/td&gt;
&lt;td&gt;KVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Location&lt;/td&gt;
&lt;td&gt;Latency for your users and data location&lt;/td&gt;
&lt;td&gt;France&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating system control&lt;/td&gt;
&lt;td&gt;You need root to install what you want&lt;/td&gt;
&lt;td&gt;Root access on the Linux VM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who handles security updates&lt;/td&gt;
&lt;td&gt;Decides who patches the system&lt;/td&gt;
&lt;td&gt;You do, unless you set up something else&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups&lt;/td&gt;
&lt;td&gt;A VM is not a backup&lt;/td&gt;
&lt;td&gt;Your responsibility; plan your own copies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last two rows are the ones people skip. A VPS gives you control, and control comes with work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can run on 16 GB
&lt;/h2&gt;

&lt;p&gt;The right answer depends on what the services do, not only on how many there are. These are workloads that fit comfortably, with a few honest notes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Discord or Telegram bot fleet.&lt;/strong&gt; Several bots in Node.js or Python, each with its own process manager, will run on a fraction of 16 GB. Your limits are the bots' own memory growth and their outbound connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A small website or API.&lt;/strong&gt; A Laravel, Node or Django app with a database such as PostgreSQL or MySQL fits well. Keep the database and the app on the same machine only if the traffic is modest, and measure RAM under real load before you assume it is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A game server for a small group.&lt;/strong&gt; Many game servers are memory hungry and some are single-threaded. Check the requirements of the specific game and the number of players. A Minecraft server for a few friends can run next to a bot. A server for dozens of players needs its own planning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted tools.&lt;/strong&gt; Git hosting, a password manager, a wiki, a monitoring stack, a file sync service. These are a good use of spare RAM, and each one is a new thing to update.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development and staging.&lt;/strong&gt; A staging copy of your app, a test database and a CI runner can share the box, provided you isolate them with separate users and clear ports.&lt;/p&gt;

&lt;p&gt;What does not fit well is anything that expects a large cache, a heavy search index or a machine-learning model to live in memory all the time. Those need a bigger plan or a different architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits of a VPS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You administer it.&lt;/strong&gt; Updates, firewall rules, SSH keys, fail2ban, log rotation and backups are yours. If you have never done them, learn the basics first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A VPS is not high availability.&lt;/strong&gt; One VM is one point of failure. If the workload matters, plan a second machine or a restore procedure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource limits are real.&lt;/strong&gt; 16 GB and 4 vCPU are a lot for a small stack, and not enough for a large one. Measure before you buy a bigger plan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price is not a promise.&lt;/strong&gt; Check whether the price is recurring, whether it includes VAT, and what happens at renewal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A first-day checklist
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a non-root user, add your SSH key and disable password login.&lt;/li&gt;
&lt;li&gt;Run the system update and enable automatic security updates.&lt;/li&gt;
&lt;li&gt;Set a firewall that allows only the ports you need (for example 22 for SSH, 80 and 443 for a website).&lt;/li&gt;
&lt;li&gt;Install your services in containers or separate users, so one crash does not take the others down.&lt;/li&gt;
&lt;li&gt;Measure memory after an hour and after a day:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
ps aux &lt;span class="nt"&gt;--sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-%mem | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Set up a backup of your data to a location outside the VM, and test one restore.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is 16 GB of RAM really needed for a bot?&lt;/strong&gt;&lt;br&gt;
No. A bot usually needs far less. The reason to choose 16 GB is that you can run several services together without rethinking the setup each time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I run Docker on it?&lt;/strong&gt;&lt;br&gt;
You can install Docker on a Linux VPS with root access, which is the common approach for running several services. Check the current setup guidance for your operating system before you start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the price the same after the first month?&lt;/strong&gt;&lt;br&gt;
Check the pricing page and your invoice. Confirm the renewal price and the billing period before you commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need a Linux plan or a Windows plan?&lt;/strong&gt;&lt;br&gt;
If your software runs on Linux, choose Linux, which is cheaper. Windows is needed for specific Windows software, and ACLClouds also offers Windows RDP plans for those cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does a VPS cost less than a dedicated server?&lt;/strong&gt;&lt;br&gt;
A VPS shares physical hardware between virtual machines. You get dedicated resources for your VM, but not the whole physical machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;If you want to test the idea, start with a month on the smallest plan that fits your stack, measure it, and move up only when the numbers say so. Our VPS pages are at &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; (English) and &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt; (French).&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, founder of ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;




</description>
      <category>vps</category>
      <category>linux</category>
      <category>cheapvps</category>
      <category>selfhosting</category>
    </item>
    <item>
      <title>Host a discord.py or discord.js Bot on a Free Host, Step by Step</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:30:32 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/host-a-discordpy-or-discordjs-bot-on-a-free-host-step-by-step-m5m</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/host-a-discordpy-or-discordjs-bot-on-a-free-host-step-by-step-m5m</guid>
      <description>&lt;p&gt;Disclosure: I'm Antonin Courtadon, founder of ACLClouds.&lt;/p&gt;

&lt;p&gt;This guide takes a minimal bot from your computer to a hosted process. You will write a bot that answers &lt;code&gt;!ping&lt;/code&gt; with "pong" (discord.py or discord.js), upload it, start it and check the logs. Once that works, you can replace the code with your own.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Discord account and a server where you have administrator rights;&lt;/li&gt;
&lt;li&gt;Python 3.10+ or Node.js 18+ on your computer for a quick local test;&lt;/li&gt;
&lt;li&gt;a free bot slot on a hosting platform (we use ACLClouds in the examples, but the steps are similar elsewhere).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create the bot in the Discord Developer Portal
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the Discord Developer Portal and create a new application.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Bot&lt;/strong&gt; section and create the bot user.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Reset Token&lt;/strong&gt; and copy the token. Treat it like a password. Do not paste it into code, a repository, a screenshot or a chat.&lt;/li&gt;
&lt;li&gt;In the same section, enable &lt;strong&gt;Message Content Intent&lt;/strong&gt; under &lt;em&gt;Privileged Gateway Intents&lt;/em&gt;. Without it, your bot receives messages with an empty &lt;code&gt;content&lt;/code&gt; field, which breaks prefix commands.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;OAuth2 → URL Generator&lt;/strong&gt;, select the &lt;code&gt;bot&lt;/code&gt; scope and the permissions you need (at minimum &lt;em&gt;Send Messages&lt;/em&gt; and &lt;em&gt;Read Message History&lt;/em&gt; for this test). Open the generated URL and add the bot to your test server.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Write the bot
&lt;/h2&gt;

&lt;h3&gt;
  
  
  discord.py (Python)
&lt;/h3&gt;

&lt;p&gt;Create a folder with two files: &lt;code&gt;bot.py&lt;/code&gt; and &lt;code&gt;requirements.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bot.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;

&lt;span class="n"&gt;intents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_ready&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Connected as &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@client.event&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;discord&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;!ping&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pong&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;requirements.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;discord.py&amp;gt;=2.3,&amp;lt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  discord.js (Node.js)
&lt;/h3&gt;

&lt;p&gt;Create a folder with &lt;code&gt;index.js&lt;/code&gt; and &lt;code&gt;package.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;index.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;discord.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Guilds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GuildMessages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MessageContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;once&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ready&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Connected as &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;messageCreate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!ping&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pong&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ping-bot"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node index.js"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"discord.js"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^14.16.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two details matter in both versions. The token is read from an environment variable, never written in the file. And the message content intent is requested in the code and must also be enabled in the portal, or Discord refuses the connection with an error about privileged intents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Test on your computer
&lt;/h2&gt;

&lt;p&gt;Before you upload anything, check that the bot connects. On Windows, Linux or macOS, the variable syntax differs slightly. On Linux or macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"paste-your-token-here"&lt;/span&gt;
python bot.py        &lt;span class="c"&gt;# discord.py&lt;/span&gt;
&lt;span class="c"&gt;# or&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm start   &lt;span class="c"&gt;# discord.js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you see &lt;code&gt;Connected as ...&lt;/code&gt; in the terminal, type &lt;code&gt;!ping&lt;/code&gt; in the test server. If the bot answers "pong", the code works. Stop it with Ctrl+C.&lt;/p&gt;

&lt;p&gt;If the bot does not answer, check these in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The bot is in the server and has &lt;em&gt;Send Messages&lt;/em&gt; in that channel.&lt;/li&gt;
&lt;li&gt;Message Content Intent is enabled in the portal.&lt;/li&gt;
&lt;li&gt;The token is current. If you reset it, the old one stops working.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 4: Upload the bot to the free host
&lt;/h2&gt;

&lt;p&gt;Every hosting panel has its own screens, but the logic is the same: create a bot, upload the files, set the token, choose the start file, start the bot.&lt;/p&gt;

&lt;p&gt;On ACLClouds, the flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a bot from the dashboard. The free plan gives you one bot slot.&lt;/li&gt;
&lt;li&gt;Upload your files. Use the panel upload, or connect with SFTP. Each bot has its own SFTP access on port 2222, with a username of &lt;code&gt;bot-&lt;/code&gt; followed by 8 characters, shown on the bot page.&lt;/li&gt;
&lt;li&gt;Paste the Discord token into the &lt;strong&gt;Discord token card&lt;/strong&gt;. The panel refuses a value that looks like a variable name, which catches a common mistake: pasting the text &lt;code&gt;DISCORD_TOKEN&lt;/code&gt; where the token itself should go.&lt;/li&gt;
&lt;li&gt;Check the &lt;strong&gt;start file&lt;/strong&gt;. The panel tries to detect &lt;code&gt;bot.py&lt;/code&gt; or &lt;code&gt;index.js&lt;/code&gt; automatically. If it finds the wrong file or none, set it yourself.&lt;/li&gt;
&lt;li&gt;Start the bot and open the &lt;strong&gt;logs&lt;/strong&gt; tab.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Upload only your source and a dependency list. Do not upload &lt;code&gt;node_modules&lt;/code&gt;, a virtual environment or your &lt;code&gt;.env&lt;/code&gt; file. The free plan allows uploads up to 100 MB and 715 MB of storage, so smaller is safer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Read the logs
&lt;/h2&gt;

&lt;p&gt;The first start is where most problems appear. What you should see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Connected as YourBot#1234&lt;/code&gt; (or the new username format) in the logs;&lt;/li&gt;
&lt;li&gt;no repeated error lines;&lt;/li&gt;
&lt;li&gt;the bot shows as online in your server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common errors and what they mean:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Log message&lt;/th&gt;
&lt;th&gt;Likely cause&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;PrivilegedIntentsRequired&lt;/code&gt; / intents error&lt;/td&gt;
&lt;td&gt;Message Content Intent is off in the portal&lt;/td&gt;
&lt;td&gt;Enable it, then restart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Improper token has been passed&lt;/code&gt; / &lt;code&gt;LoginFailure&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Token is wrong, reset, or has spaces&lt;/td&gt;
&lt;td&gt;Copy the token again into the token card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ModuleNotFoundError: No module named 'discord'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dependencies not installed&lt;/td&gt;
&lt;td&gt;Check &lt;code&gt;requirements.txt&lt;/code&gt; is uploaded and installed by the start process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cannot find module 'discord.js'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;node_modules&lt;/code&gt; missing&lt;/td&gt;
&lt;td&gt;Check &lt;code&gt;package.json&lt;/code&gt; is uploaded and dependencies install&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bot restarts in a loop&lt;/td&gt;
&lt;td&gt;Exception at startup&lt;/td&gt;
&lt;td&gt;Read the first traceback line, not the last one&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 6: Keep it running
&lt;/h2&gt;

&lt;p&gt;Free slots expire. Note the date the bot was started and renew from the bot page within the window the platform allows (on ACLClouds, within 2 days before expiry, or once the bot is suspended). A bot that is not renewed stops, even if the code is correct.&lt;/p&gt;

&lt;p&gt;Also keep your code outside the host. A Git repository, even private, lets you redeploy in a minute if something goes wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison: what to check on the host
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;th&gt;ACLClouds free bot plan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Token handling&lt;/td&gt;
&lt;td&gt;Pasting it in code leaks it&lt;/td&gt;
&lt;td&gt;Discord token card per bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log access&lt;/td&gt;
&lt;td&gt;You need the traceback&lt;/td&gt;
&lt;td&gt;Logs and console per bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File access&lt;/td&gt;
&lt;td&gt;Quick fixes without redeploying&lt;/td&gt;
&lt;td&gt;SFTP on port 2222&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtimes&lt;/td&gt;
&lt;td&gt;Your library and its tools must be present&lt;/td&gt;
&lt;td&gt;Node.js and Python images include ffmpeg, yt-dlp and deno&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Bots grow in memory over time&lt;/td&gt;
&lt;td&gt;315 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Renewal&lt;/td&gt;
&lt;td&gt;Expiry stops the bot&lt;/td&gt;
&lt;td&gt;4 days, renewable from the bot page&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limits of this setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This is a minimal example. A real bot needs error handling, rate-limit awareness and a way to store data (a file or a database) that survives restarts.&lt;/li&gt;
&lt;li&gt;The free plan's 315 MB RAM is enough for the code above and for a modest command set. It is not a reason to cache everything.&lt;/li&gt;
&lt;li&gt;Do not run a bot on a host you do not trust with your token. If a host asks you to paste your token in a chat or an email, do not.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need to know Python or JavaScript to host a bot?&lt;/strong&gt;&lt;br&gt;
You need to be able to edit one file and read a traceback. The examples above are the whole program for a ping bot, so you can copy them and change the command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does &lt;code&gt;!ping&lt;/code&gt; not work when the bot is online?&lt;/strong&gt;&lt;br&gt;
Check Message Content Intent first. The bot can be online and still receive empty message text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I use discord.py or discord.js?&lt;/strong&gt;&lt;br&gt;
Use the language you already know. Both are maintained and both work well on small hosts. Choose based on your team and the libraries you need, not on the hosting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do I put the token?&lt;/strong&gt;&lt;br&gt;
In the token card on the bot page, not in your code. Your code reads it from the environment variable the platform provides, or from a local &lt;code&gt;.env&lt;/code&gt; file that you never upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if my bot needs ffmpeg or yt-dlp?&lt;/strong&gt;&lt;br&gt;
The ACLClouds Node.js and Python images include ffmpeg, yt-dlp and deno. Check the image you chose before you add a dependency that calls them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Once your ping bot answers, add one command at a time, and check RAM and logs after each change. The free bot plan page is at &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; and the French version at &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, founder of ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discordpy</category>
      <category>discordjs</category>
      <category>python</category>
      <category>node</category>
    </item>
    <item>
      <title>Free Discord Bot Hosting in 2026: What "Free" Really Means</title>
      <dc:creator>Antonin Courtadon</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:29:18 +0000</pubDate>
      <link>https://dev.to/antonin_courtadon_a7636c8/free-discord-bot-hosting-in-2026-what-free-really-means-16kf</link>
      <guid>https://dev.to/antonin_courtadon_a7636c8/free-discord-bot-hosting-in-2026-what-free-really-means-16kf</guid>
      <description>&lt;p&gt;Disclosure: I'm Antonin Courtadon, founder of ACLClouds.&lt;/p&gt;

&lt;p&gt;If you have a Discord bot that works on your laptop, you have probably asked the same question everyone asks: where do I run it so it stays online when my computer is off? "Free hosting" is the obvious answer, and it is a good one, but only if you understand what the word covers. Most free offers trade money for limits. Some limits are harmless for a small community bot. Others break a bot the first time it does something useful.&lt;/p&gt;

&lt;p&gt;This article explains what to check before you choose a free host, how to keep a bot running 24/7 without pretending it runs forever for nothing, and how to recognise the moment a free plan stops being enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "24/7" actually requires
&lt;/h2&gt;

&lt;p&gt;A bot is a long-running program. It opens a connection to Discord's gateway and waits for events: a message, a member joining, a slash command. It stays online only as long as its process runs. On your own computer, that means keeping the machine on and the terminal open. On a hosted service, it means the provider starts the process, restarts it if it crashes, and gives it enough memory and CPU to do its job.&lt;/p&gt;

&lt;p&gt;So 24/7 has three parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The process runs.&lt;/strong&gt; Someone or something starts it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The process survives.&lt;/strong&gt; A crash, a full disk or a memory spike does not leave the bot offline until you notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The hosting slot stays valid.&lt;/strong&gt; Free plans often have an expiry date. If the slot ends, the bot stops, whatever its code looks like.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The third point is the one people forget. A bot that runs perfectly for a week can go silent on a Sunday because a free period ended and nobody renewed it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ACLClouds' free bot hosting gives you
&lt;/h2&gt;

&lt;p&gt;Here are the figures for the free Discord bot plan on ACLClouds, as they stand at the time of writing. Check the bot page for the current values before you rely on them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1 bot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;315 MB RAM&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.25 vCPU&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;715 MB storage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uploads up to 100 MB&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 days free&lt;/strong&gt;, renewable for free from the bot page. You can renew within 2 days before expiry, or once the bot has been suspended.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each bot also gets its own SFTP access (port 2222, username &lt;code&gt;bot-&lt;/code&gt; followed by 8 characters), a Discord token card, a logs and console view, and start-file auto-detection. The Node.js and Python images include ffmpeg, yt-dlp and deno, which matters if your bot plays audio or downloads media.&lt;/p&gt;

&lt;p&gt;These numbers are small. 315 MB of RAM is enough for a moderation bot, a welcome bot, a ticket bot or a utility with a few commands. It is not enough for a bot that caches thousands of members, loads large machine-learning models, or transcodes video in a loop. If your bot grows, you will feel it in memory first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check before choosing any free host
&lt;/h2&gt;

&lt;p&gt;Use this list whatever provider you pick, including ours.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;th&gt;ACLClouds free bot plan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free period and renewal&lt;/td&gt;
&lt;td&gt;A free slot that expires silently stops your bot&lt;/td&gt;
&lt;td&gt;4 days, renewable from the bot page (2 days before expiry or once suspended)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;Node.js and Python bots grow in memory as caches fill&lt;/td&gt;
&lt;td&gt;315 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Long loops, image work and audio processing need CPU&lt;/td&gt;
&lt;td&gt;0.25 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Logs, downloads and cached files fill a small disk&lt;/td&gt;
&lt;td&gt;715 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Upload size&lt;/td&gt;
&lt;td&gt;Your code, assets and dependencies are uploaded through the panel&lt;/td&gt;
&lt;td&gt;Up to 100 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File access&lt;/td&gt;
&lt;td&gt;You need to change files without redeploying everything&lt;/td&gt;
&lt;td&gt;SFTP on port 2222, one account per bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs&lt;/td&gt;
&lt;td&gt;When the bot crashes at 3 a.m., logs are how you find out why&lt;/td&gt;
&lt;td&gt;Logs and console per bot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Start file&lt;/td&gt;
&lt;td&gt;A host that cannot find your entry point wastes an hour&lt;/td&gt;
&lt;td&gt;Start-file auto-detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid upgrade path&lt;/td&gt;
&lt;td&gt;You should not have to migrate when the bot succeeds&lt;/td&gt;
&lt;td&gt;Paid plans with 1 to 4 vCPU per bot&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If a provider does not tell you the figures in this table, ask before you deploy. An honest host states them on its pricing or plan page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping a free bot online without surprises
&lt;/h2&gt;

&lt;p&gt;Free hosting works well when you treat renewal as a routine, not an emergency. Three habits help:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Put the expiry date in your calendar.&lt;/strong&gt; When the bot starts, note the date it expires. Renew within the window the bot page allows. Renewing too early is not possible, so do not wait for the last hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Keep the bot lean.&lt;/strong&gt; Stop caching whole member lists. Set limits on message history fetches. Do not store downloaded media on disk after it is sent. Small bots survive small plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Read the logs once a day for the first week.&lt;/strong&gt; Most crashes repeat. A missing environment variable, a deprecated library call or a rate-limit loop shows up in the logs long before the bot goes silent.&lt;/p&gt;

&lt;h2&gt;
  
  
  When free is no longer enough
&lt;/h2&gt;

&lt;p&gt;You should move to a paid plan, or to a VPS, when one of these happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the bot is in more than a handful of servers and responds to commands all day;&lt;/li&gt;
&lt;li&gt;you need more RAM than 315 MB for stable operation;&lt;/li&gt;
&lt;li&gt;you run background jobs (queues, schedulers, a web dashboard) next to the bot;&lt;/li&gt;
&lt;li&gt;you cannot accept the renewal rhythm for a service that others depend on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On ACLClouds, paid bot plans set the number of vCPU per bot: Starter 1, Pro 2, Advanced 3, Business 4. Check the current plan page for prices and what is included, because those change more often than the vCPU counts.&lt;/p&gt;

&lt;p&gt;If you need a full server rather than a bot slot, our Linux VPS plans start at 8 GB of RAM and 2 vCPU. We cover them in the next articles of this series.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits of free hosting, stated plainly
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A free bot is not a service you can rely on without maintenance. It depends on renewal, and on staying within the plan limits.&lt;/li&gt;
&lt;li&gt;315 MB of RAM and 0.25 vCPU are small. Plan your code for that, or pay for more.&lt;/li&gt;
&lt;li&gt;Storage is 715 MB. A bot that writes logs without rotation will fill it.&lt;/li&gt;
&lt;li&gt;Renewal is your responsibility. Nobody renews it for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a hobby bot, a test bot or a bot for a small community, these limits are fine. For a bot that a business depends on, pick a plan with headroom, and keep a copy of your code outside the host so you can move it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is free Discord bot hosting really free?&lt;/strong&gt;&lt;br&gt;
It can be, within its limits. ACLClouds' free bot plan gives you one bot with 315 MB of RAM and 0.25 vCPU for 4 days, and you can renew it for free from the bot page. Renewal is the step that keeps the bot running, so the plan is free but not unattended.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can my bot run 24/7 on a free plan?&lt;/strong&gt;&lt;br&gt;
It runs as long as the free slot is valid and you renew it when the window opens. Continuous uptime without renewal requires a paid plan, so check the plan terms before you build something people depend on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my bot go offline after a few days?&lt;/strong&gt;&lt;br&gt;
The most common reason on a free plan is an expired slot that was not renewed. The second most common is a memory limit: a bot that grows past its RAM allowance is stopped. The logs tell you which one happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to enable the message content intent?&lt;/strong&gt;&lt;br&gt;
If your bot reads message text (prefix commands, for example), yes. You enable it in the Discord Developer Portal. Without it, &lt;code&gt;message.content&lt;/code&gt; arrives empty. This is a Discord rule, not a hosting rule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I move my bot to a paid plan later?&lt;/strong&gt;&lt;br&gt;
Yes. The free bot and the paid plans are on the same platform, so you can upgrade the bot rather than rebuild it. Keep your code in version control so the move is a configuration change, not a rewrite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Read the step-by-step guide to deploying a discord.py or discord.js bot on a free host, which follows this article. The free bot hosting page on ACLClouds is at &lt;a href="https://aclclouds.com/en/" rel="noopener noreferrer"&gt;https://aclclouds.com/en/&lt;/a&gt; (English) and &lt;a href="https://aclclouds.com/fr/" rel="noopener noreferrer"&gt;https://aclclouds.com/fr/&lt;/a&gt; (French), and the plan details are shown when you open the bot section of the dashboard.&lt;/p&gt;




&lt;p&gt;Antonin Courtadon, founder of ACLClouds · &lt;a href="https://aclclouds.com" rel="noopener noreferrer"&gt;https://aclclouds.com&lt;/a&gt;&lt;/p&gt;




</description>
      <category>discord</category>
      <category>discordbot</category>
      <category>bothosting</category>
      <category>freehosting</category>
    </item>
  </channel>
</rss>
