Giter Club home page Giter Club logo

xsyn's Introduction

xSyn Logo

Compact server implementing xBrowserSync API using Golang and BoltDB; supports API version 1.1.4 (Oct 2018)

Easy to deploy via Docker, xSyn provides a lean server for privately hosting your own bookmarks sync store. As of writing, xBrowserSync is available for Chrome, Firefox, Android - It's really good!

Configuring

xSyn pulls configuration from a TOML file during boot and allows environment variable overloads for all the values. Easy to setup and easy to tune.

Check prod.toml for all available settings and override names.

Securing

xSyn can be run unsecured, with TLS via provided keys or automatically secured via Let's Encrypt.

It is possible to run a special route that toggles the Accepting New Syncs value while running, so one can open/close the gates on a public server to limit users manually.

Rate-limiting is enabled by default on all routes and is easily configurable.


DockerHub

An up-to-date build is available at hdenholm/xsyn:latest

Note that build dates are stamped into the published images, which you can view in the log on startup (with release_mode / XS_SRV_RELEASE set to false so you can see the Info logs)

Azure

I have a test instance running on Azure using their slightly restrictive Docker support for App Services.

In the portal, navigate to Application Settings, make sure WEBSITES_ENABLE_APP_SERVICE_STORAGE is enabled. With a default configuration file, add WEBSITES_PORT and set it to 80 - remember to update it if you set the port / XS_SRV_PORT config value.

Because Azure doesn't let you manually configure volume mapping, we have to override the default file for the BoltDB. Set XS_BOLT_FILE to /home/site/store.db (or anything under the /home/site folder)

Note that currently there is no way to use Let's Encrypt on Azure App Services as of writing as it requires more than one port to be exposed, and Azure doesn't allow this.

AWS

xSyn works on ECS easily, including full Let's Encrypt support if you assign an EIP and map it to an owned domain.

I have a simple example task template over here - tested, but not a lot. Note this has LE enabled, so either disable that or set your own domain name up before you kick it off.


Todo

  • Tests

As it stands, xSyn works great for a private xBrowserSync server - I've been running with it for about a year - and I've poked it about on a few different platforms, but it really needs some actual tests and fuzzing done

xsyn's People

Contributors

ishani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xsyn's Issues

Questions about base image

First of all thank you for your effort to provide such a lean and compact implementation of xSyncBrowser api server.
I noticed the base image you used was centurylink/ca-certs. According to the DockerHub page of that image, it was meant to be used as a base image for images that require certificate verification for out-bound SSL connections. xSync is a server if I read it correctly, so what functionality is it to require out-bound SSL connections? Is it the ACME-related certificate automation?
Another question is, the centurylink/ca-certs image you used has not been updated for a long time, and its CA cert list might probably be outdated. Shall we consider using another actively maintained ca-certs image instead?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.