The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →The reliable pattern is straightforward: register the bot in Discord, build a small Docker image, inject the token only when the container starts, and run that container on a hardened Linux VPS with a restart policy and monitored logs. A Gateway bot normally needs no public inbound port; a bot that receives HTTP interactions needs a public HTTPS endpoint, usually behind a reverse proxy.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
What you are building
A Discord bot is an application created in the Discord Developer Portal. Discord gives the application a bot user and token; you install it in a server through an OAuth2 installation URL, then your code communicates through Discord’s Gateway, HTTP interactions, or both.
As an Amazon Associate I earn from qualifying purchases.
Docker packages your program, runtime, and locked dependencies into a repeatable image. The VPS supplies an always-on Linux host, network access, storage, and a supervisor policy that can restart the container after a crash or reboot. The token remains a runtime secret rather than part of the image.
| Connection model | How it works | Use it when | VPS networking |
|---|---|---|---|
| Gateway WebSocket | A persistent connection receives real-time events and sends commands. | Your bot reacts to messages, member events, interactions, scheduled work, or other live events. | Usually outbound HTTPS/WSS only; no public listener is required. |
| HTTP interactions | Discord sends signed HTTP requests for slash commands, buttons, and other components. | You need request/response interactions without maintaining a persistent Gateway connection. | Requires a public HTTPS endpoint and correct signature verification. |
| Webhook | One-way HTTP posting into a channel. | The application only publishes notifications and does not need a bot user or event stream. | Outbound HTTPS only. |
If the application only posts messages, a webhook is usually simpler than operating a full bot. Choose the smallest model that satisfies the feature set.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Prerequisites and decisions
- A Discord account with permission to create an application and install it in a test server.
- A bot project with a dependency lockfile, a startup command, and configuration that reads the token from an environment variable or mounted secret.
- A supported Linux VPS with sudo access, SSH keys, outbound DNS and HTTPS/WSS access, and enough memory for the runtime and any database.
- Docker Engine and the Docker Compose plugin installed on the VPS.
- A domain name and TLS certificate if the bot receives HTTP interactions.
- A backup destination independent of the VPS if the bot stores state.
Decide early whether the bot is stateless, needs a local SQLite file, or should use an external database. Also decide which Discord events are genuinely needed; requesting broad access creates additional privacy, review, and maintenance obligations.
Prepare the Discord application
- Open the Discord Developer Portal and create an application. Give it a descriptive name and record the application ID for deployment configuration.
- Add or enable the application’s bot user, then generate its token. Store the token in a password manager or secret store immediately. Discord states: “Make sure to never share your token or check it into any kind of version control.” The token is highly sensitive and cannot be viewed again without regeneration.
- Build the installation URL with only the scopes and permissions the bot needs. Use the bot scope for a bot user and the applications.commands scope when registering slash commands. Avoid administrator permission unless a specific feature truly requires it.
- Install the bot in a private test server first. Test command registration, permissions, and event handling there before inviting it to production servers.
- Choose Gateway events, HTTP interactions, or both. For HTTP interactions, configure the public endpoint and application public key in the code and verify every request signature.
- Enable privileged intents only when the implementation uses them. Member, presence, and message-content access have stronger requirements under Discord’s changes that took effect June 10, 2026, including annual reviews and higher thresholds for some wider-use access. Check the current Developer Portal requirements before submitting a bot for broad distribution.
Keep the application ID, public key, token, database credentials, and webhook URLs under the same secret-handling rules. Public identifiers are not equivalent to the token, but publishing configuration unnecessarily makes later rotation and incident response harder.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesContainerize the bot
Keep the build reproducible
Commit the source, lockfile, Dockerfile, Compose file, and a carefully maintained example configuration to version control. Exclude .env, private keys, local virtual environments, node modules, caches, and generated databases with a .dockerignore file. Pin dependency versions in the lockfile and use a deliberate base-image tag rather than an unqualified latest tag.
A multi-stage build keeps compilers and development tools out of the runtime image. The following Python example illustrates the pattern; use the equivalent production base and start command for Node.js or another runtime.
FROM python:3.12-slim AS runtime
ENV PYTHONDONTWRITEBYTECODE=1
PYTHONUNBUFFERED=1
WORKDIR /app
RUN useradd --create-home --uid 10001 bot
COPY requirements.txt .
RUN pip install --no-cache-dir --requirement requirements.txt
COPY src/ ./src/
RUN chown -R bot:bot /app
USER bot
CMD ["python", "-m", "src"]
Do not copy a local .env file into the image and do not pass the token through a Docker build argument. Build arguments can appear in image history or CI logs.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
Make the process container-friendly
- Read configuration at startup and fail clearly when a required value is absent.
- Write normal logs to stdout and errors to stderr, not to an unbounded file inside the container.
- Handle termination signals so the process can close its Discord connection and flush pending work.
- Run as a non-root user when the framework and file permissions allow it.
- Use a health endpoint only when it measures something meaningful. A process that is alive but cannot authenticate or reach its dependency is not healthy.
Define the service with Docker Compose
Compose keeps the image, environment, restart policy, volumes, health check, and logging limits in one reviewable file. This example expects a runtime variable named DISCORD_TOKEN and a bot that exposes an internal health endpoint on port 8080. Remove the health-check section if your bot has no endpoint.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
services:
bot:
build:
context: .
image: my-discord-bot:2026-10-14
env_file:
- /opt/my-discord-bot/secrets/bot.env
restart: unless-stopped
init: true
read_only: true
tmpfs:
- /tmp
volumes:
- bot-data:/app/data
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
logging:
driver: json-file
options:
max-size: 10m
max-file: 3
volumes:
bot-data:
If the bot is entirely stateless, omit the named volume. Persist only data that must survive replacement, such as a SQLite database or generated configuration. A read-only root filesystem may require you to provide writable locations for caches or temporary files; test that setting before production.
Compose secrets are another option when the application can read a mounted file. In either design, ensure the secret file is readable only by the deployment account or service user and is outside the build context.
Provision and harden the VPS
- Choose a supported Linux distribution and create a non-root administrative user with sudo.
- Install security updates before deploying the application. Disable password SSH authentication after confirming key-based login works.
- Configure the firewall to allow SSH only from trusted addresses where practical. A Gateway-only bot generally needs no inbound application port. An HTTP-interactions bot needs only the reverse proxy’s public HTTP and HTTPS ports.
- Install Docker Engine and the Compose plugin from the distribution or Docker’s documented package channel. Add the deployment user to the Docker group only if you accept that membership grants effective root-level control of the host.
- Create an application directory such as
/opt/my-discord-bot. Keeping deployment files outside a private home directory avoids service-isolation and permission surprises. - Keep the Docker daemon on its local Unix socket. Docker warns that unauthenticated remote daemon access can let an attacker control containers and gain root access on the host. If remote administration is unavoidable, use authenticated TLS, network restrictions, and Docker’s documented secure configuration.
For HTTP interactions, put a reverse proxy in front of the bot. Terminate TLS there, route only the required hostname and path to the container, renew certificates automatically, and preserve the request body and headers needed for signature verification. Do not expose the application’s internal port directly if the proxy can be the sole public entry point.
Store and inject secrets safely
Create the secret file on the VPS without placing it in the repository or image:
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchRank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
sudo install -d -m 700 /opt/my-discord-bot/secrets
sudo install -m 600 /dev/null /opt/my-discord-bot/secrets/bot.env
sudoedit /opt/my-discord-bot/secrets/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
Use a secret manager supplied by your VPS platform or an encrypted deployment system when available. Never place secrets in build arguments, shell history, screenshots, issue trackers, crash reports, or log messages. Redact environment dumps and exception traces that might include configuration.
If the token appears in a repository, CI log, terminal recording, or screenshot, reset it in the Developer Portal immediately, replace the runtime secret, and redeploy. A restart alone does not invalidate an exposed token.
Build, launch, and verify the container
From the project directory on the VPS, validate the Compose file before starting it:
cd /opt/my-discord-bot
docker compose config
docker compose build --pull
docker compose up -d
docker compose config should render the intended service without a missing-variable error. The build should complete without copying local secrets. After launch, inspect status and logs:
docker compose ps
docker compose logs --tail=200 -f bot
For a Gateway bot, the logs should show successful authentication and the expected ready or connected state. For HTTP interactions, send a test command from the test server and verify a fast successful response in both proxy and application logs. Do not log the authorization header, token, or full signed request.
Rank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Confirm that the service survives a normal restart:
docker compose restart bot
docker compose ps
Then reboot the VPS during a maintenance window and verify that restart: unless-stopped brings the service back automatically. Configure an alert for repeated restarts, failed health checks, authentication failures, and disk exhaustion rather than relying on a person to watch logs.
Recommended Free Tools
Keep the bot online 24/7
Restart policy is not application recovery
restart: unless-stopped handles process crashes and host reboots, but it cannot fix invalid credentials, missing permissions, a broken dependency, or a permanently failing health check. Your code should reconnect according to the library’s supported behavior, apply bounded retry delays, and exit with a useful error when startup configuration is invalid.
Observe resource and dependency health
- Set Docker log rotation limits so a noisy exception loop cannot fill the VPS disk.
- Monitor CPU, memory, disk space, container restart count, and outbound connectivity.
- Use a health check that exercises a local readiness condition, not one that falsely reports success merely because a process exists.
- Record deployment version and image digest in a non-secret startup log line for incident correlation.
Back up state deliberately
Back up a SQLite volume or generated configuration to storage independent of the VPS, and periodically test restoration on a separate instance. A stateless bot should be rebuildable from the pinned image, version-controlled configuration, and runtime secrets; do not create a backup plan for data that can simply be regenerated.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Update, test, and roll back safely
- Pin application dependencies and base-image major versions. Review Discord library and runtime release notes before changing them.
- Build a new image with a distinct tag and run a smoke test in a separate Discord test server.
- Check command registration, required intents, permissions, database migrations, and HTTP signature validation.
- Deploy the new image with
docker compose up -d --buildor by changing the image tag and runningdocker compose up -d. - Watch logs, health status, restart counts, and a real test interaction.
- Keep the previous image tag until the new release has remained stable. To roll back, restore the prior tag in Compose and run
docker compose up -d.
Discord uses versioned API routes. Treat route versions, gateway behavior, and library compatibility as maintenance inputs rather than assuming an old endpoint will remain valid indefinitely. Before enabling a new intent or collecting new user data, re-check Discord’s current developer policy and access requirements. The policy governs how API data is accessed, stored, retained, transmitted, shared, and processed, and prohibits attempts to re-identify or de-anonymize people.
Best Value
Deployment choices and trade-offs
| Choice | Advantages | Costs or limitations | Best fit |
|---|---|---|---|
| Docker Compose | Portable service definition, explicit dependencies, repeatable rebuilds, easy local-to-VPS parity. | Someone must maintain Docker, images, logs, updates, and the host. | One or several related containers on a VPS. |
| Host supervisor running Docker | Host-native boot ordering, centralized service status, and policy controls. | More configuration and another layer to understand; the container definition still needs maintenance. | Teams already standardizing on a supervisor such as systemd. |
| SQLite volume | Minimal setup and low latency for a single bot on one VPS. | Backups, write contention, and failover are your responsibility; the volume is tied to that deployment. | Small, single-instance bots with modest write volume. |
| External database | Independent backups, easier migration, and room for multiple bot instances. | Network credentials, latency, connection limits, and an additional service cost. | Growing bots or deployments that need independent scaling. |
| Direct public listener | Fewer moving parts. | You must handle TLS, certificates, exposure, and routing in the application or its immediate container. | Only when the listener is intentionally designed and hardened for public exposure. |
| Reverse proxy | Central HTTPS termination, domain routing, certificate renewal, and a smaller public surface. | Requires correct forwarding and signature-preserving configuration. | HTTP interactions and any VPS hosting multiple web services. |
| Single VPS | Predictable host access and straightforward operations. | You own patching, monitoring, backups, and availability during host failure. | Most small and medium bots with one primary process. |
| Managed container platform | Provider-managed infrastructure, networking, and some update or scaling operations. | Less host control, platform-specific configuration, and potentially less predictable networking or pricing. | Teams that prioritize reduced server administration. |
Troubleshooting by symptom
The bot is offline
Run docker compose ps and inspect recent logs. Verify that the token variable is present inside the running container without printing its value, confirm outbound DNS and HTTPS/WSS access, and check whether the process exits immediately because of a dependency or configuration error.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Discord reports 401 or an invalid token
Do not print the token while debugging. Reset it in the Developer Portal, update the protected runtime secret, and recreate the container. Check that the secret file has no accidental whitespace, that Compose loaded the intended file, and that an old image or shell environment is not overriding it.
Slash commands are missing
Check that the installation included the applications.commands scope, that your registration code targets the intended test guild or global scope, and that propagation time is appropriate for the registration method. Verify the bot has permission to use commands in the target channels.
Events never arrive
Confirm that the code requests the required intents, the corresponding Developer Portal switches are enabled, and the bot is eligible under Discord’s current privileged-intent requirements. Also check that event handlers are registered before the client logs in.
HTTP interactions fail or time out
Verify DNS, certificate validity, reverse-proxy forwarding, request-body preservation, signature verification, and the application’s response timeout. Return the required acknowledgement promptly and move slow work to a background job. A private container port is not reachable from Discord without a correctly routed public HTTPS endpoint.
The container repeatedly restarts
Run the image interactively with an alternate command, inspect the exit code, and look for missing modules, permission errors, architecture mismatches, or an absent environment variable. Add a meaningful health check only after the process can start reliably, and keep log rotation enabled while diagnosing the loop.
You suspect the VPS was compromised
Isolate the host from the network, revoke and rotate Discord credentials and other secrets, inspect SSH accounts and Docker access, preserve relevant logs, and rebuild from a known-good image and backup. Do not trust a container restart as evidence that a compromised host is clean.
Quick Recap
Operational checklist
- The bot is installed through a least-privilege OAuth2 URL and tested in a private server.
- The selected Gateway, HTTP-interaction, or webhook model matches the actual feature requirements.
- Privileged intents are limited, documented, and reviewed against the rules in force since June 10, 2026.
- The image contains no token, private key,
.envfile, or development cache. - The container runs as a non-root user where practical and writes logs to stdout/stderr.
- Secrets are injected at runtime from a protected file, Compose secret, or provider secret store.
- The Docker daemon is not exposed through an unauthenticated public TCP socket.
- Firewall rules expose only SSH and, for HTTP interactions, the reverse proxy’s required ports.
- Restart policy, health checks, log rotation, monitoring, and alerts are configured.
- Persistent volumes are backed up independently and restoration has been tested.
- Updates are built, smoke-tested, observed, and reversible through a retained previous image.
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.




