llms.txt
# Deplo
> Deplo is a deployment platform: it turns Git repositories, Docker images and Compose files into running containers on servers you own, behind an automatic reverse proxy with free SSL.
Deplo runs on your own infrastructure: bare metal, a VPS, or a cloud VM. It gives you apps grouped into projects and environments, deploys on every push, preview environments per pull request, one-click rollbacks, shared and secret variables, managed databases with scheduled backups, cron jobs, custom domains, and role-based access for the whole team.
It is the alternative to a cloud provider for teams that want the workflow without the bill or the lock-in: the same push-to-deploy experience, on hardware they control. A built-in MCP server lets AI agents drive the same API the dashboard uses, so an assistant can deploy, read logs and inspect metrics on its own.
Every page answers in Markdown, and the links below point straight at it.
Drop the .md for the page a person reads, or send Accept: text/markdown to
any URL of the site.
## Pages
- [Deplo](https://deplo.build/index.md): Deploy apps from Git, Docker images or Compose on your own servers with Deplo. Open source, automatic HTTPS, backups and no per-seat fees.
- [Get started](https://deplo.build/get-started.md)
- [Features](https://deplo.build/features.md): Everything Deplo does: hosting, deployments, AI, access control, infrastructure and collaboration, all in one platform.
- [Use Cases](https://deplo.build/use-cases.md): How teams use Deplo to host web apps, ship on every push, let AI manage infra, and control who can do what.
- [Frameworks](https://deplo.build/frameworks.md): Deploy Next.js, Nuxt, SvelteKit, Astro, Remix, NestJS, Express, Vite, Django, Laravel and Rails on your own server with Deplo.
- [Comparisons](https://deplo.build/comparison.md): Deplo next to Vercel, Railway, Render, Heroku, Netlify, Fly.io, Coolify and Dokploy. Published prices, the day they were read, and the rows where the other one wins.
- [Templates](https://deplo.build/templates.md): Apps, databases and services you can deploy on your own server in one click, from the same catalog the Deplo dashboard uses.
- [Pricing](https://deplo.build/pricing.md): Deplo is free and open source, with every feature included. The only bill is the server, from a hosting partner or one you already own.
- [Hosting partners](https://deplo.build/partners.md): Every plan from every hosting partner Deplo works with. Search by name, place or spec, or pick a partner to see its range.
- [Security](https://deplo.build/security.md): How to report a security vulnerability in Deplo: private advisory or security@deplo.build, an answer within 72 hours, and what is in and out of scope.
- [Changelog](https://deplo.build/changelog.md): Every Deplo release: new features, fixes and the people who made them.
- [Brand kit](https://deplo.build/brand.md): The Deplo logo and logomark in every format, the colors and fonts, and the rules for using them. Download the full kit or a single file.
- [About](https://deplo.build/about.md): Who builds Deplo, why it exists and how it is funded: open source deployment for the servers you already own.
## Features
- [The shell is optional](https://deplo.build/features/the-shell-is-optional.md): Every task in Deplo, from the first deploy to a restore or a server upgrade, is done from the dashboard. You never need to know Docker, SSH or YAML to get full value out of it.
- [Open source, no per-seat pricing](https://deplo.build/features/open-source-no-per-seat-pricing.md): Deplo is open source and you pay your host, not Deplo. No seats, no build minutes, no bandwidth tiers, no lock-in.
- [One-command install](https://deplo.build/features/one-command-install.md): One command on a fresh Linux server installs Docker, the reverse proxy, Postgres, the control plane and the server agent, and prints the address to open. Nothing to configure before the first login.
- [Take over your VPS](https://deplo.build/features/take-over-your-vps.md): Install Deplo on the machine that already runs another panel. It brings your projects across on the same disk, takes ports 80 and 443, inherits the certificates and removes the old panel when you type its name. Or start clean.
- [Move from another panel](https://deplo.build/features/migration-wizard.md): A wizard reads an existing installation of another panel over its API and recreates it in Deplo: apps, databases, volumes byte for byte, variables, domains, basic auth, cron jobs and backup schedules. Every app that needs a look is named in the report, on its own line, before you deploy anything.
- [Migration measured on every release](https://deplo.build/features/migration-measured.md): Every release runs the migration against live installations of the other panels, with real apps and real data, and checks each app five ways: a record made through the app's own UI, the same HTTP answers, the same database checksums, the same files with permissions and owners, and everything visible in the dashboard.
- [Control plane and server agent](https://deplo.build/features/control-plane-and-server-agent.md): The control plane is the dashboard: it holds the data, renders the deployment and decrypts secrets. A small agent on every server is the only thing that ever runs Docker. The two talk over mutual TLS with a pinned certificate.
- [Apps keep serving without the panel](https://deplo.build/features/apps-outlive-the-panel.md): The control plane is not in the request path. Your containers and the proxy live on the servers and keep answering traffic if the dashboard is down, being upgraded or gone.
- [Teams and fine-grained capabilities](https://deplo.build/features/teams-and-capabilities.md): Everything belongs to a team, the URL names it, and every mutating action is gated server-side by one of forty-four capabilities, one action each. Deleting an app and deploying it are two different capabilities, because an admin may want them apart.
- [Advanced is opt-in](https://deplo.build/features/advanced-mode.md): Every feature names its audience. The non-expert path is on by default, obvious and zero-config. The expert options live behind an Advanced affordance and never on the first-run path.
- [Deploy from anything](https://deplo.build/features/deploy-from-anything.md): Five sources: a GitHub repository, any other Git host, a prebuilt Docker image, an uploaded archive, or a Compose stack. Plus a catalogue of templates that fills the wizard in for you.
- [Three-step wizard](https://deplo.build/features/three-step-wizard.md): Pick a source, fill it in, deploy. Deplo has already read the repository, so the last card arrives filled in: the app name, the framework it recognised, the port, and the build and start commands spelled for your package manager.
- [A free URL from the first deploy](https://deplo.build/features/free-url-from-the-first-deploy.md): Every app answers on a generated public hostname the moment it is running, before you own a domain or touch DNS. Previews and imported apps get one too.
- [Live framework detection](https://deplo.build/features/framework-detection.md): The framework, the port and the build and start commands are re-derived from the repository on every deploy, never stored. Upgrading your framework changes the build without editing anything.
- [Automatic deployments](https://deplo.build/features/automatic-deployments.md): Deploy on push to the tracked branch, or only when a new tag appears for release-only deploys. Deplo registers the webhook itself and shows whether the provider is actually reaching it.
- [Rollbacks](https://deplo.build/features/rollbacks.md): Go back to a deployment that worked in seconds. Deplo re-runs the exact image that build produced, with no clone, no dependency resolution and no chance the tree resolves differently than it did months ago.
- [Pull request previews](https://deplo.build/features/pull-request-previews.md): Every open pull request gets its own running copy of the app at a deterministic URL, posted as a comment on the pull request and torn down when it closes. Previews can run on a cheaper server than production.
- [Template catalogue](https://deplo.build/features/template-catalogue.md): One-click deploy of more than a hundred preconfigured applications: pick it, name it, choose a server, and it comes up with sensible defaults and generated passwords. Every one of them is deployed and checked before it reaches the catalogue.
- [Compose apps](https://deplo.build/features/compose-apps.md): Paste a docker-compose.yml and Deplo runs it, adding routing, HTTPS, variables, storage and backups on top. The editor lints as you type and says what will be rewritten, what needs a permission and what is refused.
- [Domains and HTTPS](https://deplo.build/features/domains-and-https.md): Add a hostname, and Deplo tells you the exact DNS record to create, checks it on a schedule and on demand, and only routes it once the check comes back usable. Certificates are issued and renewed for you.
- [Environment variables](https://deplo.build/features/environment-variables.md): Encrypted at rest, injected at build and run time, layered: instance-wide, the app's own, a linked shared variable, a preview override. Paste a whole .env file to add it in bulk. Each row records who created it and who last changed it.
- [Write-only secrets](https://deplo.build/features/write-only-secrets.md): A secret is never returned by the API, never rendered back to you, and has no reveal button anywhere in the product. It is immutable: changing one means deleting it and adding it again, which is what rotating a credential is.
- [Managed databases](https://deplo.build/features/managed-databases.md): Postgres, MySQL, MariaDB, MongoDB, Redis or ClickHouse, provisioned on one of your servers with a generated password and a connection string. Apps in the same environment reach it by name, with no port, firewall rule or IP.
- [Backups and restore](https://deplo.build/features/backups-and-restore.md): Scheduled, encrypted copies of a database or an app, sent to an S3 bucket or to another server's disk, with a restore that puts them back. The stream is encrypted with age before it leaves the process, one key pair per destination.
- [Backups-only server](https://deplo.build/features/backups-only-server.md): Any cheap machine becomes a backup destination with one command. It runs no Docker, no proxy and no apps, only the agent that receives artifacts.
- [Recovery key](https://deplo.build/features/recovery-key.md): Every destination has a private key you download once and keep. With it, any artifact decrypts anywhere with a single standard command, with no Deplo installed.
- [Disaster recovery](https://deplo.build/features/disaster-recovery.md): Three things to keep: the instance secret, a database dump and the recovery keys. Lose the panel's machine, install Deplo on a new one, restore those, and the agents reconnect because they trust a certificate authority derived from the same secret.
- [Roles](https://deplo.build/features/roles.md): Name a set of capabilities, tick the ones it needs, and every member holding it updates together. Three editable defaults plus your own. A search box and categories, sensitive ones flagged, and Reset to default when you want the original back.
- [Folder shares](https://deplo.build/features/folder-shares.md): Give somebody one corner of the fleet: a grant inside a single folder that replaces their team role there and may exceed it. Someone on Viewer can deploy and configure everything inside Marketing without gaining anything anywhere else.
- [Activity trail](https://deplo.build/features/activity-trail.md): Who did what and when, on one timeline, with filters for person, date, event and resource that live in the address bar so a filtered view is a link. Every app, database and member has its own already-narrowed page.
- [API tokens](https://deplo.build/features/api-tokens.md): A token is a principal with its own capabilities, its own scope tree of teams, projects, folders or apps, and an expiry that defaults to ninety days. Start from a template or from scratch, and edit what it can do without reissuing it.
- [MCP server](https://deplo.build/features/mcp-server.md): Let an AI agent deploy an app, read logs, check why a build failed or restart a database, over the Model Context Protocol. Pick the agent, create a token, paste the printed configuration, and the page lights up on the agent's first call.
- [OAuth consent for web agents](https://deplo.build/features/oauth-for-web-agents.md): A web-based AI assistant cannot take a pasted token, so Deplo has an OAuth consent screen. You see what it asks for, approve, and the access it gets is a token like any other, listed and revocable under your account.
- [Two-factor authentication and policy](https://deplo.build/features/two-factor-policy.md): Authenticator-app codes with recovery codes, set up in four steps. A team, or a single role, can require it: a member who has not met the policy resolves nothing in that team, in the dashboard and over the API alike.
- [Passkeys](https://deplo.build/features/passkeys.md): A passkey is a full sign-in method that replaces the password, and a session that presented one satisfies a two-factor requirement. Each one shows what is holding it, as the authenticator reported it.
- [Password safety](https://deplo.build/features/password-safety.md): Every password a person chooses is checked against the Have I Been Pwned breach database, k-anonymously, so only a hash prefix ever leaves the instance. It runs on account creation, changes, admin resets, basic auth and database passwords, and fails open on an instance with no outbound access.
- [Host access behind one grant](https://deplo.build/features/host-access-behind-one-grant.md): Everything that lets a container reach outside its sandbox, from a bind mount to privileged mode, kernel capabilities, host namespaces, foreign volumes and foreign networks, sits behind a single grant an admin gives to a person.
- [Network isolation per environment](https://deplo.build/features/network-isolation.md): Each environment gets its own private network. Apps and databases in it reach each other by name, and nothing outside reaches in: not another project, not another team, not a preview. You never create or pick a network.
- [One hostname, one team](https://deplo.build/features/one-hostname-one-team.md): A hostname, and a preview base domain across its whole DNS zone, belongs to the team that claimed it. Another team cannot add it, rename onto it, or claim a parent or child of it.
- [Signed releases](https://deplo.build/features/signed-releases.md): Every published image is signed at build time by the release workflow, with no long-lived key to leak or rotate. One command verifies that the tag you are about to run was built from Deplo's own repository.
- [Sign-in protection](https://deplo.build/features/sign-in-protection.md): Sign-in is rate-limited per account and per address, backed by the database so it survives a restart and works across instances. A suspended account is refused, repeated failures raise an alert.
- [Devices and sessions](https://deplo.build/features/devices-and-sessions.md): See every device you are signed in on and sign out everywhere else with one click. Changing a password does not sign out other devices by accident; you do that deliberately.
- [Members and registration links](https://deplo.build/features/members-and-registration-links.md): Add someone who already has an account by username and give them a role. Someone new gets a single-use registration link that expires in a day, which you send however you like.
- [Instance administration](https://deplo.build/features/instance-admin-and-owner.md): Users across every team, suspend, reset a password, promote to admin, delete with an impact preview because a person owns things. Instance settings, updates and the panel's own address live on one page.
- [Monitoring](https://deplo.build/features/monitoring.md): Live CPU, memory, disk and network for every server, app and database, with a rolling history. Each agent pushes one telemetry stream for the whole host, so charts are full the instant a page opens and per-app monitoring has no switch to turn on.
- [Live status](https://deplo.build/features/live-status.md): What the dashboard shows is a live probe, not a stored column. An app whose containers are restarting reads restarting, degraded, unhealthy or down. Error means the last deploy failed, not that the app is down, because a failed redeploy leaves the previous version serving.
- [Logs](https://deplo.build/features/logs.md): Live container output and every build's output, streamed from the server, in a fullscreen view with an instance picker, search and a level filter. Build logs are persisted with a cap, so a runaway build cannot fill the disk.
- [Notifications and alerts](https://deplo.build/features/notifications-and-alerts.md): Twelve kinds of channel, from chat rooms and email to push services and browser push, each with its own selection of thirty-five alerts. A team chat that wants every deploy and an on-call phone that wants only failures is the normal case.
- [Cron jobs](https://deplo.build/features/cron-jobs.md): Run a command on a schedule inside one of your containers, per app or per database, each job in its own timezone. Runs are tracked by the agent on the server, so a panel restart or an upgrade never kills a run in flight.
- [Console](https://deplo.build/features/console.md): A real terminal inside a running container, over the agent, with a proper pseudo-terminal so top, vim and an interactive psql all behave. A database's console is the engine's own client.
- [Health checks](https://deplo.build/features/health-checks.md): Define an HTTP path or a command with interval, timeout, retries and start period, per app. The verdict shows on the app's status and in the container breakdown.
- [Add a server with one pasted command](https://deplo.build/features/server-enrollment.md): The dashboard prints a command with a one-time token. Pasted on the new machine, it installs Docker if missing, verifies the agent's checksum, installs it as a system service and calls home. Deplo never connects to the machine itself, so no SSH key is ever shared.
- [Server roles](https://deplo.build/features/server-roles.md): A server is installed as one of four things: Everything, Build only, Backups only, or Migration source. The role decides what gets set up on the host and where the machine shows up in the interface.
- [Build servers](https://deplo.build/features/build-servers.md): Compile on a dedicated machine and ship the image to the server that runs the app. Builds stop starving production of CPU, and several small servers can share one big builder.
- [Server cleanup](https://deplo.build/features/server-cleanup.md): One schedule for the whole instance reclaims disk on every server: build cache, dangling images, orphaned caches, old app images and leftover app directories. Individual hosts opt out, so a server added tomorrow is never silently unswept.
- [Nothing left behind](https://deplo.build/features/nothing-left-behind.md): A deletion refuses to report success unless the host proves the container and its volume are gone, with a force option for a dead host shown only after a refusal. A teardown that fails is queued and retried with backoff instead of silently orphaning containers.
- [Move an app to another server](https://deplo.build/features/move-between-servers.md): Pick a new server and Deplo copies the app's volumes host to host, redeploys there and tears the old one down. A failed copy rolls back, and a dead old host is called out instead of blocking you forever.
- [Database operations without a shell](https://deplo.build/features/database-operations.md): Restart, redeploy, rebuild from scratch, resize, rotate credentials, expose a host port, move