Files
linkforty/DOCKERHUB.md
T
2026-07-31 11:51:56 +09:00

148 lines
4.6 KiB
Markdown

# 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
```bash
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
```bash
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:**
```yaml
services:
linkforty:
image: linkforty/core:v1.6.1
```
## Docker Compose (Full Stack)
```yaml
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`](https://www.npmjs.com/package/@linkforty/mobile-sdk-react-native) |
| Expo | [`@linkforty/mobile-sdk-expo`](https://www.npmjs.com/package/@linkforty/mobile-sdk-expo) |
| iOS (Swift) | [LinkFortySDK](https://github.com/LinkForty/mobile-sdk-ios) |
| Android (Kotlin) | [LinkFortySDK](https://github.com/LinkForty/mobile-sdk-android) |
## 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
- **Source Code:** [github.com/LinkForty/core](https://github.com/LinkForty/core)
- **Documentation:** [docs.linkforty.com](https://docs.linkforty.com)
- **Cloud Platform:** [linkforty.com](https://linkforty.com) (hosted SaaS)
- **Issues:** [GitHub Issues](https://github.com/LinkForty/core/issues)
## License
AGPL-3.0 — see [LICENSE](https://github.com/LinkForty/core/blob/main/LICENSE) for details.