---
title: "What Is a Container? Running Your Own Code on FPS.ms"
description: "What a Container on FPS.ms is, which runtimes you can choose, what the free plan includes, and where Discord and Telegram bot hosting went."
url: https://fps.ms/docs/containers/what-is-a-container
---
# What is a Container?

A Container is a server on FPS.ms that runs your own code: a Discord or Telegram bot, an API, a website backend, a background worker or a script. You pick a runtime such as Python or Node.js, upload your code or connect a GitHub repository, and FPS.ms keeps it running. Discord bots and Telegram bots are no longer separate products: you host them on a Python or Node.js Container.

## Game Servers, Containers and Apps

When you create a server on [panel.fps.ms/deploy](https://panel.fps.ms/deploy), you first pick one of three categories:

| Category | What it runs | Examples |
|-|-|-|
| **Game Servers** | A game, set up for you | Minecraft, Terraria, Hytale |
| **Containers** | Your own code in the runtime you pick | A Discord bot, a Telegram bot, an API, a web app |
| **Apps** | A ready-made app, installed for you | Vikunja, Navidrome |

A Container is not a VPS. You do not get root access or SSH. You manage your code with the file manager, [SFTP](https://fps.ms/docs/getting-started/connecting-to-sftp.md), the console and, on a paid plan, [GitHub deploys](https://fps.ms/docs/containers/deploy-from-github.md). FPS.ms looks after the machine, the runtime and the network.

## Runtimes you can pick

| Runtime | Good for | Free plan |
|-|-|-|
| Python | Discord and Telegram bots, scripts, Flask and FastAPI apps | Yes |
| Node.js | Discord and Telegram bots, Express and other web apps | Yes |
| Bun | Fast JavaScript and TypeScript apps | Yes |
| .NET | C# apps and ASP.NET Core | Yes |
| Dart | Dart servers and command-line apps | Yes |
| Go | APIs, bots and workers | Yes |
| Java | Spring Boot and other JVM apps | Yes |
| Lua | Lua scripts and tools | Yes |
| Odin | Odin programs | Yes |
| Rust | APIs, bots and workers | Yes |
| Kotlin | Ktor and other Kotlin apps | No, paid plans only |
| Haskell | Haskell programs | No, paid plans only |

The [supported runtimes](https://fps.ms/docs/containers/supported-runtimes.md) page shows which file each runtime starts and how it installs your packages.

## What you get on the free plan

- **One free Container.** You can have one free server per category, so one free Container in total, whatever the runtime. A Discord bot and a Telegram bot no longer get a free slot each. If you already had two free bot servers before the change, both keep running.
- **It does not sleep.** A Container keeps running when nobody uses it, so a bot stays online. Free servers still need to be [renewed](https://fps.ms/docs/getting-started/how-server-renewal-works.md).
- **Environment variables.** Up to 8 on a free server. See [environment variables](https://fps.ms/docs/containers/environment-variables.md).
- **A Public URL** with a random name, like `faint-forge.hostedbyfps.com`, for web apps. See [Public URL](https://fps.ms/docs/containers/public-url.md).

## What needs a paid plan

Paid plans show a **PRO** badge in the panel. On a paid Container you also get:

- [Deploys from GitHub](https://fps.ms/docs/containers/deploy-from-github.md) on every push, with a build log and rollbacks.
- Up to 100 environment variables.
- Your own name on `hostedbyfps.com`, and a domain you bought somewhere else.
- More memory, CPU and disk.

## Create a Container

1. Click **Deploy** in the top bar of the panel, or go to [panel.fps.ms/deploy](https://panel.fps.ms/deploy).
2. Click **Containers**.
3. Under **Choose a container**, click the runtime you want.
4. Under **Choose a runtime version**, pick the version your code needs, for example Python 3.12.
5. Pick a plan and a location, then click **Deploy Server**.

When it is installed, the panel says: "Upload your code or connect a GitHub repository to start it."

## Next steps

- [Store tokens and API keys in environment variables](https://fps.ms/docs/containers/environment-variables.md)
- [Deploy from GitHub](https://fps.ms/docs/containers/deploy-from-github.md)
- [Host a Discord bot](https://fps.ms/docs/discord-bots/installation.md) or [a Telegram bot](https://fps.ms/docs/telegram-bots/installation.md)
- [Fix an app that will not start](https://fps.ms/docs/containers/troubleshooting.md)

---

[FPS.ms](https://fps.ms/index.html.md) · [All pages](https://fps.ms/llms.txt) · [Documentation](https://fps.ms/docs/llms.txt)
