Skip to content

Latest commit

 

History

History
147 lines (116 loc) · 4.63 KB

File metadata and controls

147 lines (116 loc) · 4.63 KB

LinkForty Core

Open-source alternative to Branch.io, AppsFlyer OneLink, and Firebase Dynamic Links.

Self-hosted deep linking engine with device detection, analytics, deferred deep linking, and smart routing. No per-click pricing, no vendor lock-in, full data ownership — runs on your own PostgreSQL.

Firebase Dynamic Links shut down in August 2025. LinkForty is a production-ready, open-source replacement.

Quick Start

curl -O https://raw.githubusercontent.com/linkforty/core/main/docker-compose.yml
docker compose up -d

That's it. LinkForty is running at http://localhost:3000.

Docker CLI

docker run -d \
  --name linkforty \
  -p 3000:3000 \
  -e DATABASE_URL=postgresql://user:pass@host:5432/linkforty \
  -e REDIS_URL=redis://host:6379 \
  linkforty/core:latest

Features

  • Smart Link Routing — Device-specific URLs for iOS, Android, and web
  • Deferred Deep Linking — Probabilistic fingerprint matching for install attribution
  • Click Analytics — Geolocation, device type, platform, UTM tracking
  • QR Code Generation — Built-in PNG/SVG QR codes for any link
  • Webhooks — HMAC-signed event notifications with retry logic
  • iOS Universal Links & Android App Links — Automatic .well-known file serving
  • OG Preview Pages — Social media scraper detection with Open Graph meta tags
  • Redis Caching — Optional Redis for high-performance link lookups
  • TypeScript — Fully typed API

Environment Variables

Variable Required Default Description
DATABASE_URL Yes PostgreSQL connection string
REDIS_URL No Redis connection string (recommended)
PORT No 3000 Server port
NODE_ENV No production Environment mode
CORS_ORIGIN No * CORS allowed origins
IOS_TEAM_ID No Apple Team ID for Universal Links
IOS_BUNDLE_ID No iOS app bundle ID
ANDROID_PACKAGE_NAME No Android package name
ANDROID_SHA256_FINGERPRINTS No Android signing certificate fingerprints

Image Details

  • Architectures: linux/amd64, linux/arm64
  • Base: Node.js 22 Alpine
  • Security: Non-root user, SBOM + Provenance attestations
  • Health checks: Built-in

Tags

Tag Description
latest Latest stable release
v1.6.1 Specific version (recommended for production)
v1.6 Latest patch of minor version
v1 Latest minor of major version

Pin versions in production:

services:
  linkforty:
    image: linkforty/core:v1.6.1

Docker Compose (Full Stack)

services:
  linkforty:
    image: linkforty/core:latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://linkforty:linkforty@postgres:5432/linkforty
      REDIS_URL: redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: linkforty
      POSTGRES_PASSWORD: linkforty
      POSTGRES_DB: linkforty
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U linkforty"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

Mobile SDKs

Platform Package
React Native @linkforty/mobile-sdk-react-native
Expo @linkforty/mobile-sdk-expo
iOS (Swift) LinkFortySDK
Android (Kotlin) LinkFortySDK

Why LinkForty?

LinkForty Branch AppsFlyer Firebase Dynamic Links
Pricing Free (self-hosted) $299+/mo $500+/mo Shut down
Open Source Yes (AGPL-3.0) No No No
Self-Hosted Yes No No No
Data Ownership Complete Vendor Vendor Was Google

Links

License

AGPL-3.0 — see LICENSE for details.