# Deploy Flink with Easypanel

URL: /templates/flink

Flink is a free, libre, and open source URL shortener built with ASP.NET Core. It generates QR codes and embeddable link previews for every shortened URL, supports password-protected and time-limited links, and ships with built-in spam protection that checks submissions against AdBlock/phishing blocklists. Short links can be created one at a time through the web UI or in bulk from the terminal with curl, and a Prometheus metrics endpoint is available for tracking click activity. This template runs Flink against a PostgreSQL database for production-grade reliability.

## Installation notes

Open the app URL and use the "flinkify" form to shorten a link, or POST to /links with a JSON body of uri, creator, and either preferredId or preferredIdLength. Swagger and Scalar API docs are linked in the top navigation bar.

## Benefits

### Instant QR Codes

Every shortened link automatically gets a scannable QR code, cached in memory for fast repeat requests.

### Built-In Spam Protection

Submitted URLs are checked against AdBlock-format phishing and spam blocklists before they are shortened, out of the box.

### Production-Ready Database

Runs against PostgreSQL instead of the SQLite default, so multiple Flink replicas can safely share the same database.

## Features

### Embeddable Link Previews

Shortened links generate iframe-embeddable previews with page metadata, similar to how social platforms unfurl links.

### Password and Time-Limited Links

Lock a short link behind a password or restrict it to a specific activation and expiration window.

### CLI-Friendly Bulk Creation

Create short links from the terminal with curl or wget, with a custom ID or a randomly generated one of a chosen length.

### Prometheus Metrics

A built-in /metrics endpoint (optionally behind HTTP basic auth) exposes click and usage statistics for scraping.

### Event Webhooks

Fire notifications to ntfy, Discord, Slack, Mattermost, or Rocket.Chat whenever a link is created or deleted.

## Configuration

- `appServiceName` (App Service Name, required): flink

- `appServiceImage` (App Service Image, required): quay.io/rtraceio/flink:2.6.0-rc03

## Services

- flink: app (quay.io/rtraceio/flink:2.6.0-rc03)

- flink-db: postgres

## Resources

- [Website](https://flink.rtrace.io)

- [GitLab](https://gitlab.com/rtraceio/web/flink)

- [Documentation](https://gitlab.com/rtraceio/web/flink/-/blob/main/docs/install/install.md)

- [Container Registry](https://quay.io/repository/rtraceio/flink)

- [Template source](https://github.com/easypanel-io/templates/tree/main/templates/flink)