xBrowserSync
Browser bookmark sync service.
Overview
xBrowserSync is an open-source browser bookmark synchronization service that enables users to sync their bookmarks across multiple browsers and devices while maintaining complete privacy through client-side encryption. Created as a privacy-focused alternative to proprietary bookmark sync services, xBrowserSync ensures that bookmark data is encrypted before leaving the user's device, with the server never having access to unencrypted data. The service operates anonymously without requiring user accounts, using unique sync IDs as encryption keys for secure bookmark storage and retrieval.
This configuration pairs the xBrowserSync API server with MongoDB as the document storage backend, creating a self-hosted bookmark synchronization platform. MongoDB's flexible document structure perfectly accommodates the hierarchical nature of browser bookmarks and folders, while its JSON-like storage format aligns naturally with the REST API's data exchange patterns. The database stores encrypted bookmark payloads, sync metadata, and service statistics without ever accessing the actual bookmark content due to the client-side encryption model.
This stack is ideal for privacy-conscious users, organizations seeking data sovereignty, and anyone wanting to maintain bookmark synchronization without relying on tech giants' services. The combination delivers enterprise-grade bookmark sync capabilities while ensuring complete user privacy, making it perfect for corporate environments with strict data governance requirements or personal use where bookmark privacy is paramount.
Key Features
- Client-side encryption ensures bookmark data is encrypted before transmission to the server
- Anonymous synchronization without user accounts or personal information collection
- Cross-browser compatibility with official extensions for Chrome, Firefox, and mobile browsers
- MongoDB document storage optimized for hierarchical bookmark folder structures
- RESTful API design enabling custom client development and third-party integrations
- Automatic bookmark conflict resolution when syncing across multiple devices
- Configurable sync limits and quotas to prevent database abuse
- Real-time bookmark synchronization across all connected browser instances
Common Use Cases
- 1Corporate environments requiring bookmark sync without external data sharing
- 2Privacy-focused individuals avoiding Google or Mozilla sync services
- 3Development teams sharing curated bookmark collections for project resources
- 4Educational institutions providing bookmark sync for student and faculty browsers
- 5Home lab enthusiasts creating personal bookmark sync infrastructure
- 6Organizations with air-gapped networks needing internal bookmark synchronization
- 7Multi-browser users synchronizing bookmarks between Chrome, Firefox, and mobile browsers
Prerequisites
- Minimum 1GB RAM for MongoDB document storage and indexing operations
- Port 8080 available for xBrowserSync API server access
- Basic understanding of browser extension installation and configuration
- Secure backup strategy for MongoDB data containing encrypted bookmarks
- Network access from client browsers to the xBrowserSync API endpoint
- Understanding of sync ID security importance as the encryption key
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 xbrowsersync: 3 image: xbrowsersync/api:latest4 container_name: xbrowsersync5 restart: unless-stopped6 environment: 7 XBROWSERSYNC_DB_HOST: mongodb8 XBROWSERSYNC_DB_PORT: 270179 XBROWSERSYNC_DB_NAME: xbrowsersync10 ports: 11 - "8080:8080"12 depends_on: 13 - mongodb14 networks: 15 - xbrowsersync1617 mongodb: 18 image: mongo:619 container_name: xbrowsersync-mongo20 restart: unless-stopped21 volumes: 22 - mongo_data:/data/db23 networks: 24 - xbrowsersync2526volumes: 27 mongo_data: 2829networks: 30 xbrowsersync: 31 driver: bridge.env Template
.env
1# Install browser extension to useUsage Notes
- 1Docs: https://www.xbrowsersync.org/
- 2API at http://localhost:8080/info - verify it's running
- 3Install browser extension: Chrome, Firefox, Android
- 4In extension settings: set API URL to http://yourserver:8080
- 5Anonymous sync with encryption - no account needed
- 6Sync ID is your encryption key - save it securely
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
xbrowsersync
xbrowsersync:
image: xbrowsersync/api:latest
container_name: xbrowsersync
restart: unless-stopped
environment:
XBROWSERSYNC_DB_HOST: mongodb
XBROWSERSYNC_DB_PORT: 27017
XBROWSERSYNC_DB_NAME: xbrowsersync
ports:
- "8080:8080"
depends_on:
- mongodb
networks:
- xbrowsersync
mongodb
mongodb:
image: mongo:6
container_name: xbrowsersync-mongo
restart: unless-stopped
volumes:
- mongo_data:/data/db
networks:
- xbrowsersync
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 xbrowsersync:5 image: xbrowsersync/api:latest6 container_name: xbrowsersync7 restart: unless-stopped8 environment:9 XBROWSERSYNC_DB_HOST: mongodb10 XBROWSERSYNC_DB_PORT: 2701711 XBROWSERSYNC_DB_NAME: xbrowsersync12 ports:13 - "8080:8080"14 depends_on:15 - mongodb16 networks:17 - xbrowsersync1819 mongodb:20 image: mongo:621 container_name: xbrowsersync-mongo22 restart: unless-stopped23 volumes:24 - mongo_data:/data/db25 networks:26 - xbrowsersync2728volumes:29 mongo_data:3031networks:32 xbrowsersync:33 driver: bridge34EOF3536# 2. Create the .env file37cat > .env << 'EOF'38# Install browser extension to use39EOF4041# 3. Start the services42docker compose up -d4344# 4. View logs45docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/xbrowsersync/run | bashTroubleshooting
- Browser extension shows 'Service not available': Verify API endpoint at http://localhost:8080/info returns service information
- Bookmarks not syncing between browsers: Ensure the same sync ID is configured in all browser extensions
- MongoDB connection errors in logs: Check that MongoDB container is running and accessible on port 27017
- Extension reports 'Invalid sync ID': Generate new sync ID in extension settings if existing ID is corrupted
- Sync operations timing out: Increase MongoDB memory allocation if bookmark collections are large
- API returns database errors: Verify MongoDB has sufficient disk space and proper read/write permissions on data volume
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download