New PR of Cut — a small self-hosted URL shortener (owner-only admin behind a single password, with per-link passwords, expiries, and click limits).
The template runs the published image ghcr.io/mendylanda/cut with a private Redis for storage. template.toml generates the domain and a strong ADMIN_PASSWORD, then maps the cut service to port 3000. Redis runs with noeviction since it holds the actual links rather than cache data, so it shouldn't drop keys when memory fills up. Cut reads the request host at runtime, so nothing else needs configuring.
Added blueprints/cut/ (docker-compose.yml, template.toml, cut.svg) plus the meta.json entry, sorted with node dedupe-and-sort-meta.js. Compose follows the requirements: ports: - 3000 (no host mapping), matching cut service name, no container_name, no custom network.
Checklist
I have read the suggestions in the README.md file
I have tested the template in my instance (see note below)
I have added tests (n/a for a template)
Note on testing: I verified the stack directly with Docker Compose — the image builds, the container serves / and /admin (both 200), and a /api/keepalive write lands in Redis. I don't have a separate Dokploy instance on hand, so I'm relying on this PR's automatic preview deploy to exercise the template itself. Happy to import the preview Base64 and confirm end-to-end if you'd like.
Issues related (if applicable)
None.
Screenshots or Videos
The app running from the same two-container stack (app + redis:7-alpine); the Dokploy preview deploy will show it inside Dokploy.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Dokploy/templates/pull/914
**Author:** [@MendyLanda](https://github.com/MendyLanda)
**Created:** 5/31/2026
**Status:** ✅ Merged
**Merged:** 7/7/2026
**Merged by:** [@Siumauricio](https://github.com/Siumauricio)
**Base:** `canary` ← **Head:** `add-cut`
---
### 📝 Commits (1)
- [`41e8112`](https://github.com/Dokploy/templates/commit/41e8112fee4a6b277b76c5310936448e5306503a) Add Cut (self-hosted URL shortener) template
### 📊 Changes
**4 files changed** (+77 additions, -0 deletions)
<details>
<summary>View changed files</summary>
➕ `blueprints/cut/cut.svg` (+10 -0)
➕ `blueprints/cut/docker-compose.yml` (+37 -0)
➕ `blueprints/cut/template.toml` (+14 -0)
📝 `meta.json` (+16 -0)
</details>
### 📄 Description
## What is this PR about?
New PR of **Cut** — a small self-hosted URL shortener (owner-only admin behind a single password, with per-link passwords, expiries, and click limits).
The template runs the published image `ghcr.io/mendylanda/cut` with a private Redis for storage. `template.toml` generates the domain and a strong `ADMIN_PASSWORD`, then maps the `cut` service to port 3000. Redis runs with `noeviction` since it holds the actual links rather than cache data, so it shouldn't drop keys when memory fills up. Cut reads the request host at runtime, so nothing else needs configuring.
Added `blueprints/cut/` (`docker-compose.yml`, `template.toml`, `cut.svg`) plus the `meta.json` entry, sorted with `node dedupe-and-sort-meta.js`. Compose follows the requirements: `ports: - 3000` (no host mapping), matching `cut` service name, no `container_name`, no custom network.
## Checklist
- [x] I have read the suggestions in the README.md file
- [ ] I have tested the template in my instance (see note below)
- [ ] I have added tests (n/a for a template)
Note on testing: I verified the stack directly with Docker Compose — the image builds, the container serves `/` and `/admin` (both 200), and a `/api/keepalive` write lands in Redis. I don't have a separate Dokploy instance on hand, so I'm relying on this PR's automatic preview deploy to exercise the template itself. Happy to import the preview Base64 and confirm end-to-end if you'd like.
## Issues related (if applicable)
None.
## Screenshots or Videos
The app running from the same two-container stack (app + `redis:7-alpine`); the Dokploy preview deploy will show it inside Dokploy.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/914
Author: @MendyLanda
Created: 5/31/2026
Status: ✅ Merged
Merged: 7/7/2026
Merged by: @Siumauricio
Base:
canary← Head:add-cut📝 Commits (1)
41e8112Add Cut (self-hosted URL shortener) template📊 Changes
4 files changed (+77 additions, -0 deletions)
View changed files
➕
blueprints/cut/cut.svg(+10 -0)➕
blueprints/cut/docker-compose.yml(+37 -0)➕
blueprints/cut/template.toml(+14 -0)📝
meta.json(+16 -0)📄 Description
What is this PR about?
New PR of Cut — a small self-hosted URL shortener (owner-only admin behind a single password, with per-link passwords, expiries, and click limits).
The template runs the published image
ghcr.io/mendylanda/cutwith a private Redis for storage.template.tomlgenerates the domain and a strongADMIN_PASSWORD, then maps thecutservice to port 3000. Redis runs withnoevictionsince it holds the actual links rather than cache data, so it shouldn't drop keys when memory fills up. Cut reads the request host at runtime, so nothing else needs configuring.Added
blueprints/cut/(docker-compose.yml,template.toml,cut.svg) plus themeta.jsonentry, sorted withnode dedupe-and-sort-meta.js. Compose follows the requirements:ports: - 3000(no host mapping), matchingcutservice name, nocontainer_name, no custom network.Checklist
Note on testing: I verified the stack directly with Docker Compose — the image builds, the container serves
/and/admin(both 200), and a/api/keepalivewrite lands in Redis. I don't have a separate Dokploy instance on hand, so I'm relying on this PR's automatic preview deploy to exercise the template itself. Happy to import the preview Base64 and confirm end-to-end if you'd like.Issues related (if applicable)
None.
Screenshots or Videos
The app running from the same two-container stack (app +
redis:7-alpine); the Dokploy preview deploy will show it inside Dokploy.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.