# Daki Wiki > Guides, references and answers for Daki Hosting — free and premium hosting for Discord bots, web apps and game servers, running on high-performance hardware in Germany. Source: https://daki.cc/wiki # Welcome to Daki Hosting > Free and premium hosting for Discord bots, web applications, and more — running on high-performance hardware in Germany. ## About Daki Hosting **Daki Hosting** is a Freemium hosting provider founded in 2021, based in Germany. The platform offers a free tier for hosting Discord bots and Node.js/Python applications, as well as paid plans with dedicated resources, multiple server slots, and a 99.9% uptime SLA. With over 115,000 registered users, Daki runs on AMD Ryzen 9 hardware with DDR5 RAM and NVMe storage. Need help? Visit the [Discord community](https://discord.gg/daki) or open a ticket through the [Billing Panel](https://billing.daki.cc). --- ## What Daki Offers - **Free Tier** — Host one Discord bot or application at no cost. Limited to 50% CPU, 512 MB RAM, and 1 GB disk. Runtime is maintained by watching short ads. No credit card required. - **App & Bot Hosting (Bronze / Silver / Gold)** — Dedicated AMD Ryzen 9 9900X resources, multiple server slots via Splits, DDR5 RAM, NVMe storage, and a 99.9% uptime SLA. Starting at €2/month. - **Game Servers (Quest → Legend)** — AMD EPYC-powered game server plans for Minecraft, Valheim, Rust, and more. Starting at €4/month. - **VPS & Dedicated Servers** — Custom solutions available on request via the Billing Panel or Discord. Not managed through the Portal. --- ## Three Panels, One Ecosystem Daki uses three separate interfaces that work together: | Interface | URL | Purpose | | :--- | :--- | :--- | | **Free Tier Dashboard** | [dash.daki.cc](https://dash.daki.cc) | Free Tier account management and credentials | | **Billing Panel** | [billing.daki.cc](https://billing.daki.cc) | Purchase plans, manage invoices and payments | | **Portal** | [portal.daki.cc](https://portal.daki.cc) | Manage all servers — Free Tier and paid | Additional resources: | Resource | URL | | :--- | :--- | | **Website** | [daki.cc](https://daki.cc) | | **Status** | [daki.cc/status](https://daki.cc/status) | | **Discord** | [discord.gg/daki](https://discord.gg/daki) | --- ## Where to Start - [Free Tier Overview](https://daki.cc/wiki/guides/free-tier) — Understand resources, runtime limits, and how to keep your server running for free. - [Create an Account](https://daki.cc/wiki/guides/account-create) — Sign up with Discord or create a Billing Panel account. - [Create Your First Server](https://daki.cc/wiki/guides/create-server) — Step-by-step guide to spinning up your free server. - [Paid Plans](https://daki.cc/wiki/guides/paid-plans) — Compare Bronze, Silver, and Gold plans and upgrade. Source: https://daki.cc/wiki/home --- # Quickstart > Get your first Discord bot or app online on Daki in minutes — from sign-up to a running server. New to Daki? This is the fastest path from zero to a running server. Follow the steps below, then dive into the linked guides for the details. **Step 1: Create an account** Sign up for free with Discord at [dash.daki.cc](https://dash.daki.cc), or create a [Billing Panel](https://billing.daki.cc) account for paid plans. Full details: [Create an Account](https://daki.cc/wiki/guides/account-create). **Step 2: Create a server** In the Free Tier Dashboard, open **Server → Create**, choose a name and a language (**Node.js** or **Python**), then click **Create**. See [Create Your First Server](https://daki.cc/wiki/guides/create-server). **Step 3: Open the Portal** Log in to the [Portal](https://portal.daki.cc) via SSO — no password needed — to manage your files, startup settings, and console. See [Portal Overview](https://daki.cc/wiki/guides/portal). **Step 4: Upload your code and set the startup command** Upload your project in the **Files** tab (ZIP or SFTP), then set the install and startup commands in the **Startup** tab. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). **Step 5: Add your secrets and start** Store tokens and keys in a `.env` file (see [Environment Variables](https://daki.cc/wiki/guides/environment-variables)), then hit **Start** in the **Console** tab. ## Pick your path - [Deploy a Discord.js Bot](https://daki.cc/wiki/guides/deploy-discordjs) — Node.js bot — install, token, and going live. - [Deploy a Python Bot](https://daki.cc/wiki/guides/deploy-python) — discord.py / py-cord — full walkthrough. - [Keep a Free Server Alive](https://daki.cc/wiki/guides/save-free-server-from-purge) — Extend runtime so your free server isn't purged. - [Connect a Custom Domain](https://daki.cc/wiki/guides/custom-domain) — Point your own domain at a paid-plan web app. > **Info:** On the **Free Tier**, your server starts with 3 days of runtime — extend it for free by watching short ads. See [Free Tier Overview](https://daki.cc/wiki/guides/free-tier). Source: https://daki.cc/wiki/quickstart --- # Free Tier Overview > Resources, runtime limits, renewal mechanics, and how the Free Tier compares to paid plans. Daki Hosting offers a permanently free tier for Discord bots and Node.js or Python applications hosted in Germany. This page explains how the Free Tier works and what separates it from paid plans. ## What you'll learn - What resources a free server includes - How the runtime counter works and how to extend it - What happens when runtime runs out - Key restrictions and limitations of the Free Tier - How Free Tier compares to paid plans --- ## Resources Each Free Tier server includes: | Resource | Limit | | :--- | :--- | | CPU | 50% (shared) | | RAM | 512 MB | | Disk | 1,024 MB (1 GB) | | Servers | 1 per account | | Languages | Node.js and Python only | All Free Tier servers are hosted in **Germany**. --- ## How the Runtime System Works Free Tier servers do not run indefinitely. They use a runtime counter that decreases over time and must be topped up by watching short ads in the Free Tier Dashboard. - **Initial runtime:** Every new free server starts with **3 days** of runtime. - **Maximum runtime:** You can accumulate up to **30 days** at any time. - **Cost:** Completely free — no payment required, ever. ### Extending Runtime Log in to [dash.daki.cc](https://dash.daki.cc) and use the renewal option on your server page. | Action | Runtime gained | | :--- | :--- | | Watch 1 ad (~2 minutes) | +3 days | | Maximum ads per day | 2 | | Maximum per day | +6 days | | Maximum total runtime | 30 days | --- ## What Happens When Runtime Expires | Stage | What happens | | :--- | :--- | | Runtime reaches 0 | Server **suspended** — goes offline, inaccessible | | Grace period (0–2 days) | You can still renew by watching ads | | After 2 days without renewal | Server **permanently deleted** — files cannot be recovered | > **Warning:** Free Tier servers have no automatic backups. Once deleted, your data is gone permanently. Always store your code in an external location — for example, on GitHub. ### Renewal Reminders Enable the **Server Renewal Reminder** in the **Credentials** tab of the Free Tier Dashboard ([dash.daki.cc/credentials](https://dash.daki.cc/credentials)). The Daki Discord bot will then DM you before your server is about to expire. --- ## Free Tier Restrictions - **One server per account.** You cannot run multiple servers simultaneously. - **One account per person.** Creating multiple accounts is a Terms of Service violation and may result in suspension. - **Node.js and Python only.** Java, Rust, C#, and other runtimes are not available. - **Discord login only.** The Free Tier Dashboard uses Discord OAuth — no email/password sign-up. - **No uptime SLA.** The 99.9% uptime guarantee applies to paid plans only. - **No public ports.** Free Tier servers cannot receive inbound connections. Discord bots (which connect outbound) are not affected, but web servers and APIs will not be publicly reachable. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Free Tier vs Paid Plans | Feature | Free Tier | Paid Plans (Bronze–Gold) | | :--- | :--- | :--- | | Cost | Free | From €2/month | | CPU | 50% shared | 100–300% dedicated (AMD Ryzen 9 9900X) | | RAM | 512 MB | 2–6 GB DDR5 | | Disk | 1 GB | 6–12 GB NVMe | | Servers | 1 | 2–4 (via Splits) | | Languages | Node.js, Python | All supported eggs | | Uptime SLA | None | 99.9% | | Public ports | No | Yes | | Renewal | Watch ads | Credits or saved payment method | | On expiry | Suspended → deleted (2-day grace) | Suspended → deleted (7-day grace) | --- ## Next Steps - [Create an Account](https://daki.cc/wiki/guides/account-create) — Sign up with Discord to get started. - [Create Your First Server](https://daki.cc/wiki/guides/create-server) — Spin up your free server in minutes. - [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge) — Learn how to keep your server active. - [Paid Plans](https://daki.cc/wiki/guides/paid-plans) — See what you get when you upgrade. Source: https://daki.cc/wiki/guides/free-tier --- # Create an Account & Log In > How to register on Daki Hosting, log in to the Free Tier Dashboard or Billing Panel, and access the Portal. Daki Hosting has two separate account systems: the **Free Tier Dashboard** for free hosting, and the **Billing Panel** for paid services. Both accounts grant access to the **Portal**, where all server management happens. ## What you'll learn - How to create a Free Tier account (Discord login) - How to register on the Billing Panel - How to access the Portal via SSO or manual credentials - Where to find your Portal login details --- ## Free Tier Account The Free Tier Dashboard is at [dash.daki.cc](https://dash.daki.cc). Login and registration use **Discord OAuth** exclusively — there is no email/password sign-up for the Free Tier. **Step 1: Go to the dashboard** Open [dash.daki.cc](https://dash.daki.cc). **Step 2: Sign in with Discord** Click **"Sign in with Discord"**. **Step 3: Authorize the app** A Discord authorization window will appear. Click **Authorize**. **Step 4: You're in** Daki creates your account automatically and logs you in. > **Info:** You are limited to **one Free Tier account per person**. Creating multiple accounts to bypass this limit is a violation of Daki's Terms of Service and may result in a permanent ban. ### Troubleshooting Login > **Warning:** **Pop-up closes or fails to authorize** > Make sure you are logged in to Discord in your browser, or have the Discord desktop app running. Try again if the pop-up closes prematurely. > **Warning:** **Cannot log in after changing your Discord email** > Daki may not be able to re-link your account automatically after a Discord email change. Contact support on Discord to have your email updated manually. --- ## Billing Panel Account The Billing Panel is at [billing.daki.cc](https://billing.daki.cc). It has its **own independent login**, completely separate from the Free Tier Dashboard. You create a Billing Panel account when purchasing a paid plan. From the Billing Panel you can: - Purchase and manage paid services - View invoices and billing history - Load account credits and manage payment methods - Access the Portal via SSO or retrieve Portal credentials - Create support tickets --- ## Accessing the Portal The **Portal** at [portal.daki.cc](https://portal.daki.cc) is where you manage your servers, whether free or paid. It is built on a customized Pterodactyl panel. ### Option 1: SSO Login (recommended) Both the Free Tier Dashboard and Billing Panel have a one-click button that logs you into the Portal automatically — no password needed. - **Free Tier:** Go to the **Credentials** tab in the Free Tier Dashboard → click **"Login via SSO"**. - **Paid plans:** Open your active service page in the Billing Panel → click **"Login to Portal"**. ### Option 2: Manual Login Log in directly at [portal.daki.cc](https://portal.daki.cc) using your Portal email and password. | Account type | Where to find credentials | | :--- | :--- | | Free Tier | **Credentials** tab at [dash.daki.cc/credentials](https://dash.daki.cc/credentials) — shows username, email, and password | | Paid plan | **Access** tab (email) and **Password** tab (view or generate password) in the Billing Panel | --- ## Renewal Reminders (Free Tier) In the **Credentials** tab of the Free Tier Dashboard, enable the **Server Renewal Reminder**. The Daki Discord bot will then DM you before your server's runtime is about to expire, giving you time to watch ads and renew. --- ## Next Steps - [Create Your First Server](https://daki.cc/wiki/guides/create-server) — Set up a free server in the dashboard. - [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge) — Understand how the runtime system works. - [Portal Overview](https://daki.cc/wiki/guides/portal) — Learn what you can do in the Portal once you're logged in. Source: https://daki.cc/wiki/guides/account-create --- # Create Your First Free Server > Step-by-step guide to creating a free server on Daki Hosting — from login to launch. > **Info:** Free Tier accounts are limited to **one server** per account. Your server starts with **3 days of runtime**, which you can extend for free by watching short ads. See [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge) for details. ## What you'll learn - How to log in to the Free Tier Dashboard - How to create and configure a free server - What resources your server starts with - What to do immediately after creation --- ## Creating Your Server **Step 1: Log in to the Free Tier Dashboard** Go to [dash.daki.cc](https://dash.daki.cc). If you are not yet logged in, click **"Sign in with Discord"**. Don't have an account yet? See [Create an Account](https://daki.cc/wiki/guides/account-create) first — it only takes a moment. **Step 2: Open Server Management** Once logged in, click the **Server** section in the dashboard navigation menu. **Step 3: Click Create** Click the **"Create"** button to begin setting up your server. **Step 4: Name your server and choose a language** Fill in two fields: - **Server Name** — Any name you like (e.g., `MyDiscordBot`). - **Language** (egg) — Choose **Node.js** or **Python**. These are the only options available on the Free Tier. **Step 5: Finish creation** Click **Create**. Your server is now active. Your new server starts with: | Resource | Amount | | :--- | :--- | | CPU | 50% (shared) | | RAM | 512 MB | | Disk | 1,024 MB (1 GB) | | Initial runtime | 3 days | --- ## What to Do Next Your server is running — now you need to deploy your application. 1. **Access the Portal** — Log in via SSO from the **Credentials** tab, or visit [portal.daki.cc](https://portal.daki.cc) directly. See [Portal Overview](https://daki.cc/wiki/guides/portal). 2. **Upload your code** — Use the built-in file manager or SFTP. See [File Manager](https://daki.cc/wiki/guides/file-manager). 3. **Configure startup** — Set the correct Docker image and startup command. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). 4. **Keep your server alive** — Watch ads to extend your runtime before it hits zero. See [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge). --- ## Troubleshooting > **Warning:** **The "Create" button is greyed out or missing** > You already have an active server. Free Tier accounts support one server at a time. Delete your existing server first if you want to start fresh. > **Warning:** **Server shows as "Installing" for a long time** > Wait a minute and refresh the page. If it remains stuck, contact support via [Discord](https://discord.gg/daki). > **Info:** **Need more resources or multiple servers?** > Consider upgrading to a paid plan. See [Paid Plans](https://daki.cc/wiki/guides/paid-plans) for options starting at €2/month. Source: https://daki.cc/wiki/guides/create-server --- # Keep Your Free Server Active > How to extend your free server's runtime by watching ads, and what happens if your server expires. > **Warning:** Free Tier servers have no automatic backups. If your server is deleted after the grace period, **Daki cannot recover your files or data**. Always keep a copy of your code in an external location such as GitHub. ## What you'll learn - How the runtime counter and expiry system work - How to extend your runtime by watching ads - What happens during suspension and the grace period - How to enable renewal reminders --- ## How Runtime Works Your free server runs on a **runtime counter** that starts at **3 days** when the server is created. Once the counter reaches zero, your server is suspended and eventually deleted unless you top it up. | Stage | What happens | | :--- | :--- | | Runtime > 0 | Server runs normally | | Runtime = 0 | Server is **suspended** — offline and inaccessible | | 0–2 days after suspension | **Grace period** — you can still renew by watching ads | | After 2 days without renewal | Server is **permanently deleted** | --- ## How to Renew: Watch Ads Extend your runtime by watching short ads in the Free Tier Dashboard at [dash.daki.cc](https://dash.daki.cc). | Action | Runtime gained | | :--- | :--- | | Watch 1 ad (~2 minutes) | +3 days | | Maximum ads per day | 2 | | Maximum per day | +6 days | | Maximum total runtime | 30 days | ### Steps 1. Log in at [dash.daki.cc](https://dash.daki.cc). 2. Navigate to your server in the dashboard. 3. Use the ad-watching or renewal option to add runtime. 4. Repeat up to twice per day. > **Info:** Watching ads when you are already at 30 days does not add more time. The counter is capped at 30 days maximum. --- ## Enable the Renewal Reminder Go to the **Credentials** tab in the Free Tier Dashboard ([dash.daki.cc/credentials](https://dash.daki.cc/credentials)) and enable the **Server Renewal Reminder**. When active, the Daki Discord bot will send you a DM before your runtime is about to expire. --- ## Best Practices - **Watch ads daily.** Two ads per day keeps your runtime near the 30-day maximum with a comfortable buffer. - **Enable the renewal reminder** so you never miss an expiry. - **Back up your code externally** (e.g., on GitHub). Even if your server is deleted, your project is safe. --- ## Frequently Asked Questions **Can I recover my server after it has been deleted?** No. Once the 2-day grace period ends and the server is deleted, the data is permanently gone. Daki cannot restore it. **What happens to my files when the server is suspended?** Your files remain on the server during the suspension and the grace period. **Do paid plans expire the same way?** No. Paid plans renew via credits or a saved payment method — not through ads. See [Billing & Payments](https://daki.cc/wiki/guides/billing) for details. --- ## Next Steps - [Portal Overview](https://daki.cc/wiki/guides/portal) — Learn how to access and manage your server. - [File Manager](https://daki.cc/wiki/guides/file-manager) — Download your files before they are deleted. - [Paid Plans](https://daki.cc/wiki/guides/paid-plans) — Upgrade to a paid plan to avoid the runtime system entirely. Source: https://daki.cc/wiki/guides/save-free-server-from-purge --- # App & Bot Hosting Plans > Bronze, Silver, and Gold paid hosting plans — specs, pricing, hardware, and how to purchase. Daki's App & Bot Hosting plans provide dedicated resources on **AMD Ryzen 9 9900X** processors with **DDR5 RAM** and **NVMe storage**, hosted in Germany. All plans include a **99.9% uptime SLA**, DDoS protection, publicly accessible ports, and access to all supported programming languages and eggs. Daki uses a **prepaid system** — no contracts, no lock-in. Pay for the time you need and renew only when you want to. See [Billing & Payments](https://daki.cc/wiki/guides/billing) for details. ## What you'll learn - What each plan includes - How Splits give you multiple server instances - How to purchase and manage your plan - What happens when a billing period ends --- ## Available Plans | Plan | CPU | RAM | Disk | Splits | Price | | :--- | :--- | :--- | :--- | :--- | :--- | | **Bronze** | 100% | 2 GB DDR5 | 6 GB NVMe | 2 | €2 / month | | **Silver** | 200% | 4 GB DDR5 | 9 GB NVMe | 3 | €4 / month | | **Gold** | 300% | 6 GB DDR5 | 12 GB NVMe | 4 | €6 / month | CPU percentages represent vCore allocation on the AMD Ryzen 9 9900X (100% = 1 full vCore). **Splits** determine how many server instances you can run simultaneously by dividing your plan's resources. See [Understanding Splits](https://daki.cc/wiki/guides/splits). Need more than Gold? Custom plans are available on request — contact Daki via the Billing Panel or [Discord](https://discord.gg/daki). --- ## Hardware & Infrastructure | Spec | Detail | | :--- | :--- | | **CPU** | AMD Ryzen 9 9900X | | **RAM** | DDR5 | | **Storage** | NVMe SSD | | **Location** | Germany | | **DDoS Protection** | Best-effort, included | | **Uptime SLA** | 99.9% | | **Public ports** | Yes — add allocations as needed | --- ## How to Purchase 1. Go to the **Billing Panel** at [billing.daki.cc](https://billing.daki.cc). 2. Create an account or log in. 3. Browse available plans and select one. 4. Complete checkout using your preferred payment method. For payment method options, see [Billing & Payments](https://daki.cc/wiki/guides/billing). --- ## Billing Cycle & What Happens When a Period Ends - **Billing period:** 30 days, prepaid. - **No obligation:** If you choose not to renew, your service simply expires — you will not be charged again. - **Auto-renewal (optional):** If you have credits or a saved payment method on file, services renew automatically for convenience. ### Service Lifecycle After Expiry | Stage | Timing | What happens | | :--- | :--- | :--- | | **Suspension** | At period end | Server goes offline; your files are preserved | | **Cancellation** | After 7 days suspended | Service is permanently cancelled; all data is deleted | > **Warning:** If you do not renew within 7 days of suspension, your server files will be **permanently deleted**. Renew within that window to restore access with your data intact. > **Info:** Paid plan servers use automatic renewal — they do **not** use the ad-watching runtime system of the Free Tier. See [Billing & Payments](https://daki.cc/wiki/guides/billing) for full details. --- ## Other Services | Service | Access | | :--- | :--- | | **Game Servers** | Order via the Billing Panel — see [Game Servers](https://daki.cc/wiki/guides/game-servers) | | **VPS** | Request-only via Billing Panel or Discord | | **Dedicated Servers** | Request-only via Billing Panel or Discord | | **Custom Plans** | Request via Billing Panel or Discord | VPS and Dedicated Server plans are managed outside the Portal. Contact support for access details. --- ## Frequently Asked Questions **Will my server be deleted if my plan expires?** Not immediately. When a paid plan expires without renewal, the server is suspended and your files are preserved for 7 days. Renew within that window to restore access. After 7 days, the service is permanently cancelled and all data is deleted. **Is there a contract or minimum commitment?** No. Daki uses a prepaid model. There are no contracts or lock-in. Simply do not renew if you no longer need the service. **Can I upgrade from Free Tier to a paid plan?** Yes. Purchase a plan in the Billing Panel. Your paid plan provides a new server slot with dedicated resources, separate from the Free Tier. **Do you offer annual plans?** Not currently. Pre-load credits in the Billing Panel to cover multiple months without manually renewing each period. **Are IPs shared?** Yes, IPs are shared across users on the same node. Paid plans are not subject to any port restrictions and can receive inbound connections. --- ## Next Steps - [Understanding Splits](https://daki.cc/wiki/guides/splits) — Learn how to run multiple servers on one plan. - [Billing & Payments](https://daki.cc/wiki/guides/billing) — Manage credits, invoices, and payment methods. - [Game Servers](https://daki.cc/wiki/guides/game-servers) — See dedicated game server plans. - [Portal Overview](https://daki.cc/wiki/guides/portal) — Start managing your server after purchasing. Source: https://daki.cc/wiki/guides/paid-plans --- # Game Servers > Daki's dedicated game server plans — specs, pricing, supported games, and how to order. Daki Hosting offers dedicated game server plans powered by **AMD EPYC** processors, hosted in Germany. These plans are separate from the App & Bot Hosting plans and run on different hardware optimized for game workloads. ## What you'll learn - Available game server plans and their specs - Which games are supported - How to order a game server - How game server plans differ from App & Bot Hosting plans --- ## Available Plans | Plan | CPU | RAM | Disk | Slots | Price | | :--- | :--- | :--- | :--- | :--- | :--- | | **Quest** | 200% AMD EPYC | 4 GB DDR4 | 24 GB NVMe | 2 | €4 / month | | **Adventurer** | 300% AMD EPYC | 6 GB DDR4 | 36 GB NVMe | 2 | €6 / month | | **Hero** | 400% AMD EPYC | 8 GB DDR4 | 48 GB NVMe | 2 | €8 / month | | **Champion** | 500% AMD EPYC | 12 GB DDR4 | 72 GB NVMe | 3 | €12 / month | | **Legend** | 600% AMD EPYC | 16 GB DDR4 | 96 GB NVMe | 4 | €16 / month | **Slots** are the number of server instances you can run simultaneously on a single plan (similar to Splits on App & Bot Hosting plans). Custom game server plans are available on request via the Billing Panel or Discord. --- ## Hardware & Infrastructure | Spec | Detail | | :--- | :--- | | **CPU** | AMD EPYC | | **RAM** | DDR4 | | **Storage** | NVMe SSD | | **Location** | Germany | | **Uptime SLA** | 99.9% | | **Game switching** | Instant — switch games at any time | > **Info:** Game server plans use AMD EPYC processors with DDR4 RAM. This is different from the App & Bot Hosting plans, which use AMD Ryzen 9 9900X processors with DDR5 RAM. --- ## Supported Games Game servers support the following titles (this list may expand over time): - Minecraft Java - Hytale - Satisfactory - Terraria - Valheim - Rust - Garry's Mod - Factorio - Unturned - Enshrouded You can switch between supported games at any time without losing your plan. --- ## How to Order Game servers are ordered through the **Billing Panel** at [billing.daki.cc](https://billing.daki.cc). For custom configurations or games not listed above, open a support ticket or ask on [Discord](https://discord.gg/daki). --- ## Game Servers vs App & Bot Hosting | Feature | App & Bot Hosting | Game Servers | | :--- | :--- | :--- | | CPU | AMD Ryzen 9 9900X | AMD EPYC | | RAM type | DDR5 | DDR4 | | Managed in Portal | Yes | Yes | | Multiple instances | Splits (2–4) | Slots (2–4) | | Starting price | €2/month | €4/month | | Supported workloads | Discord bots, web apps, APIs | Game servers | --- ## Next Steps - [Billing & Payments](https://daki.cc/wiki/guides/billing) — Manage credits and payment methods. - [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) — See plans for bots and web applications. - [Getting Help](https://daki.cc/wiki/guides/support) — Contact support for custom game server requests. Source: https://daki.cc/wiki/guides/game-servers --- # Understanding Splits > What Splits are, how resource splitting works, and how to run multiple servers on a single paid plan. **Splits** are a paid-plan feature that let you divide your plan's total resources across multiple server instances. Instead of one large server, you can run several smaller ones — all within the same plan's resource budget. ## What you'll learn - What a Split is and how it works - How many Splits each plan includes - How to allocate resources between servers - What types of servers you can run as Splits --- ## What Is a Split? A Split represents one server instance slot. Your plan's **total** CPU, RAM, and disk are a shared pool. You allocate portions of that pool to each server you create, as long as the total never exceeds your plan's limits. The number of Splits equals the maximum number of servers you can run simultaneously. --- ## Splits Per Plan | Plan | Splits | Max simultaneous servers | | :--- | :--- | :--- | | Bronze | 2 | 2 | | Silver | 3 | 3 | | Gold | 4 | 4 | The Free Tier does not support Splits. --- ## How Resource Splitting Works Your plan's resources are a pool — every server you create draws from it. The sum of all server allocations must stay within your plan's limits. **Example — Silver plan (200% CPU, 4 GB RAM, 9 GB NVMe, 3 Splits):** | Server | CPU | RAM | Disk | | :--- | :--- | :--- | :--- | | Discord Bot | 50% | 512 MB | 1 GB | | Web API | 100% | 2 GB | 4 GB | | Database | 50% | 1.5 GB | 4 GB | | **Total** | **200%** | **4 GB** | **9 GB** | All three Splits are used and the plan's resources are fully allocated. --- ## What You Can Run as Splits You are not limited to application servers. The Portal's Splits tab lets you create: **Application servers:** - Node.js - Python - Java - Rust - C# - Lua - And other supported eggs **Database servers:** - MongoDB - MariaDB - PostgreSQL --- ## Managing Splits in the Portal The **Splits** tab appears on each paid-plan server in the Portal. From there you can: - Create new server instances - Set resource allocations per instance - Create database servers --- ## Frequently Asked Questions **Can I use Splits on the Free Tier?** No. Splits are only available on Bronze, Silver, and Gold paid plans. **Can different Splits run different programming languages?** Yes. You can mix and match runtimes across your Splits — for example, one Node.js server and one Python server on the same plan. **What happens if I downgrade to a plan with fewer Splits?** You may need to remove some server instances to fit within the new plan's limit. Contact support before downgrading if you need help. **Can I create a database server as a Split?** Yes. The Portal's Splits tab lets you create MongoDB, MariaDB, and PostgreSQL database servers alongside your application servers. --- ## Next Steps - [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) — Compare Bronze, Silver, and Gold. - [Portal Overview](https://daki.cc/wiki/guides/portal) — Learn how to access and navigate the Portal. - [Billing & Payments](https://daki.cc/wiki/guides/billing) — Manage your subscription and payment methods. Source: https://daki.cc/wiki/guides/splits --- # Billing & Payments > How Daki's prepaid billing works: credits, invoices, payment methods, and service renewal. Daki Hosting uses a **prepaid system** — you pay for the time you want, with no contracts, no commitments, and no automatic obligation. All billing for paid services is managed in the **Billing Panel** at [billing.daki.cc](https://billing.daki.cc). ## What you'll learn - How the prepaid system works - How to load credits and manage payment methods - Which payment providers are accepted - What happens when a service period ends - How to access the Portal from the Billing Panel --- ## How the Prepaid System Works Daki operates on a simple prepaid model: - You **pay in advance** for a 30-day period of service. - When that period ends, you choose whether to renew. - **There is no contract or lock-in.** If you decide not to renew, your service simply expires — you will not be charged again. - If you have credits or a saved payment method, renewal happens automatically for convenience. You can disable this at any time by cancelling the service. --- ## The Billing Panel The Billing Panel ([billing.daki.cc](https://billing.daki.cc)) is separate from the Free Tier Dashboard and has its own login. You create a Billing Panel account when purchasing your first paid service. From the Billing Panel you can: - Purchase and manage services - View invoices and billing history - Load account credits - Add and manage payment methods - Access the Portal via SSO or retrieve Portal credentials - Create support tickets **Forgot your Billing Panel password?** Use the **"Forgot Password"** link on the login page — a reset link will be sent to your registered email address. --- ## Credits Credits are a pre-paid balance stored in your Billing Panel account. Load them at any time under **Account → Credits**. If you have credits and an active service, renewal happens automatically at the end of each billing period — no manual action needed. Credits make it easy to pre-pay for multiple months in advance. --- ## Payment Methods Save a payment method under **Account → Payment Methods** for faster checkout and as a fallback when credits run low. ### Accepted Providers | Provider | Accepted methods | | :--- | :--- | | **Stripe** | Mastercard, Visa, Apple Pay, Google Pay, Klarna, WeChat Pay, Alipay, Satispay, and more | | **MOLLIE** | iDEAL, Bancontact, and other regional bank methods | | **PayPal** | PayPal balance, linked bank account or card | | **NowPayments** | Cryptocurrency (see below) | ### Cryptocurrency Crypto payments are processed via NowPayments. Supported currencies include (but are not limited to): - Solana (SOL) - Litecoin (LTC) - Tether (USDT) --- ## Invoices All invoices are available under **Account → Invoices**. They are generated at the start of each billing period and can be downloaded for your records. --- ## What Happens When a Service Ends Daki uses a two-stage process when a billing period ends without renewal: | Stage | Timing | What happens | | :--- | :--- | :--- | | **Suspension** | At period end | Service goes offline; files are preserved | | **Cancellation** | After 7 days suspended | Service is permanently cancelled; all data is deleted | > **Warning:** After the 7-day suspension window, your server's files are **permanently deleted** and cannot be recovered. Renew within 7 days to restore full access with your data intact. If you have credits or a saved payment method, renewal is automatic and you will not go through this cycle. --- ## Auto-Renewal When a billing period ends, renewal is attempted in this order: 1. **Account Credits** — used first if available. 2. **Saved Payment Method** — charged if credits are insufficient. If neither is available, the service enters suspension immediately. To prevent a service from auto-renewing, cancel it in the Billing Panel before the period ends. --- ## Accessing the Portal from the Billing Panel Once you have an active service: - Go to your service page in the Billing Panel. - Click **"Login to Portal"** to log in via SSO automatically. - Or check the **Access** tab for your Portal email and the **Password** tab to view or generate a new Portal password. --- ## Next Steps - [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) — Compare Bronze, Silver, and Gold. - [Game Servers](https://daki.cc/wiki/guides/game-servers) — See dedicated game server plans. - [Understanding Splits](https://daki.cc/wiki/guides/splits) — Learn how to run multiple servers on one plan. - [Getting Help](https://daki.cc/wiki/guides/support) — Contact support for billing questions. Source: https://daki.cc/wiki/guides/billing --- # Portal Overview > What the Daki Portal is, how to access it, and what each tab does — your server management hub. The **Portal** ([portal.daki.cc](https://portal.daki.cc)) is your server management hub. All servers — Free Tier and paid — are managed here. It is built on a customized Pterodactyl panel. ## What you'll learn - How to log in to the Portal - Which services are managed here (and which are not) - What each tab in the Portal does --- ## How to Log In **Option 1 — SSO (recommended):** Click the "Login to Portal" or "Login via SSO" button available in both the Free Tier Dashboard and the Billing Panel. This logs you in automatically without a password. - Free Tier Dashboard SSO: [dash.daki.cc](https://dash.daki.cc) → **Credentials** tab - Billing Panel SSO: [billing.daki.cc](https://billing.daki.cc) → active service page **Option 2 — Manual login:** Log in directly at [portal.daki.cc](https://portal.daki.cc) with your Portal email and password. | Account type | Where to find credentials | | :--- | :--- | | Free Tier | **Credentials** tab at [dash.daki.cc/credentials](https://dash.daki.cc/credentials) | | Paid plan | **Access** tab (email) and **Password** tab in the Billing Panel | --- ## Which Services Are Managed in the Portal | Service | Managed in Portal? | | :--- | :--- | | Free Tier (Node.js / Python) | Yes | | Paid App & Bot Hosting | Yes | | Paid Game Servers | Yes | | VPS | No — managed separately | | Dedicated Server | No — managed separately | VPS and Dedicated Server customers receive separate access details from the Daki team after ordering. --- ## Portal Tabs Every server in the Portal has the following tabs: ### Console View live server output and send input to your running process. Includes power action buttons (Start, Stop, Restart, Kill). See [Console & Power Actions](https://daki.cc/wiki/guides/console). ### Files Browse your server's filesystem in the browser. Upload files, create and edit files, extract archives, and manage directories. See [File Manager](https://daki.cc/wiki/guides/file-manager). ### Splits *(Paid Plans Only)* Create and manage additional server instances and database servers within your plan's resource budget. See [Understanding Splits](https://daki.cc/wiki/guides/splits). ### Subusers Add other Daki users to your server with granular permissions. See [Subusers](https://daki.cc/wiki/guides/subusers). ### Network View your server's hostname and port. On paid plans, add additional port allocations. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). ### Startup Select your Docker image (runtime version), set the install command (for dependencies), and configure your startup command. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). ### Settings View SFTP connection details, rename your server, reinstall it, or change the programming language (egg). See [Server Settings](https://daki.cc/wiki/guides/server-settings). ### Activity A log of recent actions on your server — starts, stops, file changes, and user actions. --- ## Portal vs Free Tier Dashboard vs Billing Panel | | Free Tier Dashboard | Billing Panel | Portal | | :--- | :--- | :--- | :--- | | **URL** | dash.daki.cc | billing.daki.cc | portal.daki.cc | | **Purpose** | Free Tier account, credentials | Purchasing and billing | Server management | | **Login** | Discord OAuth | Own account | SSO or Portal credentials | | **Used by** | Free Tier users | Paid plan customers | All users | --- ## Next Steps - [File Manager](https://daki.cc/wiki/guides/file-manager) — Upload your code to the server. - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Configure your Docker image and startup command. - [Console & Power Actions](https://daki.cc/wiki/guides/console) — Start your server and watch the output. - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Set tokens and config values for your app. Source: https://daki.cc/wiki/guides/portal --- # File Manager > How to upload, manage, and edit your server files using the Portal's built-in file manager or SFTP. The **Files** tab in the Portal gives you browser-based access to your server's filesystem. You can upload files, create directories, edit files in a web editor, and extract archives — all without leaving the browser. For larger transfers, SFTP is also available. ## What you'll learn - How to navigate and manage files - How to upload files (and how to handle the folder limitation) - How to create and edit files in the browser - How to use SFTP for unrestricted access --- ## Navigating Files The file manager shows your server's directory tree. Click folders to enter them, and click any text file to open it in the built-in web editor. --- ## Uploading Files Click **Upload** to upload one or more files from your computer. Files land in the currently open directory. > **Info:** The web file manager has an upload size limit per file. For large files or many files at once, use SFTP instead (see the section below). --- ## Uploading Folders Direct folder upload is **not supported** in the web file manager. Use one of these workarounds: ### Option 1: Upload an archive (quickest) 1. Compress your folder on your computer into a `.zip` or `.tar.gz` file. 2. Upload the archive using the **Upload** button. 3. Right-click the archive in the file manager and select **Extract** to unpack it on the server. ### Option 2: Use SFTP (no size limits) SFTP lets you upload entire folder trees with no browser restrictions. See the SFTP section below. --- ## Creating and Editing Files | Action | How | | :--- | :--- | | Create a new file | Click **New File** | | Edit an existing file | Click the file to open it in the web editor, then click **Save** | | Create a directory | Click **New Directory** | | Rename or delete | Right-click a file or folder to access these options | --- ## Archive Operations - **Extract:** Upload a `.zip` or `.tar.gz`, right-click it, and select **Extract** to unpack it in place. - **Compress:** Select files or folders and use the archive option to create a `.zip`. --- ## Using SFTP SFTP gives you direct, unrestricted filesystem access from a desktop client. ### Getting your SFTP details 1. In the Portal, open your server and go to the **Settings** tab. 2. Find the **SFTP Details** section: - **Host** — the SFTP server address - **Port** — typically 2022 - **Username** — your Portal username 3. Use your Portal account password as the SFTP password. ### Recommended SFTP clients | Client | Platform | | :--- | :--- | | FileZilla | Windows, Mac, Linux (free) | | WinSCP | Windows (free) | | Cyberduck | Mac, Windows (free) | | `sftp` | Any terminal | ### What SFTP lets you do - Upload entire folder trees in one transfer - Transfer large files without hitting browser limits - Manage files efficiently from your desktop environment --- ## Tips - Stop your server before uploading a replacement version of your application to avoid file conflicts. - Use the web editor for quick one-file edits; use SFTP for initial project setup or large uploads. - Keep an external copy of your code (e.g., on GitHub), especially on the Free Tier where deleted files cannot be recovered. --- ## Next Steps - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Configure your server's startup command after uploading your files. - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Set your bot token and other configuration values. - [Console & Power Actions](https://daki.cc/wiki/guides/console) — Start your server and check the output. Source: https://daki.cc/wiki/guides/file-manager --- # Startup Settings > How to configure your server's Docker image, install command, and startup command in the Portal's Startup tab. The **Startup** tab in the Portal controls how your server builds and launches. It contains three key settings: the **Docker image** (runtime version), the **install command** (dependency setup), and the **startup command** (what launches your application). Getting these right is essential for your server to work correctly. ## What you'll learn - How to select the correct Docker image (runtime version) - The difference between the install command and the startup command - Common examples for Node.js and Python - How to use the Startup tab for interactive shell access --- ## Docker Image Daki runs each server inside a Docker container. The **Docker image** determines which programming language version is available inside that container. The Startup tab has a dropdown to select the image. Always match it to what your application requires. | Runtime | Example images | | :--- | :--- | | Node.js | Node.js 18, Node.js 20, Node.js 22, Node.js 24 | | Python | Python 3.11, Python 3.12 | | Java | Java 17, Java 21 | | Others | Rust, C#, Lua, and more (paid plans) | > **Warning:** Choosing the wrong runtime version causes startup failures. If your project requires Node.js 22 features, do not select Node.js 18. --- ## Install Command The **install command** runs once when your server is set up or reinstalled. It is designed for installing dependencies and preparing your environment. | Runtime | Typical install command | | :--- | :--- | | Node.js | `npm install` | | Python | `pip install -r requirements.txt` | Set this field so that your dependencies are installed automatically. You can customise this command freely to match your project's needs — for example, if you use a different package manager (e.g., `yarn install` or `pnpm install`). --- ## Startup Command The **startup command** runs every time your server starts. This is the command that actually launches your application. | Application type | Startup command | | :--- | :--- | | Node.js — single entry file | `node index.js` | | Node.js — npm start script | `npm start` | | Python — single entry file | `python main.py` | | Python — as a module | `python -m mypackage` | You are free to customise the startup command to suit your project's structure, entry point, and any flags or arguments your application needs. **Important:** Filenames are case-sensitive. Make sure the filename in your startup command matches exactly what appears in the file manager. --- ## Interactive Shell Access If you want to interact with the container directly and run commands manually — for example, to debug, inspect files, or run one-off commands — you can temporarily set the **startup command** to `bash`. 1. Go to the **Startup** tab. 2. Change the **startup command** to `bash`. 3. Restart your server. 4. Open the **Console** tab — you can now type shell commands directly. > **Warning:** While the startup command is set to `bash`, your application will **not** start automatically. Restore your original startup command when you are done. See [Console & Power Actions](https://daki.cc/wiki/guides/console) for more details. --- ## Changing the Egg (Programming Language) The **egg** defines the overall programming language and framework. To switch from one language to another (e.g., Node.js → Python), use the **Settings** tab — not the Startup tab. Changing the egg triggers a reinstall; backups are strongly recommended beforehand. See [Server Settings](https://daki.cc/wiki/guides/server-settings). --- ## Tips - Restart your server after changing any setting in the Startup tab for changes to take effect. - If your server crashes immediately after starting, the Console tab output almost always shows why. - Double-check filenames in your startup command against what appears in the file manager. --- ## Next Steps - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Set up a `.env` file for your bot token and other secrets. - [Console & Power Actions](https://daki.cc/wiki/guides/console) — Start your server and view output. - [Server Settings](https://daki.cc/wiki/guides/server-settings) — Reinstall your server or change the egg. Source: https://daki.cc/wiki/guides/startup-settings --- # Server Settings > SFTP details, renaming, reinstalling your server, and changing the programming language (egg). The **Settings** tab in the Portal contains administrative options for your server: SFTP connection details, rename, reinstall, and egg change (programming language). ## What you'll learn - Where to find your SFTP connection details - How to rename your server - How to reinstall your server and when to use it - How to change the egg (programming language) --- ## SFTP Details The Settings tab shows your SFTP credentials: | Field | Description | | :--- | :--- | | **Host** | The SFTP server address | | **Port** | The SFTP port (typically 2022) | | **Username** | Your Portal username | | **Password** | Your Portal account password | Use these with any SFTP client (FileZilla, WinSCP, Cyberduck, or the terminal `sftp` command) to manage files directly from your desktop. SFTP has no file size limits. For a complete guide, see [File Manager](https://daki.cc/wiki/guides/file-manager). --- ## Renaming Your Server Change your server's display name at any time from the Settings tab. This only affects the name shown in the Portal's server list — it does not change your hostname, port, or application behavior. --- ## Reinstalling Your Server The **Reinstall** button resets your server to a clean default state based on its current egg. This re-runs the egg's installation process and may overwrite certain files in your server directory, depending on how the egg is configured. > **Warning:** Reinstalling does not normally delete all your files automatically, but it can overwrite specific files or cause an incompatible setup depending on your project structure. **Creating a backup before reinstalling is strongly recommended.** Download your files via SFTP or push your code to GitHub before proceeding. **When to reinstall:** - Your server environment is broken or corrupted - You want a clean default state with the same programming language - You are starting a new project and want to reset the server --- ## Changing the Egg (Programming Language) The **egg** defines your server's programming language and framework. Switching to a different egg (e.g., from Node.js to Python) is done from the Settings tab. **Steps:** 1. Open the **Settings** tab. 2. Select your new egg from the dropdown. 3. Confirm the change. > **Warning:** Changing the egg triggers a reinstall. This does not normally delete all your files automatically, but certain files may be overwritten and your existing setup may become incompatible with the new egg. **Creating a backup before changing the egg is strongly recommended.** Download your files via SFTP or push your code to GitHub first. After changing the egg, visit the **Startup** tab to select the matching Docker image and update your startup command. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). --- ## Debug Information The Settings tab also displays technical information about your server (such as the server UUID and node ID) that can be useful when contacting support. --- ## Next Steps - [File Manager](https://daki.cc/wiki/guides/file-manager) — Download your files via SFTP before reinstalling. - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Update your startup command and Docker image after an egg change. - [Getting Help](https://daki.cc/wiki/guides/support) — Contact support if something goes wrong. Source: https://daki.cc/wiki/guides/server-settings --- # Console & Power Actions > How to view server output, control your server with power actions, and run shell commands in the Console. The **Console** tab in the Portal is your real-time window into your running server. It streams output as it happens and provides buttons to start, stop, restart, or forcefully kill your server. ## What you'll learn - How to view live server output - How to use power actions (Start, Stop, Restart, Kill) - How to send shell commands in the console --- ## Viewing Live Output Once your server is running, the Console tab streams its output in real time. Use it to: - Confirm that your application started successfully - Read startup errors and stack traces - Monitor live log output If your server starts and immediately crashes, the console output almost always shows why. --- ## Power Actions | Action | Effect | | :--- | :--- | | **Start** | Starts the server | | **Stop** | Sends a graceful stop signal to the running process | | **Restart** | Stops the server and starts it again | | **Kill** | Immediately and forcefully terminates the process | Use **Kill** only when the server is completely unresponsive and won't stop with the normal Stop button. --- ## Sending Shell Commands By default, the console input box sends text to your application's stdin — useful for game servers or custom CLI interfaces. To run arbitrary shell commands instead (e.g., `ls`, `node --version`, `pip install requests`), you first need to configure your server to accept them. ### How to enable shell command input 1. Go to the **Startup** tab of your server. 2. Change the **Startup Command** to `bash`. 3. Return to the **Console** tab and click **Restart**. After restarting, the console input accepts shell commands directly. > **Warning:** With the startup command set to `bash`, your application will **not** start automatically. You must run it manually from the console, or restore your original startup command when you are done. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). --- ## Troubleshooting Common Issues **Server crashes immediately on start** Check the console output for error messages. Common causes: - Wrong startup command (wrong filename or wrong syntax) - Missing entry point file (upload your files first) - Incorrect Docker image version - Missing dependencies (try running `npm install` or `pip install -r requirements.txt` manually via `bash` mode) See [Startup Settings](https://daki.cc/wiki/guides/startup-settings) and [File Manager](https://daki.cc/wiki/guides/file-manager). **Console shows no output at all** Your application may be writing logs to a file instead of stdout. Check if a log file exists in the file manager. Some frameworks require a specific flag to enable console output (e.g., disabling silent mode). **I can't type in the console input box** Make sure your server is running (green status). The console input is only active while the server process is alive. --- ## Next Steps - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Fix your startup command or Docker image. - [File Manager](https://daki.cc/wiki/guides/file-manager) — Upload missing files. - [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting) — More help for common problems. Source: https://daki.cc/wiki/guides/console --- # Environment Variables > How to configure environment variables for your application on Daki Hosting using a .env file. Environment variables let you pass configuration values — like a Discord bot token or an API key — to your application without hardcoding them in your source code. On Daki Hosting, the recommended approach is to create a **`.env` file** directly on your server using the Portal's file manager or SFTP. ## What you'll learn - What environment variables are and why they matter - How to create a `.env` file on your server - How to load `.env` values in Node.js and Python - Best practices for keeping secrets safe --- ## What Are Environment Variables? Environment variables are key-value pairs that your running application can read from its environment. They are the standard way to: - Store sensitive values (tokens, API keys, passwords) separately from code - Change configuration without modifying or redeploying source files - Avoid committing secrets to version control --- ## Creating a `.env` File The simplest and most reliable way to manage environment variables on Daki is to create a `.env` file on your server. You can do this in two ways: ### Option 1: Using the File Manager (quick edits) 1. Open your server in the Portal ([portal.daki.cc](https://portal.daki.cc)). 2. Go to the **Files** tab. 3. Click **New File** and name it `.env`. 4. Click the file to open it in the web editor and add your variables: ``` BOT_TOKEN=your_discord_bot_token_here PORT=3000 DATABASE_URL=your_db_connection_string ``` 5. Click **Save**. 6. Restart your server. ### Option 2: Using SFTP (recommended for initial setup) Connect to your server via SFTP (credentials in the **Settings** tab) and upload your `.env` file directly from your local machine. See [File Manager](https://daki.cc/wiki/guides/file-manager) for SFTP setup instructions. > **Warning:** Never commit your `.env` file to a public Git repository. Add `.env` to your `.gitignore` file to prevent accidental exposure of secrets. --- ## Loading `.env` Values in Your Application Applications do not automatically read `.env` files — you need a library to load them into the environment. **Node.js (dotenv)** Install the package (add it to your `package.json` as a dependency): ```json { "dependencies": { "dotenv": "^16.0.0" } } ``` Load it at the very top of your entry file: ```js require('dotenv').config(); const token = process.env.BOT_TOKEN; const port = process.env.PORT || 3000; ``` **Python (python-dotenv)** Add `python-dotenv` to your `requirements.txt`: ``` python-dotenv ``` Load it at the top of your entry file: ```python from dotenv import load_dotenv import os load_dotenv() token = os.environ.get("BOT_TOKEN") port = int(os.environ.get("PORT", 3000)) ``` --- ## `.env` File Format Each line in a `.env` file follows the format `KEY=VALUE`: ``` # Comments start with a hash BOT_TOKEN=your_token_here API_KEY=some_api_key DB_HOST=localhost DB_PORT=5432 DEBUG=false ``` - Keys are typically uppercase with underscores. - Values do not need quotes, but quotes are supported. - Lines starting with `#` are comments and are ignored. --- ## Best Practices - **Never hardcode tokens or secrets** in your source code files, especially if your code is on GitHub. - **Add `.env` to your `.gitignore`** so it is never accidentally committed. - **Create your `.env` file on the server**, not locally — or use SFTP to upload a local `.env` that is excluded from version control. - **Restart your server** after creating or modifying your `.env` file. - Use **descriptive key names** that make your configuration self-documenting. --- ## Next Steps - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Configure your install command, startup command, and Docker image. - [Deploy a Discord.js Bot](https://daki.cc/wiki/guides/deploy-discordjs) — Full deployment walkthrough including token setup. - [Deploy a Python Bot](https://daki.cc/wiki/guides/deploy-python) — Full deployment walkthrough including token setup. Source: https://daki.cc/wiki/guides/environment-variables --- # Network & Allocations > Understanding ports and public network access on Daki Hosting — and what differs between Free Tier and paid plans. Network access works differently depending on whether you are on the Free Tier or a paid plan. This page explains how ports and allocations work and what you can expect in each case. ## What you'll learn - The difference in network access between Free Tier and paid plans - What an allocation is - How to view your hostname and port - How to add allocations on paid plans --- ## Free Tier: No Public Ports Free Tier servers do **not** have publicly accessible ports. Inbound connections from outside the server are not supported on the Free Tier. This means: - Your application cannot receive external HTTP requests or WebSocket connections. - Web servers, APIs, and webhook endpoints will not be reachable from the internet. - **Discord bots** are not affected — they connect outbound to Discord and do not need an inbound port. If your application needs to be reachable from outside (e.g., a web API, a game server, or a bot with webhook-based interactions), you will need a paid plan. --- ## Paid Plans: Publicly Accessible Ports All paid plans (Bronze, Silver, Gold, and game server plans) include at least one **publicly accessible port allocation**. This allows your application to accept inbound connections from anywhere. Each paid server is assigned a **hostname** and a **port**, both visible in the **Network** tab of the Portal. **Example:** - Hostname: `eu-node1.daki.cc` - Port: `25565` - Full address: `eu-node1.daki.cc:25565` Your application must listen on the assigned port to be reachable from outside. --- ## What Is an Allocation? An **allocation** is a hostname + port pair assigned to your server. It represents one publicly accessible network endpoint. Paid servers start with one allocation by default. --- ## Adding Allocations (Paid Plans Only) On paid plans, you can add additional port allocations from the **Network** tab in the Portal. This is useful when your application needs to listen on more than one port at the same time — for example, a game server with a query port alongside its main port. --- ## Frequently Asked Questions **What port should my application listen on?** Your application must listen on the exact port shown in the **Network** tab. Listening on any other port will make your application unreachable from outside. Some eggs provide this value as an environment variable (e.g., `PORT` or `SERVER_PORT`) that you can read in your code. **My Discord bot works fine on Free Tier — why?** Discord bots establish an outbound connection to Discord's servers (via WebSocket). They do not need an inbound port to function, which is why they work on the Free Tier. If your bot also runs an HTTP server (e.g., for slash command interactions or a web dashboard), you will need a paid plan for that component to be accessible. **Can I get a static IP or custom domain?** Daki uses shared IPs across its nodes. You can point your own domain at a paid-plan server using Cloudflare as a reverse proxy — see [Connect a Custom Domain](https://daki.cc/wiki/guides/custom-domain). For static IP options, contact support via the Billing Panel or Discord. **I'm on a paid plan but my port doesn't seem to be accessible** Verify that your application is listening on the correct port (check the Network tab). Also confirm the server is running and the application has fully started. If the issue persists, contact support. --- ## Next Steps - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Configure your startup command to use the correct port. - [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) — Upgrade to get publicly accessible ports. - [Getting Help](https://daki.cc/wiki/guides/support) — Contact support if you have allocation issues. Source: https://daki.cc/wiki/guides/network-allocations --- # Connect a Custom Domain > Point your own domain at a web app hosted on Daki using Cloudflare as a reverse proxy — with free HTTPS and custom-port forwarding. Includes an advanced Cloudflare Tunnel (cloudflared) alternative. Want your web app to be reachable at `yourdomain.com` instead of a `hostname:port` address? This guide shows you how to point your own domain at a Daki server using **Cloudflare** as a free reverse proxy. Cloudflare handles HTTPS for you and forwards visitors to the custom port your app listens on. > **Info:** Custom domains require a **paid plan**. They rely on a publicly accessible port, and only paid plans (Bronze, Silver, Gold, and game server plans) include public ports. Free Tier servers cannot receive inbound connections, so a custom domain cannot work there. See [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) and [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). ## What you'll learn - Why a custom domain on Daki needs a reverse proxy like Cloudflare - How to point your domain at your server with a proxied DNS record - How to enable free HTTPS for your domain - How to forward traffic to your app's port with an Origin Rule - An advanced alternative using Cloudflare Tunnel (`cloudflared`) --- ## Prerequisites - A **paid plan** server with a public port allocation — see [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) - A **domain name** you own (registered at any registrar, e.g. Namecheap, GoDaddy, IONOS, Cloudflare Registrar) - A free [Cloudflare](https://dash.cloudflare.com/sign-up) account - A **web app** (HTTP/HTTPS) that is running and listening on your server's allocation port > **Warning:** Your app must bind to `0.0.0.0` (all interfaces) on your allocation port — **not** `127.0.0.1` / `localhost`. An app bound only to localhost is not reachable from outside the container, and the proxy will fail to connect. Most frameworks accept a host argument (e.g. `app.run(host="0.0.0.0", port=...)` in Flask, or `HOST=0.0.0.0` for many Node.js apps). --- ## Why You Need Cloudflare Daki uses **shared IP addresses** across its nodes, and your app listens on a non-standard **port** (the allocation assigned to your server). Two problems follow: - Visitors expect to reach `https://yourdomain.com` on the standard HTTPS port (443) — not `yourdomain.com:4129`. - You want a valid HTTPS certificate without managing one yourself. Putting Cloudflare in front of your server solves both. Cloudflare acts as a **reverse proxy**: browsers connect to Cloudflare over HTTPS on port 443, and Cloudflare forwards the request to your server on your custom port. You get free SSL and a clean URL, and your server's real IP stays hidden. > **Note:** This method works for **HTTP/HTTPS web apps** (websites, APIs, dashboards, webhooks). It does **not** work for raw TCP/UDP services such as most game servers — Cloudflare's standard proxy only handles HTTP(S). For non-HTTP services, use the [Cloudflare Tunnel](#advanced-alternative-cloudflare-tunnel-cloudflared) method below or contact [support](https://daki.cc/wiki/guides/support). --- ## Find Your Server's IP and Port You'll need two values from the **Network** tab in the [Portal](https://daki.cc/wiki/guides/portal): | Value | Where to find it | Example | | :--- | :--- | :--- | | **Server IP** | The IP address your server's hostname resolves to (shown in the **Network** tab). If only a hostname is shown, you can resolve it — e.g. `ping eu-node1.daki.cc` — or ask [support](https://daki.cc/wiki/guides/support). | `203.0.113.10` | | **Allocation port** | The port shown next to your hostname in the **Network** tab. Your app must listen on this port. | `4129` | We'll use these example values throughout. **Replace them with your own** wherever they appear. For more on allocations, see [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Part 1: Cloudflare Setup **Step 1: Add your domain to Cloudflare** 1. Create a free account at [dash.cloudflare.com](https://dash.cloudflare.com/sign-up) (or log in). 2. Click **Add a site** and enter your domain (e.g. `yourdomain.com`). 3. Select the **Free** plan when prompted. 4. Cloudflare will give you **two nameservers** (e.g. `xxx.ns.cloudflare.com`). 5. Log in to your **domain registrar**, find the nameserver / DNS settings for your domain, and replace the existing nameservers with the two provided by Cloudflare. > **Note:** Nameserver changes can take anywhere from a few minutes to 24 hours to propagate. Cloudflare emails you once your domain is active. You can continue with the next steps in the meantime. **Step 2: Create a DNS record** In the Cloudflare dashboard for your domain, go to **DNS → Records** and click **Add record**: | Field | Value | | :--- | :--- | | **Type** | `A` | | **Name** | `@` (this represents the root domain, `yourdomain.com`) | | **IPv4 address** | Your server IP (example: `203.0.113.10`) | | **Proxy status** | **Proxied** (orange cloud ☁️) | Click **Save**. > **Tip:** The **orange cloud (Proxied)** status is essential — it routes traffic through Cloudflare so SSL and the port rewrite in Part 2 can work. A grey cloud (DNS only) would bypass Cloudflare entirely and expose your server IP. To also serve `www.yourdomain.com`, add a second proxied record with the name `www`. **Step 3: Configure SSL/TLS** 1. Go to **SSL/TLS → Overview**. 2. Set the encryption mode to **Flexible**. **Flexible** means traffic between the visitor and Cloudflare is encrypted (HTTPS), while Cloudflare connects to your app over plain HTTP on your custom port. This is the right choice when your app serves plain HTTP — which most apps on a custom port do. > **Note:** If your app terminates its own TLS (i.e. it serves **HTTPS** directly on its port), choose **Full** instead. Be aware that **Flexible** does not encrypt the connection between Cloudflare and your server; for sensitive traffic, prefer **Full** with HTTPS on your app. --- ## Part 2: Forward Traffic to Your App's Port Because your app runs on a custom port (e.g. `4129`) rather than the standard 80/443, you need to tell Cloudflare which port to use when it connects to your server. An **Origin Rule** does exactly that — it rewrites the destination port for incoming requests. **Step 1: Create an Origin Rule** 1. In the Cloudflare dashboard, go to **Rules → Origin Rules**. 2. Click **Create Origin Rule**. 3. Configure the rule: | Setting | Value | | :--- | :--- | | **When incoming requests match** | Hostname **equals** `yourdomain.com` | | **Then... Rewrite to** | **Destination Port** → `4129` (your allocation port) | 4. Click **Save** (or **Deploy**). > **Success:** Once DNS has propagated, your app is now reachable at **`https://yourdomain.com`** — Cloudflare serves it over HTTPS and forwards traffic to your server on port `4129`. --- ## Verify It Works 1. Make sure your server is **running** and your app is listening on the allocation port (check the **Console** tab). 2. Open `https://yourdomain.com` in your browser. 3. You should see your app load over HTTPS with a valid padlock. If it doesn't load right away, give DNS a little more time to propagate, then see [Common Issues](#common-issues) below. --- ## Advanced Alternative: Cloudflare Tunnel (cloudflared) Instead of opening a public port and pointing an A record at your server, you can run **`cloudflared`** — Cloudflare's tunnel client — alongside your app. It opens an **outbound** connection to Cloudflare and forwards traffic to your app locally, so your server's IP and port stay hidden and you need neither a DNS A record nor an Origin Rule. > **Note:** **How the Daki environment shapes this.** The Startup tab gives you two commands — an [**install command**](https://daki.cc/wiki/guides/startup-settings) (runs once on setup/reinstall) and a **startup command** (runs on every boot) — and you can open a shell by temporarily setting the startup command to `bash`. But your server is a **container, not a full Linux VM**: there is no `apt`, you can't register a system service, and a tunnel you start by hand in the console dies when the server restarts. The reliable approach is therefore to make the tunnel **part of your app's own startup** — download the `cloudflared` binary at runtime and launch it as a child process next to your app, controlled by an environment variable. **Step 1: Create the tunnel** 1. In the Cloudflare **Zero Trust** dashboard, go to **Networks → Tunnels** and click **Create a tunnel**, then choose **Cloudflared**. 2. Give it a name and **copy the tunnel token** that Cloudflare displays (the long string after `--token` in its install command). 3. Add a **Public Hostname** to the tunnel: - **Domain:** `yourdomain.com` - **Service:** `http://localhost:4129` (your app's local port) **Step 2: Store the token in .env** Add the token to your server's `.env` file (see [Environment Variables](https://daki.cc/wiki/guides/environment-variables)) so it never ends up in your source code: ``` CLOUDFLARE_TUNNEL_TOKEN=your_tunnel_token_here ``` **Step 3: Start the tunnel from your code** Add a small launcher that downloads `cloudflared` on first run and starts it next to your app, then set that launcher as your **startup command**. It only starts the tunnel when `CLOUDFLARE_TUNNEL_TOKEN` is set, so the same code runs fine locally without one. **Node.js (start.js)** Save as `start.js`, then set your startup command to `node start.js`: ```js // start.js — starts your app and, if a token is set, a Cloudflare tunnel. require("dotenv").config(); const fs = require("fs"); const path = require("path"); const { spawn, spawnSync } = require("child_process"); const CLOUDFLARED_URL = "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64"; const binaryPath = path.join(__dirname, "cloudflared"); const children = []; // The container has no apt — download the binary on first run, reuse it after. function ensureCloudflared() { if (fs.existsSync(binaryPath)) return binaryPath; console.log("[tunnel] downloading cloudflared..."); const dl = spawnSync("curl", ["-fsSL", "-o", binaryPath, CLOUDFLARED_URL], { stdio: "inherit", }); if (dl.status !== 0) return null; fs.chmodSync(binaryPath, 0o755); return binaryPath; } // Spawn a child process; if any child exits, stop the rest and quit. function start(name, command, args) { const child = spawn(command, args, { stdio: "inherit", env: process.env }); child.on("exit", (code) => { console.error(`[${name}] exited (${code}); shutting down`); for (const c of children) if (!c.killed) c.kill("SIGTERM"); process.exit(code ?? 1); }); children.push(child); } const token = process.env.CLOUDFLARE_TUNNEL_TOKEN?.trim(); if (token) { const binary = ensureCloudflared(); if (binary) start("tunnel", binary, ["tunnel", "run", "--token", token]); } else { console.log("[tunnel] CLOUDFLARE_TUNNEL_TOKEN not set; skipping tunnel"); } // Start your app — change this to your real entry point. start("app", "node", ["index.js"]); ``` **Python / other (start.sh)** Save as `start.sh`, then set your startup command to `bash start.sh`: ```bash #!/usr/bin/env bash # Load variables from .env into the environment. set -a; [ -f .env ] && . ./.env; set +a # The container has no apt — download cloudflared on first run, reuse it after. if [ ! -x ./cloudflared ]; then curl -fsSL -o ./cloudflared \ https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 chmod +x ./cloudflared fi # Start the tunnel in the background only if a token is set. if [ -n "$CLOUDFLARE_TUNNEL_TOKEN" ]; then ./cloudflared tunnel run --token "$CLOUDFLARE_TUNNEL_TOKEN" & fi # Start your app in the foreground — change this to your real command. exec python main.py ``` > **Tip:** To avoid re-downloading on every boot, you can move the download into your [install command](https://daki.cc/wiki/guides/startup-settings) and keep only the launch logic in the startup command. The examples above are already safe to run every boot — they skip the download once the binary exists. **Trade-offs:** | | Cloudflare Proxy (Parts 1–2) | Cloudflare Tunnel (cloudflared) | | :--- | :--- | :--- | | Setup difficulty | Easier (dashboard only) | More advanced (bundled into your app's startup) | | Exposes server IP/port | Hidden behind proxy | Fully hidden (outbound only) | | Needs public port / Origin Rule | Yes | No | | Uses server resources | None on your server | Runs an extra process | --- ## Common Issues **The site doesn't load at all** DNS may still be propagating. Nameserver changes can take up to 24 hours (usually much less). Confirm in Cloudflare that your domain status is **Active** and that the **A record** exists and is **Proxied** (orange cloud). You can check propagation with a tool like [dnschecker.org](https://dnschecker.org). **Error 522 / 523 — Connection timed out / Origin unreachable** Cloudflare can't reach your app. Check, in order: - Your **server is running** and the app has fully started (check the **Console** tab). - The **Origin Rule** rewrites the port to your exact **allocation port**. - The **A record IP** matches your server's IP. - Your app binds to **`0.0.0.0`**, not `127.0.0.1`/`localhost`. **Too many redirects / ERR_TOO_MANY_REDIRECTS** This is usually an SSL mode mismatch. If your app forces HTTPS but Cloudflare connects to it over HTTP, you get a redirect loop. Either set your app to serve plain HTTP (and use **Flexible**), or have your app serve HTTPS and switch Cloudflare to **Full** under **SSL/TLS → Overview**. **It works on http:// but not https://** Make sure your DNS record is **Proxied** (orange cloud) and that **SSL/TLS** mode is set (Flexible or Full). With a grey cloud (DNS only), Cloudflare's SSL is bypassed. **My game server / non-HTTP service won't work** Cloudflare's standard proxy only handles HTTP/HTTPS. For raw TCP/UDP services like most game servers, this method won't apply. Connect to your server using its hostname and port directly (see [Network & Allocations](https://daki.cc/wiki/guides/network-allocations)), or contact [support](https://daki.cc/wiki/guides/support) about other options. **Do I have to use Cloudflare?** No — Cloudflare is the simplest free option, but any reverse proxy that can forward to a custom port works (e.g. a tunnel via `cloudflared`, or your own Nginx/Caddy in front of the app). Cloudflare is recommended because it provides free SSL, hides your server IP, and requires no extra software on your server for the proxy method. --- ## Next Steps - [Network & Allocations](https://daki.cc/wiki/guides/network-allocations) — Find your hostname and port, and add more allocations. - [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans) — Upgrade to a paid plan to get a public port. - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Read your port from an env var in code. - [Getting Help](https://daki.cc/wiki/guides/support) — Contact support if you get stuck. Source: https://daki.cc/wiki/guides/custom-domain --- # Subusers > How to give other Daki users access to your server with configurable permissions via the Subusers tab. The **Subusers** tab in the Portal lets you invite other Daki users to your server and grant them specific permissions. This is useful for teams and collaborators. ## What you'll learn - Requirements for adding a sub-user - How to add a sub-user step by step - Which permissions you can grant - How to remove a sub-user --- ## Requirements To add someone as a sub-user: 1. **They must have a Daki account** — either a Free Tier Dashboard account or a Billing Panel account. Either works. 2. **They automatically have a Portal account** — every Daki account includes a Portal account. 3. **You need their Portal email address** — this is the email linked to their Portal account, which they can find in: - The **Credentials** tab of the Free Tier Dashboard ([dash.daki.cc/credentials](https://dash.daki.cc/credentials)), or - The **Access** tab of their active service in the Billing Panel. --- ## How to Add a Sub-User 1. Open your server in the Portal ([portal.daki.cc](https://portal.daki.cc)). 2. Click the **Subusers** tab. 3. Click **New User**. 4. Enter the person's **Portal email address**. 5. Select the permissions you want to grant them. 6. Save. The sub-user will immediately see your server in their own Portal account. --- ## Available Permissions You can grant or restrict individual permissions, including: - View console output - Send console commands - Start, stop, or restart the server - Read-only or full file manager access - Upload, delete, and edit files - View network and allocation settings - View and edit startup configuration - Manage subusers Grant only the permissions the person actually needs for their role. --- ## Removing a Sub-User Open the **Subusers** tab, find the user, and remove them. Access is revoked immediately. --- ## Frequently Asked Questions **Does the sub-user need a paid plan?** No. Any Daki account — including a Free Tier account — can be added as a sub-user. It costs nothing for the sub-user. **Can a sub-user see my other servers?** No. Sub-users only have access to the specific server you added them to. **Can a sub-user add further sub-users?** Only if you grant them the "manage subusers" permission when adding them. **What if the sub-user doesn't have a Daki account?** They need to create one first. Send them to the Free Tier Dashboard at dash.daki.cc to sign up with Discord — it takes about 30 seconds. --- ## Next Steps - [Network & Allocations](https://daki.cc/wiki/guides/network-allocations) — Configure ports and allocations. - [Portal Overview](https://daki.cc/wiki/guides/portal) — Review all available Portal tabs. Source: https://daki.cc/wiki/guides/subusers --- # Deploy a Discord.js Bot > Step-by-step guide to deploying a Discord.js (Node.js) bot on Daki Hosting. This guide walks you through deploying a Discord.js bot on Daki Hosting — from creating your server to having your bot online and reading its token securely. ## What you'll learn - How to create a Node.js server for your bot - How to upload your code - How to configure the install command, startup command, and Docker image - How to set your bot token securely using a `.env` file - How to start your bot and verify it works --- ## Prerequisites - A Daki account (Free Tier or paid) — see [Create an Account](https://daki.cc/wiki/guides/account-create) - A Discord bot with a **bot token**, created in the [Discord Developer Portal](https://discord.com/developers/applications) - Your bot's source code, including a `package.json` with `discord.js` and `dotenv` as dependencies > **Info:** Discord bots connect **outbound** to Discord's servers and do not require an inbound port. This means Discord bots work on both Free Tier and paid plans. If your bot also serves HTTP requests (e.g., for slash command interactions or webhooks), you will need a paid plan, as publicly accessible ports are only available on paid plans. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Deployment **Step 1: Create a Node.js server** 1. Log in to the Free Tier Dashboard at [dash.daki.cc](https://dash.daki.cc) or the Billing Panel at [billing.daki.cc](https://billing.daki.cc). 2. Create a new server and select the **Node.js** egg. 3. Give your server a name (e.g., `MyDiscordBot`). See [Create Your First Server](https://daki.cc/wiki/guides/create-server) for the full walkthrough. **Step 2: Access the Portal** Log in to the Portal via SSO (from the Credentials tab or your Billing Panel service page), or directly at [portal.daki.cc](https://portal.daki.cc). See [Portal Overview](https://daki.cc/wiki/guides/portal). **Step 3: Upload your bot's code** **Option A — Upload as a ZIP (simplest):** 1. Compress your project folder into a `.zip` file locally. 2. In the Portal, go to the **Files** tab and click **Upload**. 3. Right-click the `.zip` and click **Extract**. **Option B — Use SFTP (no size limits):** Connect using your SFTP credentials from the **Settings** tab and upload your folder directly. See [File Manager](https://daki.cc/wiki/guides/file-manager). > **Info:** Do **not** include your `node_modules` folder in the upload — it will be installed automatically by the install command. Do include your `package.json` and `package-lock.json`. **Step 4: Configure the Startup tab** Open the **Startup** tab and configure all three fields: **1. Docker Image** — Select the Node.js version your bot requires (e.g., **Node.js 20** or **Node.js 22**). Node.js 20 LTS is a safe default if unsure. **2. Install Command** — Set this to install your dependencies automatically: ``` npm install ``` **3. Startup Command** — Set this to the command that launches your bot: - `node index.js` — if your entry file is `index.js` - `node bot.js` — if your entry file is `bot.js` - `npm start` — if you have a `start` script in `package.json` You are free to adjust these commands to match your project structure. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings) for a full explanation. **Step 5: Add your bot token via a .env file** Your bot needs its Discord token to connect. Store it in a `.env` file on the server so it never ends up in your source code. 1. In the **Files** tab, click **New File** and name it `.env`. 2. Add your token: ``` BOT_TOKEN=your_discord_bot_token_here ``` 3. Click **Save**. In your bot code, load it with `dotenv`: ```js require('dotenv').config(); const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds] }); client.once('ready', () => { console.log(`Logged in as ${client.user.tag}`); }); client.login(process.env.BOT_TOKEN); ``` Make sure `dotenv` is listed in your `package.json` dependencies so it gets installed by the install command. See [Environment Variables](https://daki.cc/wiki/guides/environment-variables) for more details on using `.env` files. **Step 6: Start your bot** Click **Start** in the **Console** tab. A successful launch will print your bot's login confirmation: ``` Logged in as MyBot#1234! ``` If you see errors instead, check the [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting) guide. --- ## Common Issues **Error: Cannot find module 'discord.js'** Your dependencies were not installed. Check that your `package.json` lists `discord.js` as a dependency, and that the install command is set to `npm install` in the Startup tab. Restart the server to trigger the install. **Error: Cannot find module 'dotenv'** Add `dotenv` to your `package.json` dependencies and restart the server to reinstall. **Error: An invalid token was provided** Your bot token in the `.env` file is incorrect or missing. Go to the Files tab, open `.env`, and verify the value. Make sure there are no extra spaces, quotes, or line breaks. **Bot starts but disconnects shortly after** This is usually caused by missing Gateway Intents. In the Discord Developer Portal, enable the required privileged intents (e.g., Message Content Intent) for your bot application, and ensure your code requests them. **Server crashes immediately on start** Open the Console tab and read the error. Common causes: wrong startup command (filename typo), wrong Node.js version, or missing `node_modules`. See [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting). --- ## Next Steps - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Full guide on `.env` files and reading variables in code. - [Keep Your Free Server Active](https://daki.cc/wiki/guides/save-free-server-from-purge) — Watch ads to keep your Free Tier server alive. - [File Manager](https://daki.cc/wiki/guides/file-manager) — Update your code files after making changes. Source: https://daki.cc/wiki/guides/deploy-discordjs --- # Deploy a Python Bot > Step-by-step guide to deploying a Python Discord bot (discord.py or py-cord) on Daki Hosting. This guide walks you through deploying a Python Discord bot on Daki Hosting — from creating your server to reading your bot token securely and going live. ## What you'll learn - How to create a Python server for your bot - How to upload your code - How to configure the install command, startup command, and Python version - How to set your bot token securely using a `.env` file - How to start your bot and verify it works --- ## Prerequisites - A Daki account (Free Tier or paid) — see [Create an Account](https://daki.cc/wiki/guides/account-create) - A Discord bot with a **bot token**, created in the [Discord Developer Portal](https://discord.com/developers/applications) - Your bot's source code, including a `requirements.txt` listing all dependencies (e.g., `discord.py` or `py-cord`, and `python-dotenv`) > **Info:** Discord bots connect **outbound** to Discord's servers and do not require an inbound port. This means Discord bots work on both Free Tier and paid plans. If your bot also runs an HTTP server (e.g., for webhooks or a web dashboard), you will need a paid plan, as publicly accessible ports are only available on paid plans. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Deployment **Step 1: Create a Python server** 1. Log in to the Free Tier Dashboard at [dash.daki.cc](https://dash.daki.cc) or the Billing Panel at [billing.daki.cc](https://billing.daki.cc). 2. Create a new server and select the **Python** egg. 3. Give your server a name (e.g., `MyPythonBot`). See [Create Your First Server](https://daki.cc/wiki/guides/create-server) for the full walkthrough. **Step 2: Access the Portal** Log in to the Portal via SSO or directly at [portal.daki.cc](https://portal.daki.cc). See [Portal Overview](https://daki.cc/wiki/guides/portal). **Step 3: Upload your bot's code** **Option A — Upload as a ZIP (simplest):** 1. Compress your project folder into a `.zip` file. 2. In the Portal, go to the **Files** tab and click **Upload**. 3. Right-click the `.zip` and click **Extract**. **Option B — Use SFTP (no size limits):** Use your SFTP credentials from the **Settings** tab to upload the folder directly. See [File Manager](https://daki.cc/wiki/guides/file-manager). > **Info:** Include a `requirements.txt` in your project root. This is used by the install command to install your dependencies. **Step 4: Configure the Startup tab** Open the **Startup** tab and configure all three fields: **1. Docker Image** — Select the Python version your bot requires (e.g., **Python 3.12**). Choose the latest available version if unsure. **2. Install Command** — Set this to install your dependencies automatically: ``` pip install -r requirements.txt ``` **3. Startup Command** — Set this to the command that runs your bot: - `python main.py` — if your entry file is `main.py` - `python bot.py` — if your entry file is `bot.py` - `python -m mypackage` — if your project is structured as a package You are free to adjust these commands to match your project's structure and requirements. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings) for a full explanation. **Step 5: Add your bot token via a .env file** Store your Discord bot token in a `.env` file on the server so it never appears in your source code. 1. In the **Files** tab, click **New File** and name it `.env`. 2. Add your token: ``` BOT_TOKEN=your_discord_bot_token_here ``` 3. Click **Save**. Make sure `python-dotenv` is in your `requirements.txt`, then load the file in your code: ```python from dotenv import load_dotenv import os import discord load_dotenv() TOKEN = os.environ.get("BOT_TOKEN") intents = discord.Intents.default() client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"Logged in as {client.user}") client.run(TOKEN) ``` See [Environment Variables](https://daki.cc/wiki/guides/environment-variables) for more details on using `.env` files. **Step 6: Start your bot** Click **Start** in the **Console** tab. A successful launch will print: ``` Logged in as MyBot#1234 ``` If you see errors, check the [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting) guide. --- ## Common Issues **ModuleNotFoundError: No module named 'discord'** Your dependencies were not installed. Check that `discord.py` or `py-cord` is listed in `requirements.txt`, and that the install command is set to `pip install -r requirements.txt` in the Startup tab. Restart the server to trigger the install. **ModuleNotFoundError: No module named 'dotenv'** Add `python-dotenv` to your `requirements.txt` and restart the server. **discord.errors.LoginFailure: Improper token has been passed** Your token in the `.env` file is incorrect or missing. Open the `.env` file in the Files tab and check the value carefully. Remove any extra spaces or quotes. **PrivilegedIntentsRequired error** Your bot is requesting intents that are not enabled in the Discord Developer Portal. Enable the required privileged intents (e.g., Message Content Intent) in your bot application's settings, and make sure your code requests the same intents. **Server crashes immediately on start** Read the Console output for the error. Common causes: wrong startup command (filename typo or wrong path), missing `requirements.txt`, or a missing package. See [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting). --- ## Next Steps - [Environment Variables](https://daki.cc/wiki/guides/environment-variables) — Full guide on `.env` files and reading variables in code. - [Keep Your Free Server Active](https://daki.cc/wiki/guides/save-free-server-from-purge) — Watch ads regularly to keep your Free Tier server running. - [File Manager](https://daki.cc/wiki/guides/file-manager) — Update your code after making changes. Source: https://daki.cc/wiki/guides/deploy-python --- # Eggs & Docker Images > Understanding the difference between eggs and Docker images in the Daki Portal — and how they work together. When configuring your server in the Portal, you will encounter two related concepts: **eggs** and **Docker images**. Understanding the difference between them helps you configure your server correctly. ## What you'll learn - What an egg is and what it controls - What a Docker image is and how to choose the right one - How eggs and Docker images work together - When to change each one --- ## What Is an Egg? An **egg** is a server template that defines the overall type of server you are running. It specifies: - Which programming language or framework is used - What Docker images are available to choose from - The default startup command template - Which startup variables and defaults are pre-configured - What files are created on a fresh install Examples of eggs available on Daki: - **Node.js** — for JavaScript applications and Discord bots - **Python** — for Python applications and Discord bots - **Java** — for Java applications (available on paid plans) - **Rust** — for Rust applications (available on paid plans) - **Minecraft Java** — for Minecraft game servers (game server plans) **You choose your egg when you create a server.** On the Free Tier, only the Node.js and Python eggs are available. Paid plans give access to additional eggs. To change an existing server's egg, go to the **Settings** tab. Note that changing the egg triggers a reinstall — creating a backup of your files beforehand is strongly recommended. --- ## What Is a Docker Image? A **Docker image** is the specific version of a runtime that your server runs inside. Where the egg determines the language, the Docker image determines the version. For example, the Node.js egg may offer these Docker images: - Node.js 18 - Node.js 20 - Node.js 22 - Node.js 24 You select the Docker image in the **Startup** tab. --- ## How They Work Together Think of it this way: | Concept | Analogy | Set in | | :--- | :--- | :--- | | **Egg** | Choosing to write in Python | Settings tab (or at server creation) | | **Docker image** | Choosing Python 3.11 vs 3.12 | Startup tab | You pick the egg once (or change it rarely), and you adjust the Docker image whenever your project requires a different version. --- ## When to Change Each One ### Change the Docker image when: - You need a newer runtime version (e.g., upgrading from Node.js 18 to Node.js 22) - Your project requires a specific minor version for compatibility ### Change the egg when: - You want to switch programming languages entirely (e.g., from Node.js to Python) - You need a different default configuration or pre-defined install setup > **Warning:** Changing the egg triggers a reinstall. While files are not normally deleted automatically, certain files may be overwritten and an incompatible setup can result. Backups are strongly recommended before changing the egg. See [Server Settings](https://daki.cc/wiki/guides/server-settings). --- ## Frequently Asked Questions **Which egg should I use for a Discord bot?** Use the **Node.js** egg for Discord.js/JavaScript bots, and the **Python** egg for discord.py/Python bots. **What if my required Docker image isn't listed?** The available images are defined by the egg. If you don't see the version you need, contact support — additional images may be available on request. **Does changing the Docker image delete my files?** No. Changing only the Docker image (in the Startup tab) does not affect your files. Only changing the egg (in the Settings tab) triggers a reinstall. --- ## Next Steps - [Startup Settings](https://daki.cc/wiki/guides/startup-settings) — Select your Docker image and configure your startup command. - [Server Settings](https://daki.cc/wiki/guides/server-settings) — Change the egg or reinstall your server. - [Deploy a Discord.js Bot](https://daki.cc/wiki/guides/deploy-discordjs) — End-to-end deployment guide for Node.js. - [Deploy a Python Bot](https://daki.cc/wiki/guides/deploy-python) — End-to-end deployment guide for Python. Source: https://daki.cc/wiki/guides/eggs-and-images --- # Troubleshooting > Solutions to common issues on Daki Hosting: suspended servers, startup failures, upload problems, networking, and more. This page covers the most common problems users run into on Daki Hosting and how to solve them. If your issue is not listed here, check the [FAQ](https://daki.cc/wiki/faq) or reach out through the appropriate [support channel](https://daki.cc/wiki/guides/support). --- ## Server Status Issues **My server is suspended — how do I reactivate it?** **Free Tier:** Your runtime counter reached zero. Log in to the Free Tier Dashboard at [dash.daki.cc](https://dash.daki.cc) and watch ads to add runtime. You have a **2-day grace period** after suspension before the server is permanently deleted. See [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge). **Paid plan:** Your billing period ended without a successful renewal. Log in to the Billing Panel at [billing.daki.cc](https://billing.daki.cc), add credits or a payment method, and renew your service. You have a **7-day window** before the service is permanently cancelled and data deleted. See [Billing & Payments](https://daki.cc/wiki/guides/billing). **My server was deleted — can I recover my files?** No. Once a Free Tier server is deleted after the 2-day grace period, or a paid service is cancelled after the 7-day suspension window, all data is permanently removed and cannot be recovered. Always keep an external backup of your code (e.g., on GitHub). **My server is stuck on 'Installing' or 'Starting'** Wait 1–2 minutes and refresh the Portal. If the status does not change, try clicking **Kill** in the Console tab and then **Start** again. If the problem persists, ask for help on [Discord](https://discord.gg/daki). --- ## Startup & Runtime Issues **My server crashes immediately after starting** Open the **Console** tab in the Portal and read the error output. Common causes: - **Wrong startup command** — filename typo or wrong path. Compare the filename in the Startup tab to what appears in the Files tab. - **Missing entry point file** — your code may not have been uploaded yet, or is in a subdirectory. See [File Manager](https://daki.cc/wiki/guides/file-manager). - **Dependencies not installed** — check that the install command is set correctly (e.g., `npm install` or `pip install -r requirements.txt`) in the Startup tab and restart. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). - **Wrong Docker image** — your code requires a newer runtime version. Check the image in the Startup tab. **My startup command doesn't work** Verify in the **Startup** tab: 1. The startup command points to the correct filename (case-sensitive). 2. The selected Docker image matches your application's language version. 3. You restarted the server after making changes. See [Startup Settings](https://daki.cc/wiki/guides/startup-settings). **I selected the wrong Docker image** Go to the **Startup** tab, pick the correct image from the dropdown, and restart. Changing the Docker image does not delete your files. **Out-of-memory crash (OOM kill)** Your application is using more RAM than your plan allows. The Console will typically show the process being killed without an error message, or a line like `Killed` or `exit code 137`. - **Free Tier:** The limit is 512 MB. Optimise your application's memory usage or upgrade to a paid plan. - **Paid plan:** Optimise memory usage or upgrade to a higher-tier plan with more RAM. See [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans). **My dependencies are not being installed** Make sure the **install command** is set correctly in the **Startup** tab: - Node.js: `npm install` - Python: `pip install -r requirements.txt` Restart the server after setting the install command to trigger it. --- ## File Upload Issues **I can't upload a folder in the file manager** Direct folder upload is not supported in the web file manager. Use one of these workarounds: 1. Compress your folder into a `.zip` or `.tar.gz`, upload the archive, then right-click and select **Extract**. 2. Use SFTP to upload the folder directly with no restrictions. See [File Manager](https://daki.cc/wiki/guides/file-manager). **File upload fails or times out** The web file manager has a per-file upload size limit. For large files, use SFTP. Your SFTP credentials are in the **Settings** tab. See [File Manager](https://daki.cc/wiki/guides/file-manager). **I can't connect via SFTP** Check the following: - **Host and port** — verify in the **Settings** tab of your server in the Portal. - **Username** — use your Portal username exactly as shown. - **Password** — use your Portal account password (not your Discord password or Billing Panel password). - **Server state** — SFTP requires your server to be in a non-suspended state. See [File Manager](https://daki.cc/wiki/guides/file-manager). --- ## Networking Issues **My web application / API is not accessible from outside** **Free Tier:** Free Tier servers do not have publicly accessible ports. External inbound connections are not supported on the Free Tier. You need a paid plan to expose a web server or API publicly. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). **Paid plan:** Verify that your application is listening on the port shown in the **Network** tab of the Portal. Applications listening on any other port will not be reachable from outside. **My Discord bot works fine but my HTTP server doesn't** Discord bots connect outbound to Discord and do not need an open port — they work on both Free Tier and paid plans. HTTP servers need an inbound port, which requires a paid plan. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Login & Account Issues **I can't log in to the Free Tier Dashboard** The Free Tier Dashboard uses Discord OAuth. Make sure you are logged into Discord in your browser (or have the Discord desktop app open). Try clearing your browser cache or using a different browser. If you recently changed your Discord email address, contact support on Discord — your account may need to be re-linked manually. **I forgot my Billing Panel password** Use the **"Forgot Password"** link on the Billing Panel login page at [billing.daki.cc](https://billing.daki.cc). A password reset link will be sent to your registered email address. **I forgot my Portal password** **Free Tier:** Your Portal password is shown in the **Credentials** tab at [dash.daki.cc/credentials](https://dash.daki.cc/credentials). **Paid plan:** Go to the **Password** tab on your active service page in the Billing Panel and generate a new Portal password. **I'm confused about which panel to use** There are three separate interfaces: - **Free Tier Dashboard** ([dash.daki.cc](https://dash.daki.cc)) — Free Tier account management, login with Discord. - **Billing Panel** ([billing.daki.cc](https://billing.daki.cc)) — purchasing plans and billing, own login with email/password. - **Portal** ([portal.daki.cc](https://portal.daki.cc)) — managing your actual servers, log in via SSO from the other two panels. See [Portal Overview](https://daki.cc/wiki/guides/portal) for a full comparison. --- ## Common Suspension Reasons | Reason | What happens | | :--- | :--- | | Free Tier runtime counter reached zero | Server suspended; deleted after 2-day grace period | | Paid plan billing period expired without renewal | Server suspended; deleted after 7-day grace period | | Multiple accounts created by one person | All accounts may be suspended | | Terms of Service violation / abuse | Account may be permanently suspended | To avoid unintentional issues: watch ads regularly (Free Tier), keep sufficient credits (paid), and follow the [Terms of Service](https://daki.cc/legal/terms-of-service). --- ## Still Stuck? - **Check the status page first:** [daki.cc/status](https://daki.cc/status) — your issue may be due to an ongoing incident. - **Free Tier users:** Open a ticket through the [Discord server](https://discord.gg/daki). - **Paid users:** Open a ticket in the [Billing Panel](https://billing.daki.cc) or on [Discord](https://discord.gg/daki). See [Getting Help](https://daki.cc/wiki/guides/support) for full details on support channels. Source: https://daki.cc/wiki/guides/troubleshooting --- # Getting Help > How to reach Daki Hosting support depending on your account type, and where to check service status. Daki offers support through two channels: a **ticket system** and the **Discord community**. The right channel depends on your account type and the nature of your issue. ## What you'll learn - Which support channel to use depending on your account type - How to open a support ticket - How to get community help on Discord - How to check service status --- ## Which Channel Should I Use? | Account type | Support channel | | :--- | :--- | | **Free Tier** | Discord ticket system | | **Paid plans** | Billing Panel ticket system *(preferred)* or Discord ticket system | | **General questions** | Discord community | | **Service outages** | Status page first, then tickets | --- ## Discord Ticket System (Free Tier & Paid) All users can open a support ticket through the Daki Discord server at [discord.gg/daki](https://discord.gg/daki). **Free Tier users** should use the Discord ticket system as their primary support channel. **How to open a Discord ticket:** 1. Join the Discord server at [discord.gg/daki](https://discord.gg/daki). 2. Navigate to the ticket channel. 3. Follow the instructions to create a new ticket. 4. Describe your issue clearly and include relevant details (server name, error messages, etc.). --- ## Billing Panel Ticket System (Paid Users) Paid customers also have access to a built-in ticket system in the Billing Panel at [billing.daki.cc](https://billing.daki.cc). This is the recommended route for billing and account-specific issues, as it gives staff direct access to your account details. Billing Panel tickets are best for: - Billing and payment questions - Service lifecycle issues (suspension, renewal, cancellation) - Service requests (VPS, dedicated server, custom plan) - Any issue that requires staff access to your account **How to open a Billing Panel ticket:** 1. Log in to [billing.daki.cc](https://billing.daki.cc). 2. Navigate to **Tickets**. 3. Click **New Ticket** and describe your issue clearly. 4. The Daki team will respond in the ticket thread. --- ## Discord Community Beyond tickets, the Daki Discord is an active community where you can: - Ask general questions and get quick answers from staff and other users - Follow `#news` for announcements and scheduled maintenance - Connect with other Daki users and share projects **Join:** [discord.gg/daki](https://discord.gg/daki) --- ## Service Status Before opening a ticket for a suspected outage, check the status page: **Status:** [daki.cc/status](https://daki.cc/status) The status page shows the current health of all Daki services and recent uptime history. If there is an active incident, it will be listed there with updates. --- ## Contact Details | Channel | Details | | :--- | :--- | | **Discord** | [discord.gg/daki](https://discord.gg/daki) | | **Billing Panel Tickets** | [billing.daki.cc](https://billing.daki.cc) *(paid users)* | | **Email** | support@daki.cc | --- ## Next Steps - [Troubleshooting](https://daki.cc/wiki/guides/troubleshooting) — Self-diagnose common server issues before contacting support. - [FAQ](https://daki.cc/wiki/faq) — Answers to the most common questions. Source: https://daki.cc/wiki/guides/support --- # Glossary > Plain-language definitions of the terms you'll see across the Daki Hosting docs — egg, Split, allocation, runtime, and more. A quick reference for the Daki- and hosting-specific terms used throughout these docs. Many of these also appear as **hover tooltips** inside the guides. > **Info:** Looking for how something works, not just what it means? Each term links to the guide that covers it in depth. --- ### Allocation A public network endpoint assigned to your server — a **hostname + port** pair. Paid servers include at least one and can add more; Free Tier servers have none. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). ### Billing Panel Daki's billing site at [billing.daki.cc](https://billing.daki.cc), used to purchase plans and manage invoices, credits, and payment methods. It has its own login, separate from the Free Tier Dashboard. See [Create an Account](https://daki.cc/wiki/guides/account-create). ### DDoS protection Best-effort mitigation of distributed denial-of-service attacks, included on paid plans. ### Docker image The specific runtime **version** your server's container runs (e.g. Node.js 22, Python 3.12). Selected in the **Startup** tab. See [Eggs & Docker Images](https://daki.cc/wiki/guides/eggs-and-images). ### Egg A preconfigured template that defines your server's **programming language and type** (e.g. Node.js, Python). Chosen when you create a server; change it later in the **Settings** tab. See [Eggs & Docker Images](https://daki.cc/wiki/guides/eggs-and-images). ### Free Tier Dashboard The free-hosting site at [dash.daki.cc](https://dash.daki.cc), where you create your free server, watch ads to extend runtime, and find your Portal credentials. See [Create an Account](https://daki.cc/wiki/guides/account-create). ### Node A physical host machine that runs many customer servers. Daki nodes use **shared IP addresses**, which is why custom domains go through a reverse proxy. See [Connect a Custom Domain](https://daki.cc/wiki/guides/custom-domain). ### Portal Daki's server-management panel at [portal.daki.cc](https://portal.daki.cc), built on a customized Pterodactyl installation. Manage files, startup, console, network, and subusers here. See [Portal Overview](https://daki.cc/wiki/guides/portal). ### Prepaid Daki's billing model: pay for time up front, with no contract or lock-in, and renew only when you want. See [Billing & Payments](https://daki.cc/wiki/guides/billing). ### Purge The permanent deletion of a Free Tier server after its runtime reaches zero and the grace period passes. See [Renewing Your Free Server](https://daki.cc/wiki/guides/save-free-server-from-purge). ### Runtime The time budget a Free Tier server runs for. New servers start with **3 days** and can accumulate up to **30 days** by watching short ads. See [Free Tier Overview](https://daki.cc/wiki/guides/free-tier). ### SFTP Secure File Transfer Protocol — upload and download server files with no size limits, using the credentials in the **Settings** tab. See [File Manager](https://daki.cc/wiki/guides/file-manager). ### Split A slice of a paid plan's resources that runs as its own **server instance**. Bronze = 2, Silver = 3, Gold = 4. See [Understanding Splits](https://daki.cc/wiki/guides/splits). ### SSO Single sign-on — a one-click login to the Portal from the Free Tier Dashboard or Billing Panel, with no separate password. See [Create an Account](https://daki.cc/wiki/guides/account-create). ### Suspension A paused state where your server is offline but its files are **preserved**, pending renewal. After the grace period without renewal, the data is deleted. See [Free Tier Overview](https://daki.cc/wiki/guides/free-tier) and [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans). ### Uptime SLA The **99.9%** uptime guarantee included with paid plans (not the Free Tier). See [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans). --- ## Next Steps - [Free Tier Overview](https://daki.cc/wiki/guides/free-tier) — Resources, runtime, and limits explained. - [Portal Overview](https://daki.cc/wiki/guides/portal) — Where you manage everything. - [Frequently Asked Questions](https://daki.cc/wiki/faq) — Quick answers to common questions. Source: https://daki.cc/wiki/glossary --- # Frequently Asked Questions > Quick answers to the most common questions about Daki Hosting. ## General **What is Daki Hosting?** Daki Hosting is a Freemium hosting provider founded in 2021, based in Germany. It offers free hosting for Discord bots and Node.js/Python applications, paid plans with dedicated high-performance resources, dedicated game server plans, and custom solutions (VPS, dedicated servers) on request. **Where are Daki's servers located?** All servers — Free Tier and paid — are hosted in Germany. **Can I partner with Daki?** Daki does not currently offer third-party partnerships. If you'd like to support Daki, consider upgrading to a paid plan or recommending the service to others in your community. **Is Daki carbon neutral?** Yes. Daki participates in carbon offset programs. See the Stripe Climate page linked from daki.cc for details. --- ## Free Tier **Is the Free Tier really free?** Yes, completely free — no credit card required. Runtime is maintained by watching short ads: each ad (~2 minutes) adds 3 days, up to 2 ads per day, with a maximum of 30 days total runtime. **How much runtime does my free server start with?** Your free server starts with **3 days** of runtime when first created. **How do I extend my free server's runtime?** Watch ads in the Free Tier Dashboard at [dash.daki.cc](https://dash.daki.cc). Each ad adds 3 days, up to 2 ads per day (+6 days max/day), with a 30-day cap. **What happens if I don't renew in time?** When runtime hits zero, your server is **suspended**. You have a **2-day grace period** to renew by watching ads. After those 2 days, the server is **permanently deleted** and cannot be recovered. **Can I run multiple free servers?** No. Each person is limited to one Free Tier account and one server. Creating multiple accounts is a Terms of Service violation. **Which programming languages are available on the Free Tier?** Only **Node.js** and **Python**. **What resources does a free server include?** 50% CPU (shared), 512 MB RAM, and 1,024 MB (1 GB) disk storage. **Can my Free Tier bot receive HTTP requests or serve a website?** No. Free Tier servers do not have publicly accessible ports. Applications that need to receive inbound connections (web servers, APIs, webhooks) require a paid plan. Discord bots are not affected — they connect outbound to Discord. See [Network & Allocations](https://daki.cc/wiki/guides/network-allocations). --- ## Paid Plans **What App & Bot Hosting plans are available?** Three plans on AMD Ryzen 9 9900X hardware: **Bronze** (€2/month, 100% CPU, 2 GB DDR5, 6 GB NVMe, 2 Splits), **Silver** (€4/month, 200% CPU, 4 GB DDR5, 9 GB NVMe, 3 Splits), and **Gold** (€6/month, 300% CPU, 6 GB DDR5, 12 GB NVMe, 4 Splits). See [App & Bot Hosting Plans](https://daki.cc/wiki/guides/paid-plans). **Is there a contract or minimum commitment?** No. Daki uses a prepaid model — no contracts, no lock-in. Pay for the time you need and renew only when you want to. If you choose not to renew, your service simply expires. **What are Splits?** Splits let you run multiple server instances on one paid plan by dividing your plan's resources. Bronze = 2 servers max, Silver = 3, Gold = 4. See [Understanding Splits](https://daki.cc/wiki/guides/splits). **Are there game server plans?** Yes. Game server plans (Quest through Legend) run on AMD EPYC processors and start at €4/month. See [Game Servers](https://daki.cc/wiki/guides/game-servers). **What happens when a paid plan expires?** The server is **suspended** (goes offline, files preserved). You then have a **7-day window** to renew. After 7 days without renewal, the service is permanently cancelled and all data is deleted. **What is the uptime guarantee?** All paid plans include a **99.9% uptime SLA**. See daki.cc for the full SLA document. **Are there annual plans?** Not currently. Pre-load credits in the Billing Panel to cover multiple months without manual renewal. --- ## Portal & Server Management **What is the Portal?** The Portal ([portal.daki.cc](https://portal.daki.cc)) is Daki's server management panel, built on a customized Pterodactyl installation. Free Tier and paid app/game servers are all managed here. VPS and dedicated servers are managed separately. **How do I log in to the Portal?** Use the SSO button in the Free Tier Dashboard (Credentials tab) or in the Billing Panel (active service page). Or log in directly with your Portal email and password — found in the Credentials tab (Free Tier) or Access/Password tabs (Billing Panel). **How do I upload a folder?** The web file manager does not support direct folder upload. Either (1) compress to a `.zip` or `.tar.gz`, upload, and extract in the Portal; or (2) use SFTP for unrestricted transfers. See [File Manager](https://daki.cc/wiki/guides/file-manager). **How do I run shell commands in the console?** Set the startup command to `bash` in the Startup tab, then restart. The console will then accept shell commands interactively. See [Console & Power Actions](https://daki.cc/wiki/guides/console). **How do I set environment variables like my bot token?** Create a `.env` file on your server using the file manager or SFTP, and use a library like `dotenv` (Node.js) or `python-dotenv` (Python) to load it. See [Environment Variables](https://daki.cc/wiki/guides/environment-variables). **How do I add another user to my server?** Go to the Subusers tab in the Portal, click New User, and enter their Portal email address. They must have a Daki account. See [Subusers](https://daki.cc/wiki/guides/subusers). **What is the difference between an egg and a Docker image?** The **egg** defines the programming language and server type (e.g., Node.js). The **Docker image** is the specific version of that language (e.g., Node.js 22). Change the egg in the Settings tab; change the Docker image in the Startup tab. See [Eggs & Docker Images](https://daki.cc/wiki/guides/eggs-and-images). --- ## Billing & Payments **What payment methods do you accept?** Stripe (cards, Apple Pay, Google Pay, Klarna, WeChat Pay, Alipay, Satispay, and more), MOLLIE (iDEAL, Bancontact, and other regional methods), PayPal, and NowPayments (crypto: SOL, LTC, USDT, and more). **Where do I find credits in the Billing Panel?** Go to **Account → Credits** in the Billing Panel at [billing.daki.cc](https://billing.daki.cc). **Where do I add a payment method?** Go to **Account → Payment Methods** in the Billing Panel. **How does auto-renewal work?** At the end of each 30-day period, credits are used first; a saved payment method is charged if credits are insufficient. There is no obligation — if you prefer not to auto-renew, simply don't load credits or save a payment method, and your service will expire naturally at period end. **Can I pre-pay for multiple months?** Yes. Load credits in the Billing Panel to cover as many months as you want in advance. **I forgot my Billing Panel password — how do I reset it?** Use the **"Forgot Password"** link on the Billing Panel login page at [billing.daki.cc](https://billing.daki.cc). A reset link will be sent to your registered email address. --- ## Support **How do I get support as a Free Tier user?** Open a ticket through the Daki Discord server at [discord.gg/daki](https://discord.gg/daki). Navigate to the ticket channel and follow the instructions to create one. **How do I get support as a paid customer?** You can open a ticket through the **Billing Panel** at [billing.daki.cc](https://billing.daki.cc) (recommended for billing and account issues) or through the **Discord ticket system** at [discord.gg/daki](https://discord.gg/daki). Both channels are available to paid customers. **Is there a status page?** Yes. Check [daki.cc/status](https://daki.cc/status) for live service health and uptime history. Source: https://daki.cc/wiki/faq --- # Changelog > What's new in the Daki Hosting documentation. ## June 2026 — Custom domains & docs refresh **New guides** - [Connect a Custom Domain](https://daki.cc/wiki/guides/custom-domain) — point your own domain at a paid-plan web app using Cloudflare (reverse proxy or `cloudflared` tunnel). - A real [Quickstart](https://daki.cc/wiki/quickstart) to get from sign-up to a running server fast. **Navigation & design** - Added tabs and quick links to the **Portal**, **Billing**, and **Status** pages. - Added icons throughout the sidebar for easier scanning. - Converted the deploy and setup guides to a clearer step-by-step layout. - Removed leftover template pages and tidied up the structure. **Reference** - Added a [Glossary](https://daki.cc/wiki/glossary) of Daki terms, surfaced as inline tooltips across the guides. Source: https://daki.cc/wiki/changelog