🚧 v0.1.0 Alpha β€” Not recommended for critical production workloads just yet. Perfect for side projects, internal tools, and staging environments.
LoomDeploy
Guides

One-click Services

Deploy databases, caches, and storage services alongside your apps with a single click.

LoomDeploy includes a built-in catalog of production-ready services you can deploy in seconds β€” no configuration files required. Each service gets its own Docker container, persistent volume, and auto-generated connection strings.

Available services

ServiceTypeDefault port
PostgreSQLDatabase5432
MySQLDatabase3306
MariaDBDatabase3306
MongoDBDatabase27017
RedisCache6379
MinIOObject storage (S3-compatible)9000
GhostCMS2368
More services are on the roadmap β€” Valkey, Elasticsearch, InfluxDB, Gitea, and more.

Deploying a service

  1. Go to Projects and click New Project.
  2. Switch to the Services tab.
  3. Pick a service from the catalog.
  4. Fill in a name and any initial credentials (e.g. database password).
  5. Click Deploy β€” the container starts in seconds.

Service overview

Once deployed, the service detail page has four tabs:

TabDescription
OverviewConnection strings, container stats, service info
LogsLive and historical container logs
CredentialsRaw env var view
ConfigurationCredentials editor, external access, resource limits, danger zone

Connection strings

The Overview tab automatically generates ready-to-copy connection strings based on the service type and your credentials:

  • Internal β€” for apps running on the same server (uses the Docker network hostname ld_<project-id>)
  • External β€” shown only when public access is enabled; uses your server's IP and the bound host port

Example (PostgreSQL, internal):

postgresql://youssef:password@ld_abc123:5432/mydb

Example (PostgreSQL, external after enabling public access on port 5433):

postgresql://youssef:password@109.199.107.0:5433/mydb

Updating credentials

Go to Configuration β†’ Service Credentials to update usernames, passwords, and database names. Clicking Save & Redeploy will:

  1. Update the environment variables for the container.
  2. Trigger a redeploy β€” the service restarts with the new credentials.
Changing credentials will restart the service. Any apps connecting to it may experience a brief interruption.

External / public access

By default, services are internal only β€” they are only reachable from other containers on the same server. To connect from an external tool (DBeaver, TablePlus, Redis CLI, etc.):

  1. Go to Configuration β†’ External Access.
  2. Click Public in the access mode switcher.
  3. Click Apply & Restart.

The service port is then bound to 0.0.0.0:<port> on the host. The external connection string in the Overview tab will update automatically.

Security warning β€” exposing a service port publicly makes it reachable from anywhere on the internet. Always use a strong password and consider restricting access with a firewall (e.g. ufw allow from <your-ip> to any port <port>).

Resource limits

Go to Configuration β†’ Resource Limits to cap CPU and memory:

FieldUnit0 =
CPU Limit% of one core (100 = 1 core, 200 = 2 cores)Unlimited
Memory LimitMBUnlimited

Limits are applied on the next redeploy.

Persistent data

All services mount a Docker named volume at the path expected by the image (e.g. /var/lib/postgresql/data for Postgres). Data persists across container restarts and redeployments.

Deleting a service

Go to Configuration β†’ Danger Zone and click Delete. This will:

  • Stop and remove the container
  • Remove the service project record
The Docker volume is not automatically removed. If you want to wipe the data too, SSH into your server and run docker volume rm <volume-name>.