Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banner

License: MIT Next.js TypeScript Docker OmniRise YouTube

CI Latest Release Last Commit


Stop paying $15/mo for Linktree. LinkBreeze gives you links, analytics, QR codes, themes, and a real admin panel — free, forever, in one Docker command.

🔗 Live Demo — see the public page in action (read-only).

🔐 Demo Dashboard — log in with demo / demo1234 to explore the admin panel.

✨ Features

  • 🔗 Link Management — Add, reorder, and customize unlimited links with drag-and-drop
  • 🌐 Multi-Page Support — Create unlimited pages, each with its own slug, theme, links, analytics, SEO, and QR code
  • 🎨 Auto-Favicon Links — Links automatically show the target site's favicon — no manual icon uploads needed
  • 📥 Migration Wizard — Import existing links and social profiles from Linktree, Bento, Hopp.bio, LittleLink, or any HTML/JSON export
  • 🖼️ Link Thumbnails — Add images to your links for visual preview cards
  • 🎵 Embed Widgets — Embed YouTube, Spotify, SoundCloud, Vimeo, or Bandcamp directly on your page
  • ⏰ Link Scheduling — Schedule links to appear/disappear automatically with date/time controls
  • 📊 Privacy-First Analytics — Page views, click tracking, referrers — no cookies, no tracking
  • 📈 External Analytics — Inject Plausible, Umami, Matomo, or Google Analytics with one paste
  • 🔔 Update Notifications — Dashboard banner notifies you when a new version is available (no phone-home, no auto-update)
  • 🎨 Themes — 10 built-in presets (Aurora, Glassmorphism, Neon Cyberpunk, Editorial Paper, Terminal Mono, Pastel Soft, Brutalist, Retro Sunset, Minimal Light, 8-Bit Retro) + full customizer with CSS token system (colors, 10 fonts, 8 background types, 7 card styles, layout controls, effects) + theme duplicate/import/export
  • ✏️ Custom CSS — Fine-tune your page with raw CSS injection
  • 📧 Email Capture — Collect subscriber emails on your public page, export to CSV
  • 📱 Mobile-First — Gorgeous on every screen. Loads in under 300ms. Zero client-side JS bundles.
  • 🎯 QR Codes — Auto-generated for your page. Download as SVG or PNG.
  • 🔒 Self-Hosted — Your data, your server. No tracking. No ads. No subscription.
  • 🐳 One-Command Deploy — Docker compose and you're live

🚀 Quick Start

One command — zero config — live in 30 seconds:

curl -fsSL https://raw.githubusercontent.com/Manak-hash/LinkBreeze/main/scripts/install.sh | bash

The script detects Docker or Podman, pulls the image, starts the container, and optionally sets up a systemd service for auto-start on boot. Want auto-start on boot? Run it with sudo bash instead and answer y when prompted.

Don't like piping to bash?
curl -fsSL https://raw.githubusercontent.com/Manak-hash/LinkBreeze/main/scripts/install.sh -o install.sh
less install.sh
bash install.sh

Then open http://localhost:3000 — the setup wizard takes under 30 seconds.

Prefer a different method? Expand one below:

🐳  Docker

No Node.js, no npm, no config files needed.

Linux / macOS / Windows CMD:

docker run -d --name linkbreeze --restart unless-stopped -p 3000:3000 -v linkbreeze-data:/app/data ghcr.io/manak-hash/linkbreeze:latest

Windows PowerShell — use backticks for line breaks:

docker run -d `
  --name linkbreeze `
  --restart unless-stopped `
  -p 3000:3000 `
  -v linkbreeze-data:/app/data `
  ghcr.io/manak-hash/linkbreeze:latest

Database migrations run automatically on container startup — no manual drizzle-kit migrate needed for Docker deployments.

🧩  Docker Compose

Best if you want to customize ports, add a reverse proxy, or manage updates easily.

Option A — Pull the pre-built image:

Create a docker-compose.yml:

services:
  linkbreeze:
    image: ghcr.io/manak-hash/linkbreeze:latest
    ports:
      - "3000:3000"
    volumes:
      - linkbreeze-data:/app/data
    restart: unless-stopped

volumes:
  linkbreeze-data:
docker compose up -d

Option B — Build from source:

git clone https://github.com/Manak-hash/LinkBreeze.git
cd LinkBreeze
docker compose up -d --build

Upgrade anytime: docker compose pull && docker compose up -d

Logs: docker compose logs -f linkbreeze

☁️  Coolify

Running Coolify on your VPS?

  1. + New ResourceDocker Compose Empty
  2. Paste:
services:
  linkbreeze:
    image: ghcr.io/manak-hash/linkbreeze:latest
    ports:
      - "3000:3000"
    volumes:
      - linkbreeze-data:/app/data
    restart: unless-stopped

volumes:
  linkbreeze-data:
  1. Set a domain (e.g., links.yourdomain.com) for automatic SSL
  2. Click Deploy — Coolify handles Let's Encrypt automatically
📦  Synology NAS

Running Synology DiskStation with Container Manager (DSM 7.2+)?

  1. Open Container ManagerContainerCreate
  2. Image: ghcr.io/manak-hash/linkbreeze:latest (pull it first via ImageAdd if not found)
  3. Container settings:
    • Name: linkbreeze
    • Port: Local 3000 → Container 3000
    • Volume: Create /docker/linkbreeze/data and map to /app/data
    • Restart policy: Unless stopped
  4. Click Done — live at http://<nas-ip>:3000

Update later: pull the latest image, stop and recreate the container. Data persists in the volume.

🔧  Podman

Using Podman instead of Docker (RHEL, Fedora, CentOS)? Replace docker with podman:

podman run -d --name linkbreeze --restart unless-stopped -p 3000:3000 -v linkbreeze-data:/app/data ghcr.io/manak-hash/linkbreeze:latest

If you get permission errors on the volume, create it first: podman volume create linkbreeze-data

For systemd integration with rootless Podman: podman generate systemd after starting the container.

The one-line install script at the top of this section detects Podman automatically.

🖥️  Portainer

Using Portainer to manage containers? Deploy as a Stack.

  1. Go to your environment → StacksAdd stack
  2. Name it linkbreeze and paste:
services:
  linkbreeze:
    image: ghcr.io/manak-hash/linkbreeze:latest
    ports:
      - "3000:3000"
    volumes:
      - linkbreeze-data:/app/data
    restart: unless-stopped

volumes:
  linkbreeze-data:
  1. Click Deploy the stack

Update: StackslinkbreezeEditor → click Pull and redeploy.

🔨  Manual (without Docker)

Requires Node.js 18+.

git clone https://github.com/Manak-hash/LinkBreeze.git
cd LinkBreeze

npm install

cp .env.example .env
# Edit .env to set your SECRET_KEY and DATABASE_PATH if needed

npm run db:migrate
npm run dev

For production: npm run build && npm start

🌐 Making Your Page Public

LinkBreeze runs on your server. Once deployed, your page is accessible to anyone at https://your-domain.com/your-slug. Here's how to get it online:

Quick start: Point your domain

  1. Point your domain's A record to your server IP
  2. Expose port 3000 or add a reverse proxy
  3. Done — your page is live at https://your-domain.com/your-slug

Advanced deployment scenarios

For production setups — reverse proxies with automatic TLS, zero-trust tunnels, Kubernetes, scheduled backups — see the examples/ directory. Each example is a single, self-contained file with a header comment explaining when to use it.

Quick reference: which example for which scenario?
What you want Use this file
Automatic TLS without manual config docker-compose.caddy.yml or docker-compose.https-portal.yml
Automatic TLS with a dashboard (Traefik) docker-compose.traefik.yml
Expose without opening ports (zero-trust) docker-compose.cloudflare-tunnel.yml
You already use Nginx + Certbot docker-compose.nginx.yml
Scheduled SQLite backups docker-compose.with-backup.yml
Running on Kubernetes cluster kubernetes.yaml

Option 1: Reverse Proxy with Your Domain

Point your domain's A record to your server IP, then use a reverse proxy with automatic HTTPS:

Caddy (recommended — auto HTTPS)
links.example.com {
    reverse_proxy localhost:3000
}

For a complete Docker Compose setup with Caddy, see examples/docker-compose.caddy.yml.

nginx
server {
    server_name links.example.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

For a complete Docker Compose setup with Nginx, see examples/docker-compose.nginx.yml.

Option 2: Cloudflare Tunnel (no open ports)

No domain purchase or port forwarding needed:

cloudflared tunnel --url http://localhost:3000

For a complete Docker Compose setup with Cloudflare Tunnel, see examples/docker-compose.cloudflare-tunnel.yml.

📸 Screenshots

Click to expand
Public Page Admin Dashboard
Public Page [Aurora Theme] Admin Dashboard
Links Profile
Links Page Profile Page
Theme Live Preview Pane
Theme Page Live Preview Pane
Settings [General] Settings [Appearance]
Settings Page [General Tab] Settings Page [Appearance Tab]
Settings [Security] Settings [Data]
Settings Page [Security Tab] Settings Page [Data Tab]

🆚 Comparison

Feature Linktree LinkStack LittleLink Shako LinkBreeze
Price $15/mo Free Free Free Free
Admin Panel Slow ✅ Fast
Multi-Page ✅ (paid)
Auto-Favicon Links
Migration Wizard
Database Theirs MySQL None None SQLite
Built-in Analytics Paid Basic ✅ Full
External Analytics
Email Capture Paid
Embed Widgets Paid
Link Thumbnails
QR Codes
Link Scheduling Paid
Themes Paid Limited CSS only Config ✅ Full Token System + Import/Export
Custom CSS
Self-Hosted
Language Closed PHP HTML Astro TypeScript
Docker Deploy N/A Complex Simple Simple One command
Page Load ~2-3s ~1-2s Fast Fast <300ms
License Closed AGPL MIT GPL MIT

🛠️ Tech Stack

Layer Technology
Framework Next.js 16 (App Router, Server Components, ISR)
Database SQLite via better-sqlite3 (WAL mode)
ORM Drizzle ORM (type-safe, zero overhead)
Auth Cookie-based HMAC sessions, bcrypt
UI shadcn/ui + Tailwind CSS 4
Drag & Drop dnd-kit
Charts Recharts
QR Codes qrcode (server-side SVG/PNG)
Validation Zod
Icons Lucide + custom social SVGs

📖 Documentation

⚙️ Configuration

All configuration is via environment variables (.env):

Variable Default Description
PORT 3000 Server port
DATABASE_PATH ./data/linkbreeze.db SQLite database file path
SECRET_KEY Auto-generated HMAC signing key for sessions

Runtime settings (page slug, title, SEO, theme) are managed via the admin dashboard and stored in the database — no code changes needed.

🎨 Theme System

10 presets are included out of the box: Aurora (animated flagship), Glassmorphism, Neon Cyberpunk, Editorial Paper, Terminal Mono, Pastel Soft, Brutalist, Retro Sunset, Minimal Light, and 8-Bit Retro.

The theme engine uses a CSS custom property (--lb-*) token system — every color, radius, shadow, and font is a token consumed by the public page components. The customizer gives you full control over:

  • Background — 8 types (solid, gradient, radial, mesh, aurora, animated gradient, image, pattern) with angle, overlay, and opacity controls
  • Colors — accent, secondary, text, muted text, card background, card border (hex or rgba)
  • Typography — 10 curated Google Fonts (Inter, Poppins, Playfair Display, JetBrains Mono, Space Grotesk, DM Sans, Lora, Bebas Neue, Sora, Outfit), font scale, weight, letter spacing
  • Card style — 7 link styles (pill, rounded, sharp, glass, outline, neon, pixel), hover effects, button size, corner radius, border width, shadow strength
  • Layout — container width, alignment (left/center/right), density (compact/normal/relaxed)
  • Effects — glow with custom color, glass blur, noise texture, reveal animation
  • Duplicate — clone any theme (preset or custom) as a new editable copy

All changes apply with zero client-side JS bundles — the public page ships no React runtime and renders as pure server-side HTML. (mailto/tel/social links use a tiny inline onclick beacon for best-effort click tracking; http/https links use the JS-free /go/:id redirect.)

💬 Community

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

📜 License

MIT — do whatever you want. See LICENSE.

🏢 About

Built by Manak-hash · An OmniRise project.

About

The self-hosted Linktree alternative. Import from any competitor in 30 seconds. Multi-page, privacy-first analytics, one-line install.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

123 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages