Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Host Red-DiscordBot With Docker Compose

A practical, security-conscious Docker Compose setup for Red-DiscordBot, including the compose.yaml, token handling, persistent storage, restart behavior, troubleshooting, updates, and ARM64 Raspberry Pi considerations.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You can run Red-DiscordBot as a Docker Compose service with a community image, a Discord bot token, and a persistent /data mount. The basic workflow is: install Docker Engine and the Compose plugin, create a compose.yaml, start the container with docker compose up -d, invite the bot, and back up the mounted data directory. This is a community workaround rather than an officially supported Red deployment: Red’s hosting documentation currently says, “Docker support found in GitHub is also a work in progress and not ready for daily use.”

What you need before creating the container

Red-DiscordBot is configured and operated through Discord after installation. Docker only supplies the runtime; you still need a Discord application, a bot user, and a host that can keep the container running.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • A supported host: Use a Linux server, desktop, or single-board computer that can run Docker Engine and the Compose plugin. The host must remain powered and connected to the internet for the bot to stay online.
  • A Discord application and bot token: Create the bot in the Discord Developer Portal and copy its token. Treat the token like a password.
  • A project directory: Keep the Compose file and persistent Red data together in a directory you can back up.
  • Enough storage for the bot’s data: The selected image stores its configuration and other Red data under the path mounted at /data.
  • An image that matches your CPU architecture: The PhasecoreX image documents support for normal x86-64 servers and ARM64 devices, including Raspberry Pi. That statement applies to that image, not automatically to every Red container image.

Red’s official hosting information also warns that unsupported platforms may not receive support when problems occur. Before deploying, record the exact image name and tag you choose so you can reproduce the environment when troubleshooting.

Choose an image with the right expectations

Docker Compose does not provide an official Red runtime by itself. It launches whichever image you specify, so maintenance practices and support depend on that image’s publisher.

Decision point PhasecoreX image rHomelab image
Image referenced in the documentation phasecorex/red-discordbot The rHomelab RedBot image (use the current image name from its README)
Environment variables documented TOKEN and PREFIX, with timezone and user-ID variables shown in the Compose example Follow the current README’s variable contract
Persistent-data location Container path /data; the example binds ./redbot on the host Use the path specified by the image documentation
Architecture statement Documentation says it runs on x86-64 and arm(64) devices, including Raspberry Pi Verify supported architectures in the current image documentation
Update behavior The README documents updating Red on container restart and offers an optional UpdateNotify cog Re-read the README before changing tags or update procedures
Logging and invitation workflow Inspect the container logs for startup status and any generated information The instructions use Compose logs to obtain the invitation URL after startup
Red developer support Neither community image changes Red’s official warning that Docker support is work in progress and not ready for daily use

The sample below uses the PhasecoreX image because its documented environment variables and /data path make a compact Compose example possible. If you select another image, do not assume that its variable names, data path, or upgrade process are identical.

Create the Compose project

1. Make a directory for the bot

On the host, create a dedicated directory and enter it. For example:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
mkdir -p ~/redbot
cd ~/redbot

The directory will contain compose.yaml and a subdirectory named redbot that Docker creates or populates as the bind-mounted data location. Keeping these files together makes backups and migrations easier.

2. Add compose.yaml

Save the following as compose.yaml:

services:
  redbot:
    container_name: redbot
    image: phasecorex/red-discordbot
    restart: unless-stopped
    volumes:
      - ./redbot:/data
    environment:
      - TOKEN=replace_with_your_discord_bot_token
      - PREFIX=.
      - TZ=UTC
      - PUID=1000

This configuration defines one service named redbot. The explicit container name is convenient when using Docker commands, while the service name is what Compose uses in commands such as docker compose logs redbot.

3. Set the required values

  • TOKEN: Replace replace_with_your_discord_bot_token with the token generated for your Discord bot.
  • PREFIX: The example uses a period, so commands begin with .. Choose a prefix that does not conflict with other bots in your servers.
  • TZ: The example sets the container timezone to UTC. Change it only if you need logs and scheduled behavior interpreted in another timezone supported by the image.
  • PUID: The example uses user ID 1000. The image documents this variable for aligning container file ownership with a host user; use the value appropriate for your host account and the image’s current instructions.

Do not commit a Compose file containing a live token to a public repository. Restrict the file’s permissions if other users share the host, and rotate the token in the Discord Developer Portal immediately if it is exposed. After rotating it, update the Compose configuration and recreate the service so the container receives the new value.

Start Red-DiscordBot with Compose

1. Validate that Docker and Compose are available

Docker Engine and the Compose plugin must be installed on the host. Confirm the installation with:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
docker --version
docker compose version

If either command fails, install Docker Engine and the Compose plugin using the instructions for your host operating system before continuing. Compose is the Docker tool for defining an application stack and managing its lifecycle.

2. Launch the service in the background

From the directory containing compose.yaml, run:

docker compose up -d

The -d option detaches the process so the bot continues running after you close the terminal. Compose pulls the image if it is not already present, creates the container, mounts ./redbot at /data, and starts Red with the environment values from the file.

Rank #2
SANOOV Raspberry Pi 5 4GB Kit, 4GB RAM Single Board Computer with Active Cooler and ABS Case, Complete Raspberry Pi 5 Starter Kit for IoT Robotics Retro Gaming
  • All-in-One Complete Kit: This SANOOV RPi 5 bundle comes with Raspberry Pi 5 4GB RAM single board, active cooler, durable ABS case and screwdriver. No extra parts needed, ready to use right out of the box for beginners and hobbyists
  • Powerful Single Board Computer: Equipped with 4GB RAM and high-performance processor, delivers fast running speed for 4K playback, AI projects, programming and daily computing tasks. SANOOV for raspberry pi 5 4GB is equipped with broadcom 64 quad-core Arm Cortex A76 processor with gigabit ethernet and upgraded with IEEE 802.11ac Wi-Fi, Bluetooth 5.0 dual-band 2.4Ghz and 5Ghz and Power Over Ethernet (POE). Upgrading delivers 2-3 x speed vs Pi 4, redefining the experience
  • Efficient Active Cooler: Effectively lowers operating temperature and prevents performance throttling. Runs quietly even under long-time heavy load, ensures stable operation all day long. SANOOV RPi 5 4GB kit offer an active cooler, which combines an aluminium heatsink with a high-performance PWM fan. Active cooler is fully compatible with the Pi OS, which can effectively reduce the temperature of RPi5 and ensure its good performance during long-term high load operation
  • Sturdy ABS Protective Case: Well-fitted for Raspberry Pi 5 board, can be secured with 4 screws to effectively protect the Pi 5 motherboard from damage, reserves full access to all ports and buttons. SANOOV uses ABS material to produce the case, which has a softer texture and feel. Meanwhile, SANOOV case adopts a layered design for easy disassembly and installation. (Tip: The Case cannot install M.2 HAT Add on Board and Solid State Drive!)
  • Wide Application & Full Compatibility: Seamlessly compatible with official OS and mainstream peripheral accessories for Raspberry Pi 5. Whether you are a beginner, student, electronics hobbyist or professional developer, this all-in-one kit meets your diverse needs. It excels in IoT projects, robotics design, retro gaming devices, home media servers and other DIY creations. Backed by a large global community, you can easily find guides, technical support and shared projects online

3. Read the startup logs

Logs are the first diagnostic tool and may contain startup messages or an invitation URL. Follow the service logs with:

docker compose logs -f redbot

The rHomelab instructions show docker compose logs RedBot for this purpose. Compose service names are case-sensitive in practice, so use the name declared under services: in your own file. In the example above that name is redbot; if you copied an image’s example with a service named RedBot, use that exact name instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Stop following the log stream with Ctrl+C; this does not stop the container. To see whether it is running, use:

docker compose ps

Invite the bot and finish configuration in Discord

Container startup does not automatically place the bot in a server. Use the invitation URL produced by the image’s startup instructions or generate an OAuth2 URL for the bot in the Discord Developer Portal with the permissions your intended commands require.

  1. Open the invitation URL shown in the startup output, or create the equivalent bot invite in the developer portal.
  2. Select a Discord server where you have permission to add applications.
  3. Review the requested permissions before authorizing the bot.
  4. Return to Discord and confirm that the bot appears online.
  5. Use the configured prefix, . in the sample, to issue Red’s setup and help commands.

Red’s project documentation describes normal interaction and configuration as taking place through Discord after installation. If the bot is online but does not respond, verify the prefix, channel permissions, and the container logs before changing the Compose file.

Why the ./redbot:/data mount is essential

A container’s writable layer is tied to that specific container. If the container is removed and recreated, data stored only in that layer disappears. The bind mount in the example maps the host directory ./redbot to the container’s /data path, so Red’s configuration survives routine recreation and image replacement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not delete the host-side redbot directory when troubleshooting unless you intentionally want to reset the installation. Removing it can erase the bot’s configuration, installed cogs, and other data written there by the image.

Back up the data directory

Stop writes briefly, create an archive of the mounted directory, and store that archive somewhere separate from the Docker host:

Rank #3
Raspberry Pi 4 Computer Model B 8GB Single Board Computer Suitable for Building Mini PC/Smart Robot/Game Console/Workstation/Media Center/Etc.
  • powful cputhe cpu of the raspberry pi 4 model b adopts the latest arm cortex-a72 architecture, which is also used in high-performance smartphones, and has evolved into a real pc.the operating clock has been changed from pi3's 1.2ghz to 1.5ghz, and the speed has become a different dimension with the updated architecture.
  • video output/gputhe on-board gpu of the raspberry pi 4 supports 4kp@60 and newly supports h.265 decoding, opengl es 3.0, etc.as for the video output, two micro hdmis with smaller connectors are installed, and the raspberry pi 4 also supports dual screen output.
  • usb 3.0with a new soc, the speed of the raspberry pi 4 around i/o has been improved, and finally usb 3.0 is supported.usb boot is faster and more convenient.
  • network&bluetoothgigabit ethernet (wired lan) has also been significantly speeded up from 300mbps of pi 3b + to 1000mbps (logical value).in addition, bluetooth supported version has been upgraded to 5.0, and the transfer speed of pi 4 has been doubled.
  • power input connectorthe power input connector of the raspberry pi 4 has been changed to usb type c. it is easier to use than micro usb and can supply a larger current reliably.the power requirement of raspberry pi 4 model b is 5v 3.0a, which is higher than the previous model.
docker compose stop redbot
tar -czf redbot-backup-$(date +%Y-%m-%d).tar.gz redbot
docker compose start redbot

Test that you can read the archive and keep more than one dated backup. If your selected image uses a different host path or named volume, back up that location instead; the requirement is to preserve the image’s documented data path, not a particular backup command.

Keep the bot online after reboots

restart: unless-stopped tells Docker to restart the service after routine daemon or host restarts, while still honoring an intentional manual stop. It does not fix a bad token, an incompatible image, a crash loop caused by configuration, or a host that is powered off.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

After a reboot, check the service explicitly:

docker compose ps
docker compose logs --tail=100 redbot

If the container is stopped because you previously ran docker compose stop, start it with:

docker compose start redbot

If the project was brought down with docker compose down, recreate it with:

docker compose up -d

Updating the image without losing Red data

Update behavior is image-specific. The PhasecoreX README documents Red updating on restart and describes an optional UpdateNotify cog. That does not mean every image updates in the same way, and it does not remove the need for backups.

  1. Read the selected image’s current README and note its supported update procedure.
  2. Back up the host directory mounted at /data.
  3. Pull the image version you intend to run, if the image documentation calls for a pull:
docker compose pull
  1. Recreate the service according to the documented procedure. A common Compose sequence is:
docker compose up -d
  1. Watch the logs and confirm that the bot reconnects and that the existing configuration is present.

Do not change image tags casually. Record the old image reference and keep the backup until the new container has completed startup and responded in Discord. The rHomelab documentation also warns that its deployment method is unsupported by Red developers, so its README should be treated as the authority for that image’s update steps.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot the common failure modes

The container exits immediately

Inspect the complete service output:

docker compose logs redbot

Check for a missing or malformed TOKEN, an unsupported architecture, a permissions problem on ./redbot, or an image-specific initialization error. Correct one issue at a time, then recreate the service with docker compose up -d.

The bot is online but ignores commands

  • Use the prefix configured in PREFIX; the sample requires commands beginning with ..
  • Confirm the bot can read messages and send replies in the channel.
  • Check that you invited the correct application and that the intended server contains that bot user.
  • Read the logs while sending one command so connection or parsing errors appear next to the action.

The bot loses configuration after an update

Verify that the Compose file still contains ./redbot:/data and that the host-side directory is the same one used by the previous container. Inspect the service definition with:

Rank #4
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
  • Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
  • Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
  • CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
  • CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
  • CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
docker compose config

If the mount was removed or changed, stop the service, restore the correct mount, and recover the data directory from backup. A new empty directory at the mount path can make a healthy container look like a fresh installation.

Compose cannot find the service in a logs command

Use docker compose config --services to list the exact service names. Then pass that spelling to docker compose logs. The sample declares redbot; an image guide may use RedBot instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The image will not run on a Raspberry Pi

Confirm the Pi’s architecture and the image’s published architectures. PhasecoreX documents x86-64 and ARM64 support, including Raspberry Pi, but compatibility is image-specific. A 32-bit operating system, an ARM variant not covered by the image, insufficient storage, or an outdated Docker installation can still prevent startup. Use the image’s architecture documentation and the logs to distinguish an unsupported image from a configuration error.

Running Red on a Raspberry Pi

A Raspberry Pi can be a low-power, always-on host when the chosen image supports its architecture and the device has adequate storage, memory, cooling, and network reliability. The PhasecoreX statement that it runs on arm(64) devices, including Raspberry Pi, supports that use case for that image; it is not a guarantee for all Red images.

  • Use a current 64-bit operating system when the image requires ARM64.
  • Prefer reliable external storage for the Docker data directory rather than relying on a heavily worn boot medium.
  • Keep the Pi connected to stable power and configure the host to restart Docker after a power interruption.
  • Monitor disk usage because logs and bot data accumulate over time.
  • Make the same /data backup you would make on an x86-64 server.

Before buying or repurposing a Pi, check the exact model, operating-system architecture, Docker support, and current image documentation. The architecture claim is evidence that the image can target ARM64; it is not a performance guarantee for every workload or cog.

Security and operational checklist

  • Keep the Discord token out of public repositories, screenshots, issue reports, and shell history where possible.
  • Limit access to compose.yaml and the mounted data directory on a multi-user host.
  • Back up the host-side data directory before updates, migrations, or major configuration changes.
  • Use restart: unless-stopped for automatic recovery from routine restarts, but still inspect logs after a reboot.
  • Pin and document the image reference you deploy, then re-read its README before changing tags.
  • Keep Docker Engine, the Compose plugin, and the host operating system maintained according to their distribution’s guidance.
  • Test a restore from a backup instead of assuming that an archive is usable.
  • Remember that community images are not covered by Red’s official Docker support; investigate image-specific issues with the image documentation and maintainers.

When Docker Compose is the wrong choice

Compose is convenient when you already operate Docker and want a reproducible service definition. It may be a poor fit if you need a deployment method covered by Red’s official support, cannot maintain a community image, or cannot provide persistent storage and regular backups. Red’s own hosting information explicitly describes Docker support found in GitHub as work in progress and not ready for daily use. In those situations, consider a hosting method documented as supported by the Red project rather than treating this Compose setup as an officially endorsed installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Complete command sequence

For the sample project, the essential sequence is:

mkdir -p ~/redbot
cd ~/redbot
# create compose.yaml and replace the TOKEN value
docker compose up -d
docker compose ps
docker compose logs -f redbot

Once the invitation URL has been used and the bot responds in Discord, leave the project directory and its mounted redbot data in place. Future restarts use docker compose up -d; maintenance and recovery begin with a backup and the service logs.

Bottom line

The practical Compose recipe is small: define the community image, provide TOKEN and PREFIX, mount persistent data at /data, set restart: unless-stopped, and start with docker compose up -d. The operational details matter more than the YAML: protect the token, back up the host directory, read logs when startup fails, and verify architecture support—especially on Raspberry Pi. Because Red currently labels Docker support as work in progress, identify the exact image you deploy and treat its README as part of the installation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.