docker.recipes

xBrowserSync

beginner

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:latest
4 container_name: xbrowsersync
5 restart: unless-stopped
6 environment:
7 XBROWSERSYNC_DB_HOST: mongodb
8 XBROWSERSYNC_DB_PORT: 27017
9 XBROWSERSYNC_DB_NAME: xbrowsersync
10 ports:
11 - "8080:8080"
12 depends_on:
13 - mongodb
14 networks:
15 - xbrowsersync
16
17 mongodb:
18 image: mongo:6
19 container_name: xbrowsersync-mongo
20 restart: unless-stopped
21 volumes:
22 - mongo_data:/data/db
23 networks:
24 - xbrowsersync
25
26volumes:
27 mongo_data:
28
29networks:
30 xbrowsersync:
31 driver: bridge

.env Template

.env
1# Install browser extension to use

Usage Notes

  1. 1Docs: https://www.xbrowsersync.org/
  2. 2API at http://localhost:8080/info - verify it's running
  3. 3Install browser extension: Chrome, Firefox, Android
  4. 4In extension settings: set API URL to http://yourserver:8080
  5. 5Anonymous sync with encryption - no account needed
  6. 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 file
2cat > docker-compose.yml << 'EOF'
3services:
4 xbrowsersync:
5 image: xbrowsersync/api:latest
6 container_name: xbrowsersync
7 restart: unless-stopped
8 environment:
9 XBROWSERSYNC_DB_HOST: mongodb
10 XBROWSERSYNC_DB_PORT: 27017
11 XBROWSERSYNC_DB_NAME: xbrowsersync
12 ports:
13 - "8080:8080"
14 depends_on:
15 - mongodb
16 networks:
17 - xbrowsersync
18
19 mongodb:
20 image: mongo:6
21 container_name: xbrowsersync-mongo
22 restart: unless-stopped
23 volumes:
24 - mongo_data:/data/db
25 networks:
26 - xbrowsersync
27
28volumes:
29 mongo_data:
30
31networks:
32 xbrowsersync:
33 driver: bridge
34EOF
35
36# 2. Create the .env file
37cat > .env << 'EOF'
38# Install browser extension to use
39EOF
40
41# 3. Start the services
42docker compose up -d
43
44# 4. View logs
45docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/xbrowsersync/run | bash

Troubleshooting

  • 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