

Using BitTorrent Sync to live-edit or deploy websites - rvavruch
http://antler.co.za/2014/06/using-bittorrent-sync-to-live-edit-or-deploy-websites/

======
euank
This is a bad idea for several reasons.

The first issue is security. Loads of text editors create temporary files
(.swp, .php~, etc) in the same directory as the file you're editing. These can
render as text instead of going through php, thus revealing things like
database secrets and such. Now, this problem won't always occur and can be
configured around.

However, perhaps the bigger problem is that this is simply a bad workflow when
a better one exists. For "live editing", run a local webserver. Don't expose
your playing around to the world, potentially breaking your site for others.
Heck, if it's a static site, just run "python -m SimpleHTTPServer" if you
like. Second, for deploying, you should have a better process than "sync this
directory". Specifically, you should have git hooks that handle deployment if
you want don't-think-about-it instant deployment. Preferably you have CI that
deploys after it passes a few tests. Using git also has other benefits like
letting you have commit messages, easy rollbacks, different branches (which
you can auto-deploy to test / dev / etc).

Basically, the problem with using Dropbox or BTSync to edit websites is that
you rarely want to throw partial changes to the world, and file sync programs
like to sync as often as possible. It's a cool idea, but those sync programs
simply don't replace proper version control and CI.

I'd even prefer rsync if you're not using version control simply so you can
control _when_ it syncs and setup complex excludes / shell scripts to run
around it. You could easily have a script that runs a minimizer and then
rsyncs the output while having rsync exclude any potentially accidental files.
You can't do that nearly as easily with the workflow the author is talking
about.

~~~
smurfpandey
I used to sync my publish folder with btsync but after facing issues, looking
into proper tools now. Also i am a newbie, so instead of chef or puppet, I am
looking into CI tools and their deployment capabilities now. As far as i know,
tools like chef provides you full server configuration management. I am
guessing with EC2 custom AMIs and Teamcity i will be able to pull it off. What
do you think?

~~~
euank
I've never used Teamcity, but it looks nice. I do agree chef/puppet can be
overkill when you can just do custom AMIs. Definitely make sure you're using
proper version control... Honestly, you don't give enough information for a
proper opinion, but it'd probably be more informative to just do what you
think is best and see how it works out. Ultimately the best workflow is the
one that works (even when things go wrong).

~~~
smurfpandey
What more info you would like to know? We already have SVN in place. We are
developing asp.net web app, and currently i manually migrate changes to
release branch and publish from that branch.

------
desireco42
So I am big fan of BTSync, it works really well and displaced used of DropBox
mostly. I use DB only with apps on ipad that have that integration.

I think both use dropbox or btsync for this is a little weird. I wouldn't do
it. It is not hard to publish sites.

------
inthewoods
We're looking at deploying a static site generator - but one issue I've run
into is how to allow our content folks to use the system. Ideally, the files
would be stored in Github and then, on commit, the result are compiled and
pushed to a staging server. We've been looking at Jenkins for managing the
process, but it seems a bit heavy handed - anybody have any other suggestions?

------
smurfpandey
I was using it to deploy my web apps, and keep my 2 servers in sync. But
lately i am facing issues with it. Once in a while my bittorrent sync on
server shows No device connected, even if my local machine is online.
Thankfully i am using ec2, so spinning up a new instance from few days old AMI
is easy and usually btsync starts to work again on the new server. Now looking
into different solutions.

~~~
rvavruch
A commenter on my blog post suggested Syncthing
([http://syncthing.net/](http://syncthing.net/)) as an alternative.

~~~
smurfpandey
I remember seeing this earlier. Looks good. But i am looking towards solutions
which can be integrated with our version control. Maybe Chef or Puppet

~~~
rvavruch
Have a look at Docker ([http://www.docker.com/](http://www.docker.com/)), I
was introduced to it recently and it looks like a powerful yet simple
alternative to Chef or Puppet.

~~~
smurfpandey
Docker is linux only, and we are a windows shop. So docker not an alternative
for me

