Dokploy

Cut

A tiny, self-hosted URL shortener — short links that are entirely yours, with per-link passwords, expiries, and click limits.

Cut logo

Configuration

services:
  cut:
    image: ghcr.io/mendylanda/cut:latest
    restart: unless-stopped
    depends_on:
      redis:
        condition: service_healthy
    environment:
      # Injected by Dokploy from template.toml (generated strong password).
      - ADMIN_PASSWORD=${ADMIN_PASSWORD}
      # Bundled Redis below, private to the project network.
      - REDIS_URL=redis://redis:6379
    # Expose the container port only; Dokploy maps the domain to it.
    ports:
      - 3000
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/"]
      interval: 10s
      timeout: 5s
      retries: 10

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    # appendonly = durable across restarts; noeviction because this is Cut's
    # primary datastore, not a cache (don't drop links under memory pressure).
    command: redis-server --appendonly yes --maxmemory-policy noeviction
    volumes:
      - redis-data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 10

volumes:
  redis-data:
[variables]
main_domain = "${domain}"
admin_password = "${password:24}"

[config]
env = [
  "ADMIN_PASSWORD=${admin_password}",
]
mounts = []

[[config.domains]]
serviceName = "cut"
port = 3000
host = "${main_domain}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBjdXQ6XG4gICAgaW1hZ2U6IGdoY3IuaW8vbWVuZHlsYW5kYS9jdXQ6bGF0ZXN0XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgcmVkaXM6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAjIEluamVjdGVkIGJ5IERva3Bsb3kgZnJvbSB0ZW1wbGF0ZS50b21sIChnZW5lcmF0ZWQgc3Ryb25nIHBhc3N3b3JkKS5cbiAgICAgIC0gQURNSU5fUEFTU1dPUkQ9JHtBRE1JTl9QQVNTV09SRH1cbiAgICAgICMgQnVuZGxlZCBSZWRpcyBiZWxvdywgcHJpdmF0ZSB0byB0aGUgcHJvamVjdCBuZXR3b3JrLlxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5XG4gICAgIyBFeHBvc2UgdGhlIGNvbnRhaW5lciBwb3J0IG9ubHk7IERva3Bsb3kgbWFwcyB0aGUgZG9tYWluIHRvIGl0LlxuICAgIHBvcnRzOlxuICAgICAgLSAzMDAwXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTURcIiwgXCJ3Z2V0XCIsIFwiLXFPLVwiLCBcImh0dHA6Ly8xMjcuMC4wLjE6MzAwMC9cIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAxMFxuXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczo3LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgIyBhcHBlbmRvbmx5ID0gZHVyYWJsZSBhY3Jvc3MgcmVzdGFydHM7IG5vZXZpY3Rpb24gYmVjYXVzZSB0aGlzIGlzIEN1dCdzXG4gICAgIyBwcmltYXJ5IGRhdGFzdG9yZSwgbm90IGEgY2FjaGUgKGRvbid0IGRyb3AgbGlua3MgdW5kZXIgbWVtb3J5IHByZXNzdXJlKS5cbiAgICBjb21tYW5kOiByZWRpcy1zZXJ2ZXIgLS1hcHBlbmRvbmx5IHllcyAtLW1heG1lbW9yeS1wb2xpY3kgbm9ldmljdGlvblxuICAgIHZvbHVtZXM6XG4gICAgICAtIHJlZGlzLWRhdGE6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcInJlZGlzLWNsaVwiLCBcInBpbmdcIl1cbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogM3NcbiAgICAgIHJldHJpZXM6IDEwXG5cbnZvbHVtZXM6XG4gIHJlZGlzLWRhdGE6XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuYWRtaW5fcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MjR9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJBRE1JTl9QQVNTV09SRD0ke2FkbWluX3Bhc3N3b3JkfVwiLFxuXVxubW91bnRzID0gW11cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiY3V0XCJcbnBvcnQgPSAzMDAwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG4iCn0=

Tags

url-shortener, links


Version: 0.1.0

On this page