A lightweight self-hosted startpage that connects to Linkding for bookmark management. Built with Vue.js 3 and nginx for fast, responsive bookmark browsing.
Linkding is the backbone - This app requires a Linkding instance to function.
- 🔖 Real-time bookmark search with debounced filtering
- 🏷️ Tag-based sections for organized layouts
- ⌨️ Full keyboard navigation (arrows, enter, escape)
- 🎨 Drag-and-drop bookmark organization
- 🖼️ Custom icons via bookmark notes (with fallback to favicons)
- 📱 Responsive design across all devices
- 🔒 Security hardened with XSS protection, CSP, and SRI
- 🐳 Docker deployment with single command
- 🚨 Error feedback with toast notifications
- Docker & Docker Compose
- Running Linkding instance
- Linkding API token
git clone https://github.com/cloonix/startpage-vue.git
cd startpage-vue
cp .env.example .env
# IMPORTANT: Edit .env with your real Linkding credentials
nano .env # or use your preferred editor
./build.sh
⚠️ Important: The.envfile must be updated with your actual Linkding URL and API token before deployment. The placeholder values will not work!
Access at http://localhost:3000
Create .env file from .env.example:
cp .env.example .envThen edit with your actual values:
PORT=3000 # Port for the web interface
LINKDING_BASE_URL=https://your-linkding.com # Your Linkding instance URL
LINKDING_API_TOKEN=your_api_token_here # Your Linkding API token
# Optional: Cloudflare Access (if your Linkding is behind CF Access)
CF_ACCESS_CLIENT_ID=your_client_id
CF_ACCESS_CLIENT_SECRET=your_client_secretGet your API token: Linkding → Settings → Integrations → REST API Token
💡 Tip: The build script validates your configuration and will reject placeholder values to prevent deployment errors.
- Tag bookmarks with
#startpage+ optional category tags - Bookmarks are automatically organized by categories
Add to bookmark notes: icon::https://example.com/favicon.png
- Type to search • ↑↓ to navigate • Enter to open • Esc to clear
docker compose up -d # Start
docker compose down # Stop
docker compose logs -f # View logs
./build.sh # Rebuild- Frontend: Vue.js 3 (no build step)
- Server: nginx with caching
- Backend: Linkding API proxy
- Deployment: Docker container
MIT License - see LICENSE file.
