Introduction

Commands

Use this reference to configure QuickDeploy, deploy projects, and remove deployments.


One important concept!

QuickDeploy deployments are organized by project. By default, the project name is the name of the current directory. Use the --project flag when you need a stable name or want a connected frontend and backend to share the same project network.

quickdeploy configure

Run this once after installation. Before starting, have:

  • Your server's IP address and SSH username.
  • A working SSH key in your ~/.ssh directory, or a key available through your SSH agent.
  • The email address used during purchase or your license key.
quickdeploy configure

QuickDeploy detects local SSH keys, lets you choose one when several are available, and tests the server connection. It then validates your license and saves the configuration to ~/.quickdeploy/config.json.

Flags

  • --ssh: Detect and select an SSH key again, test it against the configured server, and save the selection.
  • --license: Validate and update only the license using the purchase email address or license key.

Both flags require an existing server configuration. Use one at a time. Run the command without a flag for the full server, SSH, and license flow.

SSH test failed?

The full setup flow continues after a failed SSH test, so a saved configuration alone does not prove the server is reachable. Verify ssh user@server-ip works, then run quickdeploy configure --ssh to select and test the key again.

Environment variables

For CI/CD or other non-interactive environments, provide all required configuration with environment variables. You do not need to run the interactive configure command:

QUICKDEPLOY_IP=1.2.3.4
QUICKDEPLOY_USER=root
QUICKDEPLOY_SSH_KEY_PATH=path/to/your/ssh/key
QUICKDEPLOY_LICENSE_KEY=your-license-key

QUICKDEPLOY_IP, QUICKDEPLOY_USER, and QUICKDEPLOY_LICENSE_KEY are required when no saved configuration exists. QUICKDEPLOY_SSH_KEY_PATH is optional when the SSH agent provides the correct key.

Environment variables override the matching values in ~/.quickdeploy/config.json. The license is still validated online before a deployment starts.

quickdeploy push

This command uploads a source project and deploys it to your server.

quickdeploy push

Before the first push, make sure the server passes the preflight check, the application has a production start command, and you know the port it listens on inside the container.

During a foreground deployment, QuickDeploy:

  • Validates the saved license and server configuration.
  • Uploads the source project and a matching server helper.
  • Builds the application image on the VPS with Nixpacks.
  • Starts the application and any requested database container.
  • Checks that the application container remains running.
  • Creates or updates the Caddy configuration when --domain is provided.

The container check is process-based; it does not request an HTTP health endpoint. Verify the deployed URL after the command completes.

Flags

  • --domain: The domain you want the project to be accessible on.
  • --path: The path to the project you want to deploy. Default: .
  • --project: The project name you want to deploy.
  • --container: The container name you want to deploy. Default: project-name
  • --port: The port the application listens on inside its container. Default: 8080
  • --db: Add a database container. Supported values: postgres, mysql, or redis. No database is added when this flag is omitted.
  • --db-port: The database port. Default: 5432 (PostgreSQL), 3306 (MySQL), or 6379 (Redis).
  • --db-user: The database user. Default: project-name.
  • --db-password: The database password. Default: project-name.
  • --db-name: The database name. Default: project-name.
  • --detach: Run deployment in background (don't wait for completion)

Project files and environment variables

Run the command from the source project root, or select it with --path. QuickDeploy rebuilds the project on the VPS and excludes dependency and generated-output directories such as node_modules, target, dist, build, and .next. It also excludes Git metadata, local .env files, and log files.

A root-level .env.production file is included intentionally and is used during both the image build and container runtime. See the environment-variable guide.

If the container does not stay running

Health check failed means the new container process stopped or did not remain running long enough. It does not mean QuickDeploy tested the public URL. Check the application's production start command, internal port, and container logs.

Replace my-project with the --project value or source-directory name used for the deployment:

ssh your-user@your-server-ip \
  'cd ~/my-project && (docker compose ps || docker-compose ps) && (docker compose logs --tail=100 || docker-compose logs --tail=100)'

If the application uses a port other than 8080, retry with that internal port:

quickdeploy push --domain example.com --port 3000

See custom runtime configuration when Nixpacks does not detect the correct build or start command.

Examples

Deploy a frontend or full stack project with a domain.

quickdeploy push --domain example.com

Deploy a backend project.

quickdeploy push

Deploy a separated backend and frontend project.

quickdeploy push --domain example.com --project my-project # frontend
quickdeploy push --project my-project # backend

Deploy a project with PostgreSQL. QuickDeploy uses port 5432 and the project name for the database user, password, and database name unless you override them.

quickdeploy push --db postgres

Deploying Next.js with Prisma and PostgreSQL? Follow the Next.js, Prisma, and PostgreSQL VPS deployment guide for Docker networking, persistent database storage, production migrations, HTTPS, and deployment verification.

Deploy a project with explicit PostgreSQL settings.

quickdeploy push --db postgres --db-port 5432 --db-user postgres --db-password postgres --db-name postgres

Deploy in background mode (useful for long deployments).

quickdeploy push --domain example.com --detach

When using --detach, the deployment runs in the background and you can monitor progress with:

ssh user@server 'tail -f /tmp/quickdeploy-<project-name>.log'

quickdeploy rm

This command is used to remove a deployed project from your server. It will stop containers, remove images, clean up project files, and update the Caddy configuration.

quickdeploy rm --project <project> --domain <domain>

Flags

  • --project: The name of the project to remove (required).
  • --domain: The domain of the project to remove (required).

Examples

Remove a deployed project and its domain configuration.

quickdeploy rm --project my-project --domain example.com

Warning!

This operation is destructive and will permanently remove:

  • All containers for the project
  • Docker images for the project
  • Project configuration files
  • Database containers and data (if deployed with the project)
  • Domain entries from Caddy configuration

Make sure to backup any important data before removing a project.

Ready to deploy your first app?

QuickDeploy is built for developers with an Ubuntu-based VPS, Docker, and SSH access. Review the requirements or get your license and follow the installation guide.

Previous
Installation