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 + + + + + + + + + + + + + +
KeyTypeDescriptionDefault
['mongodb']['bacon']Booleanwhether to include bacontrue
+ +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 + + + + + + + + + + + + + +
KeyTypeDescriptionDefault
['nodejs']['bacon']Booleanwhether to include bacontrue
+ +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 + + + + + + + + + + + + + +
KeyTypeDescriptionDefault
['redis']['bacon']Booleanwhether to include bacontrue
+ +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 + + + + + + + + + + + + + +
KeyTypeDescriptionDefault
['sharelatex']['bacon']Booleanwhether to include bacontrue
+ +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: ""