A lightweight, self-hosted web launcher. Organize your bookmarks into a drag-and-drop grid with collapsible groups and auto-fetched favicons.
Pick whichever install path matches your setup. All paths land on http://localhost:3020.
Works on Synology, Unraid, TrueNAS, QNAP, Proxmox, or a plain Docker host.
docker run -d \
--name linky \
-p 3020:3020 \
-v linky-data:/app/data \
--restart unless-stopped \
larsmikki/linky:latestOr pull the published Compose file:
curl -O https://raw.githubusercontent.com/larsmikki/linky/main/docker-compose.yml
docker compose up -dRequires Git for Windows and Node.js 20+.
git clone https://github.com/larsmikki/linky.git
cd linky
npm run setup
npm run devFor a production build: npm run build && npm start.
brew install node git
git clone https://github.com/larsmikki/linky.git
cd linky
npm run setup
npm run devFor a production build: npm run build && npm start.
Debian/Ubuntu:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs git
git clone https://github.com/larsmikki/linky.git
cd linky
npm run setup
npm run devOn Fedora/RHEL use dnf install nodejs git; on Arch use pacman -S nodejs npm git.
For a production build: npm run build && npm start.
- Right-click the background to add shortcuts or groups
- Right-click a shortcut or group to edit, move, or delete
- Long-press on touch devices works the same way
- Enable Arrange Mode from the context menu to drag items around the grid
- Grid layout with drag-and-drop repositioning
- Auto-fetched favicons with local caching
- Collapsible groups with custom colors
- Manual icon upload with fallback letter tiles
- 10 built-in themes including light and dark modes
- Row and column layout modes
- Import / export for backup and migration
- Responsive — works on mobile and desktop
- Data persisted in SQLite
| Environment variable | Default | Description |
|---|---|---|
PORT |
3020 |
Port the server listens on |
DATA_DIR |
/app/data |
Directory for database and icon cache |
ALLOWED_ORIGINS |
http://localhost:3020 |
Comma-separated allowed CORS origins |
Data is stored in a Docker volume (linky-data) at /app/data inside the container. Back up via Settings → Export, or copy the volume contents directly.
- Frontend: React 19, TypeScript, Vite, Tailwind CSS
- Backend: Express, TypeScript
- Database: SQLite (via sql.js)
- Icons: Sharp for image processing
If you find Linky useful, consider buying me a coffee. Linky is and always will be free, open source, and self-hosted.
