diff --git a/server-ce/.gitignore b/server-ce/.gitignore
index 2b808bda8b..f874ec7375 100644
--- a/server-ce/.gitignore
+++ b/server-ce/.gitignore
@@ -14,3 +14,5 @@ user_files
template_files
db.sqlite
+
+.vagrant
diff --git a/server-ce/Vagrantfile b/server-ce/Vagrantfile
new file mode 100644
index 0000000000..40fa80750f
--- /dev/null
+++ b/server-ce/Vagrantfile
@@ -0,0 +1,52 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+ config.vm.box = "ubuntu-12.04"
+ config.vm.box_url = "http://files.vagrantup.com/precise64.box"
+
+ config.vm.network :forwarded_port, guest: 3000, host: 3000
+
+ config.ssh.forward_agent = true
+
+ config.vm.provider "virtualbox" do |v|
+ v.memory = 1024
+ end
+
+ config.vm.provision :chef_solo do |chef|
+ chef.cookbooks_path = "chef/cookbooks"
+ chef.add_recipe 'redis-server'
+ chef.add_recipe 'mongodb'
+ chef.add_recipe 'nodejs'
+ chef.add_recipe 'sharelatex'
+
+ # You may also specify custom JSON attributes:
+ chef.json = {}
+ end
+
+ # Enable provisioning with chef server, specifying the chef server URL,
+ # and the path to the validation key (relative to this Vagrantfile).
+ #
+ # The Opscode Platform uses HTTPS. Substitute your organization for
+ # ORGNAME in the URL and validation key.
+ #
+ # If you have your own Chef Server, use the appropriate URL, which may be
+ # HTTP instead of HTTPS depending on your configuration. Also change the
+ # validation key to validation.pem.
+ #
+ # config.vm.provision :chef_client do |chef|
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+ # chef.validation_key_path = "ORGNAME-validator.pem"
+ # end
+ #
+ # If you're using the Opscode platform, your validator client is
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
+ #
+ # If you have your own Chef Server, the default validation client name is
+ # chef-validator, unless you changed the configuration.
+ #
+ # chef.validation_client_name = "ORGNAME-validator"
+end
diff --git a/server-ce/chef/.chef/knife.rb b/server-ce/chef/.chef/knife.rb
new file mode 100644
index 0000000000..6a49a42b89
--- /dev/null
+++ b/server-ce/chef/.chef/knife.rb
@@ -0,0 +1,3 @@
+current_dir = File.dirname(__FILE__)
+cookbook_path ["#{current_dir}/../cookbooks"]
+
diff --git a/server-ce/chef/cookbooks/mongodb/CHANGELOG.md b/server-ce/chef/cookbooks/mongodb/CHANGELOG.md
new file mode 100644
index 0000000000..5be9eb31c9
--- /dev/null
+++ b/server-ce/chef/cookbooks/mongodb/CHANGELOG.md
@@ -0,0 +1,12 @@
+# CHANGELOG for mongodb
+
+This file is used to list changes made in each version of mongodb.
+
+## 0.1.0:
+
+* Initial release of mongodb
+
+- - -
+Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
+
+The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
diff --git a/server-ce/chef/cookbooks/mongodb/README.md b/server-ce/chef/cookbooks/mongodb/README.md
new file mode 100644
index 0000000000..8ea30c6ce4
--- /dev/null
+++ b/server-ce/chef/cookbooks/mongodb/README.md
@@ -0,0 +1,68 @@
+mongodb Cookbook
+================
+TODO: Enter the cookbook description here.
+
+e.g.
+This cookbook makes your favorite breakfast sandwhich.
+
+Requirements
+------------
+TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
+
+e.g.
+#### packages
+- `toaster` - mongodb needs toaster to brown your bagel.
+
+Attributes
+----------
+TODO: List you cookbook attributes here.
+
+e.g.
+#### mongodb::default
+
+
+ Key |
+ Type |
+ Description |
+ Default |
+
+
+ ['mongodb']['bacon'] |
+ Boolean |
+ whether to include bacon |
+ true |
+
+
+
+Usage
+-----
+#### mongodb::default
+TODO: Write usage instructions for each cookbook.
+
+e.g.
+Just include `mongodb` in your node's `run_list`:
+
+```json
+{
+ "name":"my_node",
+ "run_list": [
+ "recipe[mongodb]"
+ ]
+}
+```
+
+Contributing
+------------
+TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
+
+e.g.
+1. Fork the repository on Github
+2. Create a named feature branch (like `add_component_x`)
+3. Write you change
+4. Write tests for your change (if applicable)
+5. Run the tests, ensuring they all pass
+6. Submit a Pull Request using Github
+
+License and Authors
+-------------------
+Authors: TODO: List authors
diff --git a/server-ce/chef/cookbooks/mongodb/metadata.rb b/server-ce/chef/cookbooks/mongodb/metadata.rb
new file mode 100644
index 0000000000..2a39cb29c8
--- /dev/null
+++ b/server-ce/chef/cookbooks/mongodb/metadata.rb
@@ -0,0 +1,8 @@
+name 'mongodb'
+maintainer 'ShareLaTeX'
+maintainer_email 'team@sharelatex.com'
+license 'AGPLv3'
+description 'Installs/Configures mongodb'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version '0.1.0'
+depends 'apt'
diff --git a/server-ce/chef/cookbooks/mongodb/recipes/default.rb b/server-ce/chef/cookbooks/mongodb/recipes/default.rb
new file mode 100644
index 0000000000..56b251c261
--- /dev/null
+++ b/server-ce/chef/cookbooks/mongodb/recipes/default.rb
@@ -0,0 +1,19 @@
+#
+# Cookbook Name:: mongodb
+# Recipe:: default
+#
+# Copyright 2014, ShareLaTeX
+#
+
+# See http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
+apt_repository 'mongodb-10gen' do
+ uri 'http://downloads-distro.mongodb.org/repo/ubuntu-upstart'
+ distribution 'dist'
+ components ['10gen']
+ keyserver 'keyserver.ubuntu.com'
+ key '7F0CEB10'
+end
+
+package 'mongodb-10gen' do
+ action :install
+end
\ No newline at end of file
diff --git a/server-ce/chef/cookbooks/nodejs/CHANGELOG.md b/server-ce/chef/cookbooks/nodejs/CHANGELOG.md
new file mode 100644
index 0000000000..8267e4fa26
--- /dev/null
+++ b/server-ce/chef/cookbooks/nodejs/CHANGELOG.md
@@ -0,0 +1,12 @@
+# CHANGELOG for nodejs
+
+This file is used to list changes made in each version of nodejs.
+
+## 0.1.0:
+
+* Initial release of nodejs
+
+- - -
+Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
+
+The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
diff --git a/server-ce/chef/cookbooks/nodejs/README.md b/server-ce/chef/cookbooks/nodejs/README.md
new file mode 100644
index 0000000000..daec67045d
--- /dev/null
+++ b/server-ce/chef/cookbooks/nodejs/README.md
@@ -0,0 +1,68 @@
+nodejs Cookbook
+===============
+TODO: Enter the cookbook description here.
+
+e.g.
+This cookbook makes your favorite breakfast sandwhich.
+
+Requirements
+------------
+TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
+
+e.g.
+#### packages
+- `toaster` - nodejs needs toaster to brown your bagel.
+
+Attributes
+----------
+TODO: List you cookbook attributes here.
+
+e.g.
+#### nodejs::default
+
+
+ Key |
+ Type |
+ Description |
+ Default |
+
+
+ ['nodejs']['bacon'] |
+ Boolean |
+ whether to include bacon |
+ true |
+
+
+
+Usage
+-----
+#### nodejs::default
+TODO: Write usage instructions for each cookbook.
+
+e.g.
+Just include `nodejs` in your node's `run_list`:
+
+```json
+{
+ "name":"my_node",
+ "run_list": [
+ "recipe[nodejs]"
+ ]
+}
+```
+
+Contributing
+------------
+TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
+
+e.g.
+1. Fork the repository on Github
+2. Create a named feature branch (like `add_component_x`)
+3. Write you change
+4. Write tests for your change (if applicable)
+5. Run the tests, ensuring they all pass
+6. Submit a Pull Request using Github
+
+License and Authors
+-------------------
+Authors: TODO: List authors
diff --git a/server-ce/chef/cookbooks/nodejs/metadata.rb b/server-ce/chef/cookbooks/nodejs/metadata.rb
new file mode 100644
index 0000000000..9a3d03ffdf
--- /dev/null
+++ b/server-ce/chef/cookbooks/nodejs/metadata.rb
@@ -0,0 +1,8 @@
+name 'nodejs'
+maintainer 'YOUR_COMPANY_NAME'
+maintainer_email 'YOUR_EMAIL'
+license 'AGPLv3'
+description 'Installs/Configures nodejs'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version '0.1.0'
+depends 'apt'
diff --git a/server-ce/chef/cookbooks/nodejs/recipes/default.rb b/server-ce/chef/cookbooks/nodejs/recipes/default.rb
new file mode 100644
index 0000000000..3da73c4764
--- /dev/null
+++ b/server-ce/chef/cookbooks/nodejs/recipes/default.rb
@@ -0,0 +1,24 @@
+#
+# Cookbook Name:: nodejs
+# Recipe:: default
+#
+# Copyright 2014, ShareLaTeX
+#
+
+# See https://launchpad.net/~chris-lea/+archive/nodejs
+apt_repository 'node.js' do
+ uri 'http://ppa.launchpad.net/chris-lea/node.js/ubuntu'
+ distribution node['lsb']['codename']
+ components ['main']
+ keyserver 'keyserver.ubuntu.com'
+ key 'C7917B12'
+end
+
+package 'nodejs' do
+ action :install
+end
+
+execute 'install grunt' do
+ command "npm install -g grunt-cli"
+ not_if "npm --no-color -g ls 'grunt-cli' 2> /dev/null | grep 'grunt-cli'"
+end
\ No newline at end of file
diff --git a/server-ce/chef/cookbooks/redis-server/CHANGELOG.md b/server-ce/chef/cookbooks/redis-server/CHANGELOG.md
new file mode 100644
index 0000000000..7e2b5bbee2
--- /dev/null
+++ b/server-ce/chef/cookbooks/redis-server/CHANGELOG.md
@@ -0,0 +1,12 @@
+# CHANGELOG for redis
+
+This file is used to list changes made in each version of redis.
+
+## 0.1.0:
+
+* Initial release of redis
+
+- - -
+Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
+
+The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
diff --git a/server-ce/chef/cookbooks/redis-server/README.md b/server-ce/chef/cookbooks/redis-server/README.md
new file mode 100644
index 0000000000..d344c7a185
--- /dev/null
+++ b/server-ce/chef/cookbooks/redis-server/README.md
@@ -0,0 +1,68 @@
+redis Cookbook
+==============
+TODO: Enter the cookbook description here.
+
+e.g.
+This cookbook makes your favorite breakfast sandwhich.
+
+Requirements
+------------
+TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
+
+e.g.
+#### packages
+- `toaster` - redis needs toaster to brown your bagel.
+
+Attributes
+----------
+TODO: List you cookbook attributes here.
+
+e.g.
+#### redis::default
+
+
+ Key |
+ Type |
+ Description |
+ Default |
+
+
+ ['redis']['bacon'] |
+ Boolean |
+ whether to include bacon |
+ true |
+
+
+
+Usage
+-----
+#### redis::default
+TODO: Write usage instructions for each cookbook.
+
+e.g.
+Just include `redis` in your node's `run_list`:
+
+```json
+{
+ "name":"my_node",
+ "run_list": [
+ "recipe[redis]"
+ ]
+}
+```
+
+Contributing
+------------
+TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
+
+e.g.
+1. Fork the repository on Github
+2. Create a named feature branch (like `add_component_x`)
+3. Write you change
+4. Write tests for your change (if applicable)
+5. Run the tests, ensuring they all pass
+6. Submit a Pull Request using Github
+
+License and Authors
+-------------------
+Authors: TODO: List authors
diff --git a/server-ce/chef/cookbooks/redis-server/metadata.rb b/server-ce/chef/cookbooks/redis-server/metadata.rb
new file mode 100644
index 0000000000..41d0512ede
--- /dev/null
+++ b/server-ce/chef/cookbooks/redis-server/metadata.rb
@@ -0,0 +1,8 @@
+name 'redis-server'
+maintainer 'ShareLaTeX'
+maintainer_email 'team@sharelatex.com'
+license 'AGPLv3'
+description 'Installs/Configures redis-server'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version '0.1.0'
+depends 'apt'
diff --git a/server-ce/chef/cookbooks/redis-server/recipes/default.rb b/server-ce/chef/cookbooks/redis-server/recipes/default.rb
new file mode 100644
index 0000000000..886c6475c4
--- /dev/null
+++ b/server-ce/chef/cookbooks/redis-server/recipes/default.rb
@@ -0,0 +1,20 @@
+#
+# Cookbook Name:: redis
+# Recipe:: default
+#
+# Copyright 2014, ShareLaTeX
+#
+
+# See https://launchpad.net/~chris-lea/+archive/redis-server
+apt_repository 'redis-server' do
+ uri 'http://ppa.launchpad.net/chris-lea/redis-server/ubuntu'
+ distribution node['lsb']['codename']
+ components ['main']
+ keyserver 'keyserver.ubuntu.com'
+ key 'C7917B12'
+end
+
+package 'redis-server' do
+ action :upgrade
+ options "--force-yes"
+end
\ No newline at end of file
diff --git a/server-ce/chef/cookbooks/sharelatex/CHANGELOG.md b/server-ce/chef/cookbooks/sharelatex/CHANGELOG.md
new file mode 100644
index 0000000000..f6af89fc28
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/CHANGELOG.md
@@ -0,0 +1,12 @@
+# CHANGELOG for sharelatex
+
+This file is used to list changes made in each version of sharelatex.
+
+## 0.1.0:
+
+* Initial release of sharelatex
+
+- - -
+Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
+
+The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
diff --git a/server-ce/chef/cookbooks/sharelatex/README.md b/server-ce/chef/cookbooks/sharelatex/README.md
new file mode 100644
index 0000000000..f47306d8b1
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/README.md
@@ -0,0 +1,68 @@
+sharelatex Cookbook
+===================
+TODO: Enter the cookbook description here.
+
+e.g.
+This cookbook makes your favorite breakfast sandwhich.
+
+Requirements
+------------
+TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
+
+e.g.
+#### packages
+- `toaster` - sharelatex needs toaster to brown your bagel.
+
+Attributes
+----------
+TODO: List you cookbook attributes here.
+
+e.g.
+#### sharelatex::default
+
+
+ Key |
+ Type |
+ Description |
+ Default |
+
+
+ ['sharelatex']['bacon'] |
+ Boolean |
+ whether to include bacon |
+ true |
+
+
+
+Usage
+-----
+#### sharelatex::default
+TODO: Write usage instructions for each cookbook.
+
+e.g.
+Just include `sharelatex` in your node's `run_list`:
+
+```json
+{
+ "name":"my_node",
+ "run_list": [
+ "recipe[sharelatex]"
+ ]
+}
+```
+
+Contributing
+------------
+TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
+
+e.g.
+1. Fork the repository on Github
+2. Create a named feature branch (like `add_component_x`)
+3. Write you change
+4. Write tests for your change (if applicable)
+5. Run the tests, ensuring they all pass
+6. Submit a Pull Request using Github
+
+License and Authors
+-------------------
+Authors: TODO: List authors
diff --git a/server-ce/chef/cookbooks/sharelatex/metadata.rb b/server-ce/chef/cookbooks/sharelatex/metadata.rb
new file mode 100644
index 0000000000..a6562c6cff
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/metadata.rb
@@ -0,0 +1,7 @@
+name 'sharelatex'
+maintainer 'YOUR_COMPANY_NAME'
+maintainer_email 'YOUR_EMAIL'
+license 'All rights reserved'
+description 'Installs/Configures sharelatex'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version '0.1.0'
diff --git a/server-ce/chef/cookbooks/sharelatex/providers/app.rb b/server-ce/chef/cookbooks/sharelatex/providers/app.rb
new file mode 100644
index 0000000000..335dfa1627
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/providers/app.rb
@@ -0,0 +1,107 @@
+action :start do
+ package "git"
+ package "build-essential"
+
+ r = new_resource
+
+ deploy_to = "/var/www/" + r.name
+
+ node_environment = "production"
+
+ directory deploy_to do
+ user r.user if r.user
+ recursive true
+ end
+
+ env = {
+ "HOME" => deploy_to
+ }
+
+ directory "#{deploy_to}/releases" do
+ user r.user if r.user
+ recursive true
+ end
+
+ shared_dir = "#{deploy_to}/shared"
+ directory shared_dir do
+ user r.user if r.user
+ recursive true
+ end
+ directory "#{shared_dir}/config" do
+ user r.user if r.user
+ recursive true
+ end
+ directory "#{shared_dir}/log" do
+ user r.user if r.user
+ recursive true
+ end
+
+ deploy_revision deploy_to do
+ repository r.repository
+ revision r.revision
+ user r.user if r.user
+
+ purge_before_symlink [
+ "log", "config", "node_modules"
+ ]
+ create_dirs_before_symlink []
+ symlinks({
+ "log" => "log",
+ "config" => "config"
+ })
+ symlink_before_migrate({
+ "node_modules" => "node_modules"
+ })
+
+ environment env
+
+ migrate true
+ migration_command "npm install; grunt install"
+
+ before_migrate do
+ directory "#{deploy_to}/shared/node_modules" do
+ user r.user if r.user
+ recursive true
+ end
+ end
+
+ #notifies :restart, "service[#{r.name}]"
+ end
+
+ file "/etc/init/#{r.name}.conf" do
+ content <<-EOS
+ description "#{r.name}"
+ author "ShareLaTeX "
+
+ start on started mountall
+ stop on shutdown
+
+ respawn
+
+ limit nofile 8192 8192
+
+ script
+ echo $$ > /var/run/#{r.name}.pid
+ chdir #{deploy_to}/current
+ exec sudo -u #{r.user} env NODE_ENV=#{node_environment} SHARELATEX_CONFIG=/etc/sharelatex/settings.coffee node app.js >> log/production.log
+ end script
+ EOS
+ end
+
+ service "#{r.name}" do
+ provider Chef::Provider::Service::Upstart
+ action :start
+ end
+
+ file "/etc/logrotate.d/#{r.name}" do
+ content <<-EOS
+ #{deploy_to}/shared/log/*.log {
+ rotate 7
+ size 5M
+ missingok
+ compress
+ copytruncate
+ }
+ EOS
+ end
+end
\ No newline at end of file
diff --git a/server-ce/chef/cookbooks/sharelatex/recipes/default.rb b/server-ce/chef/cookbooks/sharelatex/recipes/default.rb
new file mode 100644
index 0000000000..72f4c76b07
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/recipes/default.rb
@@ -0,0 +1,38 @@
+#
+# Cookbook Name:: sharelatex
+# Recipe:: default
+#
+# Copyright 2014, ShareLaTeX
+#
+
+directory "/etc/sharelatex"
+
+template "/etc/sharelatex/settings.coffee" do
+ mode 0400
+ user "www-data"
+end
+
+sharelatex_app "web-sharelatex" do
+ repository "https://github.com/sharelatex/web-sharelatex.git"
+ revision "master"
+end
+
+sharelatex_app "document-updater-sharelatex" do
+ repository "https://github.com/sharelatex/document-updater-sharelatex.git"
+ revision "master"
+end
+
+sharelatex_app "filestore-sharelatex" do
+ repository "https://github.com/sharelatex/filestore-sharelatex.git"
+ revision "master"
+end
+
+sharelatex_app "track-changes-sharelatex" do
+ repository "https://github.com/sharelatex/track-changes-sharelatex.git"
+ revision "master"
+end
+
+sharelatex_app "clsi-sharelatex" do
+ repository "https://github.com/sharelatex/clsi-sharelatex.git"
+ revision "master"
+end
\ No newline at end of file
diff --git a/server-ce/chef/cookbooks/sharelatex/resources/app.rb b/server-ce/chef/cookbooks/sharelatex/resources/app.rb
new file mode 100644
index 0000000000..22b4cacf60
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/resources/app.rb
@@ -0,0 +1,11 @@
+actions :start
+
+attribute :revision, :kind_of => String, :default => "master"
+attribute :repository, :kind_of => String
+attribute :user, :kind_of => String, :default => "www-data"
+
+def initialize(*args)
+ super
+ @action = :start
+end
+
diff --git a/server-ce/chef/cookbooks/sharelatex/templates/default/settings.coffee.erb b/server-ce/chef/cookbooks/sharelatex/templates/default/settings.coffee.erb
new file mode 100644
index 0000000000..ac1a544368
--- /dev/null
+++ b/server-ce/chef/cookbooks/sharelatex/templates/default/settings.coffee.erb
@@ -0,0 +1,268 @@
+Path = require('path')
+http = require('http')
+http.globalAgent.maxSockets = 300
+
+# Make time interval config easier.
+seconds = 1000
+minutes = 60 * seconds
+
+# These credentials are used for authenticating api requests
+# between services that may need to go over public channels
+httpAuthUser = "sharelatex"
+httpAuthPass = "password"
+httpAuthUsers = {}
+httpAuthUsers[httpAuthUser] = httpAuthPass
+
+sessionSecret = "secret-please-change"
+
+module.exports =
+ # File storage
+ # ------------
+ #
+ # ShareLaTeX needs somewhere to store binary files like images.
+ # There are currently two options:
+ # Your local filesystem (the default)
+ # Amazon S3
+ filestore:
+ # which backend persistor to use.
+ # choices are
+ # s3 - Amazon S3
+ # fs - local filesystem
+ backend: "fs"
+ stores:
+ # where to store user and template binary files
+ #
+ # For Amazon S3 this is the bucket name to store binary files
+ #
+ # For local filesystem this is the directory to store the files in.
+ # This path must exist, not be tmpfs and be writable to by the user sharelatex is run as.
+ user_files: Path.resolve(__dirname + "/../user_files")
+ # Uncomment if you need to configure your S3 credentials
+ # s3:
+ # # if you are using S3, then fill in your S3 details below
+ # key: ""
+ # secret: ""
+
+ # Databases
+ # ---------
+ mongo:
+ url : 'mongodb://127.0.0.1/sharelatex'
+
+ redis:
+ web:
+ host: "localhost"
+ port: "6379"
+ password: ""
+
+ api:
+ host: "localhost"
+ port: "6379"
+ password: ""
+
+ mysql:
+ clsi:
+ database: "clsi"
+ username: "clsi"
+ password: ""
+ dialect: "sqlite"
+ storage: Path.resolve(__dirname + "/../db.sqlite")
+
+ # Service locations
+ # -----------------
+
+ # Configure which ports to run each service on. Generally you
+ # can leave these as they are unless you have some other services
+ # running which conflict, or want to run the web process on port 80.
+ internal:
+ web:
+ port: webPort = 3000
+ host: "localhost"
+ documentupdater:
+ port: docUpdaterPort = 3003
+ host: "localhost"
+ clsi:
+ port: clsiPort = 3013
+ host: "localhost"
+ filestore:
+ port: filestorePort = 3009
+ host: "localhost"
+ trackchanges:
+ port: trackchangesPort = 3015
+ host: "localhost"
+
+ # Tell each service where to find the other services. If everything
+ # is running locally then this is easy, but they exist as separate config
+ # options incase you want to run some services on remote hosts.
+ apis:
+ web:
+ url: "http://localhost:#{webPort}"
+ user: httpAuthUser
+ pass: httpAuthPass
+ documentupdater:
+ url : "http://localhost:#{docUpdaterPort}"
+ clsi:
+ url: "http://localhost:#{clsiPort}"
+ filestore:
+ url: "http://localhost:#{filestorePort}"
+ trackchanges:
+ url: "http://localhost:#{trackchangesPort}"
+ thirdPartyDataStore:
+ url : "http://localhost:3002"
+ emptyProjectFlushDelayMiliseconds: 5 * seconds
+ tags:
+ url :"http://localhost:3012"
+ spelling:
+ url : "http://localhost:3005"
+ versioning:
+ snapshotwaitms:3000
+ url: "http://localhost:4000"
+ username: httpAuthUser
+ password: httpAuthPass
+ recurly:
+ privateKey: ""
+ apiKey: ""
+ subdomain: ""
+ chat:
+ url: "http://localhost:3010"
+ templates:
+ port: 3007
+ blog:
+ port: 3008
+ templates_api:
+ url: "http://localhost:3007"
+
+ # Where your instance of ShareLaTeX can be found publically. Used in emails
+ # that are sent out, generated links, etc.
+ siteUrl : 'http://localhost:3000'
+
+ # Same, but with http auth credentials.
+ httpAuthSiteUrl: 'http://#{httpAuthUser}:#{httpAuthPass}@localhost:3000'
+
+ # Security
+ # --------
+ security:
+ sessionSecret: sessionSecret
+
+ httpAuthUsers: httpAuthUsers
+
+ # Default features
+ # ----------------
+ #
+ # You can select the features that are enabled by default for new
+ # new users.
+ defaultFeatures: defaultFeatures =
+ collaborators: -1
+ dropbox: true
+ versioning: true
+
+ plans: plans = [{
+ planCode: "personal"
+ name: "Personal"
+ price: 0
+ features: defaultFeatures
+ }]
+
+ # Spelling languages
+ # ------------------
+ #
+ # You must have the corresponding aspell package installed to
+ # be able to use a language.
+ languages: [
+ {name: "English", code: "en"}
+ ]
+
+ # Email support
+ # -------------
+ #
+ # ShareLaTeX uses nodemailer (http://www.nodemailer.com/) to send transactional emails.
+ # To see the range of transport and options they support, see http://www.nodemailer.com/docs/transports
+ #email:
+ # Who should emails be from by default?
+ # fromAddress: ""
+ # The default replyTo field, if it should be set
+ # replyTo: ""
+ # lifecycle: false
+ ## Example transport and parameter settings for Amazon SES
+ # transport: "SES"
+ # parameters:
+ # AWSAccessKeyID: ""
+ # AWSSecretKey: ""
+
+
+ # Third party services
+ # --------------------
+ #
+ # ShareLaTeX's regular newsletter is managed by Markdown mail. Add your
+ # credentials here to integrate with this.
+ # markdownmail:
+ # secret: ""
+ # list_id: ""
+ #
+ # Fill in your unique token from various analytics services to enable
+ # them.
+ # analytics:
+ # mixpanel:
+ # token: ""
+ # ga:
+ # token: ""
+ # heap:
+ # token: ""
+ #
+ # ShareLaTeX's help desk is provided by tenderapp.com
+ # tenderUrl: ""
+ #
+
+ # Production Settings
+ # -------------------
+
+ # Should javascript assets be served minified or not. Note that you will
+ # need to run `grunt compile:minify` within the web-sharelatex directory
+ # to generate these.
+ useMinifiedJs: false
+
+ # Should static assets be sent with a header to tell the browser to cache
+ # them.
+ cacheStaticAssets: false
+
+ # If you are running ShareLaTeX over https, set this to true to send the
+ # cookie with a secure flag (recommended).
+ secureCookie: false
+
+ # Internal configs
+ # ----------------
+ path:
+ # If we ever need to write something to disk (e.g. incoming requests
+ # that need processing but may be too big for memory, then write
+ # them to disk here).
+ dumpFolder: Path.resolve "data/dumpFolder"
+ # Where to write the project to disk before running LaTeX on it
+ compilesDir: Path.resolve(__dirname + "/../compiles")
+ # Where to cache downloaded URLs for the CLSI
+ clsiCacheDir: Path.resolve(__dirname + "/../cache")
+
+ # Automatic Snapshots
+ # -------------------
+ automaticSnapshots:
+ # How long should we wait after the user last edited to
+ # take a snapshot?
+ waitTimeAfterLastEdit: 5 * minutes
+ # Even if edits are still taking place, this is maximum
+ # time to wait before taking another snapshot.
+ maxTimeBetweenSnapshots: 30 * minutes
+
+ # Smoke test
+ # ----------
+ # Provide log in credentials and a project to be able to run
+ # some basic smoke tests to check the core functionality.
+ #
+ # smokeTest:
+ # user: ""
+ # password: ""
+ # projectId: ""
+
+ # Filestore health check
+ # ----------------------
+ # Project and file details to check in filestore when calling /health_check
+ # health_check:
+ # project_id: ""
+ # file_id: ""