Error
This guide seems to be broken for the current versions of 1.1.13. xbrowsersync don’t work withNode.js in version 18 or newer, we would be happy if you want to work on a solution and create a Pull Request. See also the related issue: https://github.com/Uberspace/lab/issues/1640
xBrowserSync API
xBrowserSync is a free and open-source browser bookmark syncing tool with support for Chrome, Firefox and Android (via app).
The xBrowserSync API provides an individual sync server where your bookmarks stored encrypted.
Note
For this guide you should be familiar with the basic concepts of
Prerequisites
We’re using Node.js in the stable version 8:
[isabell@stardust ~]$ uberspace tools version show node
Using 'Node.js' version: '8'
[isabell@stardust ~]$
MongoDB
Install MongoDB.
Subdomain & Web backends
Setup a web backend on port 8080
[isabell@stardust ~]$ uberspace web backend set / --http --port 8080
Installation
Download xBrowserSync API
Get the xBrowserSync API source code from GitHub and clone it to ~/xbrowsersync/api
, be sure to replace the pseudo branch number v1.1.18
here with the latest release branch from the GitHub repository.
[isabell@stardust ~]$ git clone https://github.com/xbrowsersync/api.git --branch v1.1.8 xbrowsersync/api
[...]
Receiving objects: 100% (117/117), 566.29 KiB | 1.45 MiB/s, done.
Resolving deltas: 100% (14/14), done.
[...]
[isabell@stardust ~]$
Creating MongoDB User & Tables
Open a Mongo shell and enter the mongo command listed below.
This creates a new database user and the tables needed by xBrowserSync.
Replace <password>
with a cleartext password of your choice, which is used as password for a new created database user.
Afterwards leave the shell with the exit
command.
[isabell@stardust ~]$ mongo
[...]
>use admin
db.createUser({ user: "xbrowsersyncdb", pwd: "<password>", roles: [ { role: "readWrite", db: "xbrowsersync" }, { role: "readWrite", db: "xbrowsersynctest" } ] })
use xbrowsersync
db.newsynclogs.createIndex( { "expiresAt": 1 }, { expireAfterSeconds: 0 } )
db.newsynclogs.createIndex({ "ipAddress": 1 })
>exit
[isabell@stardust ~]$
Installation
Now you can install all the dependencies needed for xBrowserSync by using npm. Additionally you can let npm run a so called security audit, which detects and updates insecure dependencies.
[isabell@stardust ~]$ cd ~/xbrowsersync/api
[isabell@stardust api]$ npm install
[isabell@stardust api]$ [...]
[isabell@stardust api]$ npm audit fix
[isabell@stardust api]$ [...]
[isabell@stardust api]$
Configuration
Warning
You are recommended to look also at the other configuration settings. For example: If you plan to use only a single account you should limit the number of accounts.
Copy the sample configuration file:
[isabell@stardust api]$ cp config/settings.default.json config/settings.json
Use a your favourite text editor and edit the file settings.json.
At least the server.host
and db.username
and db.password
have to be changed.
Furthermore you should change the log path:
{
"allowedOrigins": [],
"dailyNewSyncsLimit": 3,
"db": {
"authSource": "admin",
"connTimeout": 30000,
"host": "127.0.0.1",
"name": "xbrowsersync",
"username": "xbrowsersyncdb",
"password": "<password>",
"port": 27017
},
"log": {
"file": {
"enabled": true,
"level": "info",
"path": "/home/<username/xbrowsersync/api/log/xbrowsersync.log",
"rotatedFilesToKeep": 5,
"rotationPeriod": "1d"
},
"stdout": {
"enabled": true,
"level": "info"
}
},
"maxSyncs": 5242,
"maxSyncSize": 512000,
"server": {
"behindProxy": false,
"host": "0.0.0.0",
"https": {
"certPath": "",
"enabled": false,
"keyPath": ""
},
"port": 8080
},
"status": {
"allowNewSyncs": true,
"message": "",
"online": true
},
"tests": {
"db": "xbrowsersynctest",
"port": 8081
},
"throttle": {
"maxRequests": 1000,
"timeWindow": 300000
}
}
Create a service & start xBrowserSync
Create a service file under ~/etc/services.d/xbrowsersync.ini
and replace <username>
with your Uberspace username:
[program:xbrowsersync] command=node /home/<username>/xbrowsersync/api/dist/api.js startsecs=60 autostart=yes autorestart=yes
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
Using xBrowserSync
If your installation was successful you now can reach xBrowserSync by pointing with your browser to your specified domain and see a default status page.
Warning
Always take a backup of your browsers bookmarks. For example by using your browsers bookmark export function before start using xBrowserSync.
Now you can install the xBrowserSync AddOn to your Browser. Open the settings panel and enter your personal xBrowserSync URL. Then go back and follow the AddOn instructions.
Updates
Note
Check the update feed regularly to stay informed about the newest version.
If there is a new version available, update your branch according to the version number (v1.1.18
)
[isabell@stardust ~]$ cd ~/xbrowsersync/api
[isabell@stardust api]$ git pull origin v1.1.18
[isabell@stardust api]$
Tested with xBrowserSync 1.1.18, Uberspace 7.2.8.2
Written by: Phil <development@beph.de>