October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Run a Discord Bot in Docker on a VPS

A practical, security-first guide to running a Discord bot in Docker on a VPS, from Developer Portal setup and runtime secrets to HTTPS interactions, restart policies, backups, updates, and recovery.
WorldDocker on a VPS Length13 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Docker Compose on a hardened Linux VPS, inject the Discord token only at runtime, and select the bot’s connection model before you deploy. A Gateway bot normally needs outbound HTTPS/WSS access but no public listener; an HTTP-interactions bot needs a public HTTPS endpoint, signature verification, and usually a reverse proxy. The workflow below covers application setup, container construction, VPS security, 24/7 operation, updates, backups, and recovery.

What you are deploying

A Discord bot is an application registered in the Discord Developer Portal. Discord gives that application a bot user and token; you install it in a server with an OAuth2 installation URL, then your code communicates through Discord’s APIs. Docker packages the source code and dependencies into a repeatable image, while the VPS supplies an always-on Linux host.

As an Amazon Associate I earn from qualifying purchases.

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.

The token authorizes API requests and is equivalent to a password for the bot. Discord’s getting-started guidance says: “Make sure to never share your token or check it into any kind of version control.” The token belongs in a runtime secret, never in a Dockerfile, image layer, repository, build argument, screenshot, or log line.

Choose the Discord connection model first

Your choice determines whether the VPS needs an inbound web service and what reliability checks matter.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
Model How it works Typical use VPS networking
Gateway WebSocket A persistent connection receives real-time events and sends commands through Discord’s API. Moderation, event-driven automation, presence changes, message and interaction handling. Outbound HTTPS/WSS is normally sufficient; do not open a public application port unless another feature requires it.
HTTP interactions Discord sends signed HTTP requests for slash commands and UI components to your endpoint; there is no persistent Gateway connection. Slash-command or component bots that do not need a continuous event stream. Requires a public HTTPS endpoint, reverse-proxy forwarding, signature verification, and responses within Discord’s timeout.
Webhook A URL accepts one-way posts into a channel. There is no bot process or event subscription. Build notifications, scheduled announcements, and other outbound-only messages. Usually only outbound HTTPS from the sender; a full Docker bot may be unnecessary.

Discord describes the first two choices as a persistent Gateway WebSocket or an HTTP interactions endpoint. If your software only posts messages, evaluate a webhook before operating a full bot.

Prerequisites and design decisions

  • A Discord application, bot user, and a newly generated token.
  • An installation URL with only the scopes and permissions the bot needs.
  • A supported Linux VPS distribution, sudo access, and an SSH key.
  • A domain name and valid TLS certificate if you use HTTP interactions.
  • Source code, a dependency lockfile, and a Dockerfile in version control.
  • A decision about persistence: stateless operation, a SQLite file, or an external database.
  • A deployment account that can run Docker without making the Docker daemon publicly reachable.

Decide which Gateway intents are genuinely required. Member, presence, and message-content data have additional requirements. Discord’s current policy update took effect on June 10, 2026 and introduced stronger protections, annual reviews, and higher thresholds for some access. Check the current Developer Portal requirements before enabling these intents or distributing a bot widely.

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

1. Create and configure the Discord application

  1. In the Discord Developer Portal, create an application and add or enable its bot user.
  2. Generate the token once you are ready to deploy. Store it immediately in your password manager or server secret file; it cannot be viewed again without regeneration.
  3. Build the installation URL with the smallest required scopes and permissions. Grant administrator access only when the implementation truly cannot work with narrower permissions.
  4. Select Gateway, HTTP interactions, or both. A Gateway implementation must identify the intents it requests at startup. An HTTP implementation must expose a route that verifies Discord’s request signature before processing the payload.
  5. Enable privileged intents only after confirming that the code needs them and that your application satisfies Discord’s current access and review rules.
  6. Install the bot in a private test server first. Register commands there during development so changes are visible quickly, then use your production installation only after a smoke test.

2. Prepare a container-friendly project

Keep the application, lockfile, Dockerfile, Compose file, and documentation together. The container should run one foreground process and write logs to standard output or standard error. Do not rely on an interactive shell, a desktop session, or files that exist only on your workstation.

Example Python layout

your-bot/
├── bot.py
├── requirements.txt
├── Dockerfile
├── compose.yaml
└── .dockerignore

Pin direct dependencies in requirements.txt and review transitive updates deliberately. The same principles apply to a Node.js bot: commit the lockfile, use a pinned Node base-image major version, run the production install, and start the process in the foreground.

Read the token from the environment

import os

TOKEN = os.environ.get('DISCORD_TOKEN')
if not TOKEN:
    raise RuntimeError('DISCORD_TOKEN is not set')

# Pass TOKEN to your Discord client library here.
# Never print TOKEN, even while debugging.

Failing fast when the variable is absent is safer than starting a half-configured bot. Keep application IDs, public keys, database credentials, and webhook URLs under the same secret-handling rules.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Build a small, non-root image

FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 
    PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .
RUN useradd --create-home --uid 10001 botuser 
    && chown -R botuser:botuser /app
USER botuser

CMD ["python", "-u", "bot.py"]

Use a base image version you have tested and pin it according to your update policy. Installing only production dependencies, removing package caches, and running as an unprivileged user reduce the impact of a compromised process. Some frameworks need a writable directory; provide only that directory through a named volume or temporary filesystem.

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

Exclude local files from the build context

.env
.git
.gitignore
__pycache__/
*.pyc
node_modules/
venv/
.env.*

A .dockerignore prevents accidental copying of local secrets and development artifacts. It is not a substitute for keeping secrets out of the repository; inspect the build context and image history if a secret was ever committed.

3. Define the service with Docker Compose

Compose keeps the image, runtime settings, restart policy, volumes, and log limits in one reproducible definition. This example expects a host file at /opt/your-bot/.env and an optional data directory inside the container.

services:
  bot:
    build: .
    env_file:
      - /opt/your-bot/.env
    restart: unless-stopped
    init: true
    read_only: true
    tmpfs:
      - /tmp
    volumes:
      - bot-data:/var/lib/your-bot
    stop_grace_period: 30s
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: '3'

volumes:
  bot-data:

Remove the named volume for a stateless bot. If the program writes SQLite data or generated configuration, change the container path to the path your code actually uses and back it up independently. A read-only root filesystem may require you to adjust cache or temporary paths.

Add a health check only when it measures something meaningful. For an HTTP-interactions bot, an internal health endpoint can confirm that the process and required dependencies are ready. A process that merely answers “alive” while unable to reach Discord should not be treated as healthy.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

4. Provision and harden the VPS

  1. Create a supported Linux VPS and apply all security updates before deploying the bot.
  2. Create a non-root administrative account with sudo, install your SSH public key, and disable password authentication after verifying key-based login.
  3. Install Docker Engine and the Compose plugin from the distribution or Docker’s supported installation method. Keep the daemon and Compose packages updated.
  4. Create the application directory, for example /opt/your-bot, and copy the project there. A standard system directory avoids service-isolation problems that can occur when a supervisor cannot traverse a private home directory.
  5. Configure the firewall for the smallest exposure. A Gateway-only bot normally needs SSH for administration and outbound DNS/HTTPS/WSS, but no inbound bot port. An HTTP-interactions bot commonly needs TCP 443 (and optionally 80 for certificate renewal) in addition to SSH.
  6. Set the VPS time correctly and monitor disk space. Docker logs and database files can fill a small disk even when the bot itself is idle.

Never publish the Docker daemon

Keep Docker’s Unix socket local to the host. Docker warns that unauthenticated remote daemon access can let an attacker control containers and potentially obtain root access to the VPS. Do not bind the daemon to a public TCP port. If remote administration is unavoidable, use the documented TLS configuration, a private management network, and firewall rules that allow only trusted administrators.

5. Store secrets outside the image

Create the runtime file on the VPS, not in the source tree:

sudo install -d -m 750 /opt/your-bot
sudo install -m 600 /dev/null /opt/your-bot/.env
sudoedit /opt/your-bot/.env

Put only runtime values in that file, for example:

DISCORD_TOKEN=replace-with-the-current-token
DISCORD_APPLICATION_ID=replace-with-the-application-id

Restrict ownership and permissions so ordinary users cannot read it. Docker Compose reads the values when it creates the container; they are not part of the image layers. Docker Compose secrets or a VPS provider’s secret store are alternatives when your operational tooling supports them.

  • Do not pass the token as a Docker build argument.
  • Do not commit .env, paste the token into shell history, or echo the environment during diagnostics.
  • Redact authorization headers and full request URLs in application and reverse-proxy logs.
  • If the token appears in a repository, CI log, crash report, or screenshot, reset it in the Developer Portal immediately, replace the runtime secret, and redeploy.

6. Launch and verify the bot

  1. Change to the project directory: cd /opt/your-bot.
  2. Build and start in the background: docker compose up -d --build.
  3. Follow startup output: docker compose logs -f --tail=100 bot. Confirm that the process reaches its expected Discord connection state without exposing credentials.
  4. Check the container state: docker compose ps. An Up status means the process is running; it does not prove that Discord authentication or event delivery succeeded.
  5. Exercise one low-risk command in the test server. For HTTP interactions, send a signed test request through the public HTTPS path and verify the reverse proxy forwards the original request body and required headers.
  6. Stop and start the service once to verify that the restart policy and any required volume data behave as expected: docker compose restart bot.

For an HTTP endpoint, terminate TLS at a reverse proxy and forward only the route the bot needs. Configure automatic certificate renewal, preserve the request body and signature headers, and return a response within Discord’s interaction timeout. Do not accept unsigned requests merely to make testing easier.

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

Keeping the bot online 24/7

Restart behavior

restart: unless-stopped brings the container back after a process crash or VPS reboot while allowing an intentional stop to remain stopped. It cannot repair a bad token, a dependency exception, or a failing external service, so pair it with alerts for repeated restarts and authentication failures.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC

Logs and alerting

Write structured, useful messages to stdout and stderr. Set bounded Docker log rotation, as in the Compose example, or forward logs to the VPS logging system. Alert on a restart loop, a sudden increase in exception rate, disk pressure, failed health checks, and repeated Discord authentication errors.

Graceful shutdown

Handle SIGTERM so the client can close its Gateway connection and flush any queued state before the container exits. The Compose stop grace period gives the process time to do that; a forceful kill can leave a SQLite transaction or generated file incomplete.

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

State and backups

Persist only data that must survive a container replacement. A named SQLite volume is simple for a single VPS, but it couples the data to that host. An external database is easier to scale and back up independently, at the cost of another service and network credentials.

Storage choice Strength Risk or trade-off
No persistent volume Rebuilds are deterministic and replacement is easy. Any local state disappears when the container is replaced.
SQLite on a named volume Minimal setup for a small, single-VPS bot. Backups, file locking, and disk failures remain your responsibility; the volume is not an independent backup.
External database Independent backups and a path to scaling beyond one host. Requires network access, credentials, migrations, and another availability dependency.

Back up a persistent volume to storage independent of the VPS and periodically test restoration. Keep the previous image and configuration available so a failed update does not become a data-recovery incident.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Docker Compose versus a host supervisor

Decision axis Docker Compose Host supervisor such as systemd
Definition Declares image build, environment inputs, volumes, networks, restart policy, and logging together. Controls a host process or a command such as docker run through a unit file.
Portability Moves the same service definition between compatible hosts. Depends more heavily on host paths, package versions, and unit-file conventions.
Dependencies Packages application dependencies in the image. Can run directly on the host, which increases host-level dependency management.
Recovery Compose restart policies recover a stopped container; an outer supervisor can also restart the Compose command itself. Excellent host-native boot ordering and journal integration, but you must define container arguments and updates separately.
Best fit A bot whose runtime should be reproducible and easy to rebuild. Teams standardizing all services around host-native units or needing strict host boot orchestration.

Either approach can keep a container running. Compose is usually the clearer source of truth for a single bot because the service definition, secret references, volume, and log policy travel together. Avoid running both systems without a deliberate ownership rule; two supervisors can fight over the same container.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Safe update and rollback procedure

  1. Pin application dependencies and the base-image major version. Review Discord library release notes and Discord API changes before upgrading.
  2. Build a new image from a clean checkout: docker compose build --pull.
  3. Run the candidate image against a private test server. Exercise login, one representative event, command registration, and any database migration.
  4. Keep the currently working image identifier and a recent backup. Record the image digest or tag in your deployment notes.
  5. Deploy with docker compose up -d and immediately inspect docker compose logs --tail=100 bot.
  6. If startup, authentication, or command behavior is wrong, restore the prior image and configuration, then investigate offline rather than repeatedly restarting production.

Discord API routes are versioned. Do not assume an unversioned or old route will remain valid. Treat library versions, API versions, privileged-intent rules, and data-access policy as maintenance inputs rather than one-time setup details.

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

Troubleshooting by symptom

The bot is offline

  • Run docker compose ps and inspect docker compose logs --tail=200 bot.
  • Confirm that DISCORD_TOKEN is present inside the running process without printing its value. Check the variable name and file permissions.
  • Verify outbound DNS, HTTPS, and WSS from the VPS and ensure the process is not exiting immediately because of a missing dependency or configuration value.
  • Check whether the VPS firewall or provider egress policy blocks the required traffic.

401 or invalid-token errors

Reset the token in the Developer Portal, replace the runtime secret, and redeploy. Do not print the old or new token while debugging. A token found in source control, CI output, or a screenshot should be considered compromised even if the bot still appears online.

Slash commands do not appear

  • Verify that the installation URL included the required application command scope and that the bot is installed in the target server.
  • Confirm that registration code points at the intended application ID and target guild. Guild-scoped registration is useful for testing; production registration may use a different path.
  • Check the bot’s permissions and inspect registration errors in the logs.

Events are missing

Confirm that the client requests the required intents, the corresponding Developer Portal settings are enabled, and your application meets Discord’s current privileged-intent requirements. Requesting an intent in code does not grant access by itself.

HTTP interactions fail

  • Test the public HTTPS certificate, DNS record, and reverse-proxy route from outside the VPS.
  • Verify Ed25519 signature validation against the original request body before parsing or modifying it.
  • Check that the proxy forwards the required headers and that the application responds within Discord’s timeout.
  • Inspect proxy status codes and application logs with authorization values redacted.

The container repeatedly restarts

Run the image interactively with an isolated environment, inspect the exit code and dependency traceback, and compare the runtime environment with the successful test deployment. Add a health check only after defining what “healthy” means, and rotate logs so the evidence is not lost to disk exhaustion.

You suspect the VPS was compromised

Isolate the host from the network, revoke and rotate Discord credentials and other secrets, review SSH accounts and Docker access, preserve relevant logs, and rebuild from a known-good image. Restore persistent data only from a backup whose integrity you can establish. Do not simply restart the existing container and assume the host is clean.

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

Discord data and least-privilege operation

Request only the events, scopes, and permissions needed for the bot’s features. Discord’s developer policy governs how API data is accessed, stored, retained, transmitted, shared, and processed, and prohibits attempts to re-identify or de-anonymize people from API data. Document what your bot collects, how long it keeps it, and who can access the database or logs.

When adding a feature, review its data flow before enabling a new intent. A command that needs only interaction payloads should not automatically gain message-content, presence, or member access. Minimize stored content and remove data that no longer serves a defined feature.

A practical deployment checklist

  • Application created, bot user enabled, token stored outside source control.
  • OAuth2 scopes and server permissions reduced to the minimum.
  • Gateway, HTTP interactions, or webhook model selected deliberately.
  • Required privileged intents justified, enabled, and compliant with current Discord rules.
  • Dependencies and base image pinned; image runs as a non-root user where practical.
  • .dockerignore excludes environment files and local development artifacts.
  • Secrets injected at runtime through a protected file, Compose secret, or provider secret store.
  • VPS uses SSH keys, a non-root sudo account, current security updates, and a restrictive firewall.
  • Docker’s daemon socket remains local and is not exposed without authenticated, restricted TLS access.
  • Compose restart policy, log rotation, graceful shutdown, and meaningful health monitoring are configured.
  • Persistent data has an independent backup and a tested restore procedure.
  • Updates are tested in a separate Discord server, with the previous image retained for rollback.

When a VPS is the right home

A single VPS is a good fit when you want predictable host access, control over Docker and networking, and a bot that can run on one machine. A managed container platform can reduce host maintenance by handling parts of the update, networking, and scaling work, but it changes how you inspect the runtime and persist data. Whichever platform you choose, the non-negotiables remain the same: least-privilege Discord access, runtime-only secrets, protected container management, observable restarts, and a tested recovery path.

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.

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.

Leave a Reply

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

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

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
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.