mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Create Vagrant + Chef config for setting up ShareLaTeX
This commit is contained in:
parent
0e7b9d3ab1
commit
38380b1a5f
22 changed files with 895 additions and 0 deletions
2
server-ce/.gitignore
vendored
2
server-ce/.gitignore
vendored
|
@ -14,3 +14,5 @@ user_files
|
|||
template_files
|
||||
|
||||
db.sqlite
|
||||
|
||||
.vagrant
|
||||
|
|
52
server-ce/Vagrantfile
vendored
Normal file
52
server-ce/Vagrantfile
vendored
Normal file
|
@ -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
|
3
server-ce/chef/.chef/knife.rb
Normal file
3
server-ce/chef/.chef/knife.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
current_dir = File.dirname(__FILE__)
|
||||
cookbook_path ["#{current_dir}/../cookbooks"]
|
||||
|
12
server-ce/chef/cookbooks/mongodb/CHANGELOG.md
Normal file
12
server-ce/chef/cookbooks/mongodb/CHANGELOG.md
Normal file
|
@ -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.
|
68
server-ce/chef/cookbooks/mongodb/README.md
Normal file
68
server-ce/chef/cookbooks/mongodb/README.md
Normal file
|
@ -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
|
||||
<table>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><tt>['mongodb']['bacon']</tt></td>
|
||||
<td>Boolean</td>
|
||||
<td>whether to include bacon</td>
|
||||
<td><tt>true</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
8
server-ce/chef/cookbooks/mongodb/metadata.rb
Normal file
8
server-ce/chef/cookbooks/mongodb/metadata.rb
Normal file
|
@ -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'
|
19
server-ce/chef/cookbooks/mongodb/recipes/default.rb
Normal file
19
server-ce/chef/cookbooks/mongodb/recipes/default.rb
Normal file
|
@ -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
|
12
server-ce/chef/cookbooks/nodejs/CHANGELOG.md
Normal file
12
server-ce/chef/cookbooks/nodejs/CHANGELOG.md
Normal file
|
@ -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.
|
68
server-ce/chef/cookbooks/nodejs/README.md
Normal file
68
server-ce/chef/cookbooks/nodejs/README.md
Normal file
|
@ -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
|
||||
<table>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><tt>['nodejs']['bacon']</tt></td>
|
||||
<td>Boolean</td>
|
||||
<td>whether to include bacon</td>
|
||||
<td><tt>true</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
8
server-ce/chef/cookbooks/nodejs/metadata.rb
Normal file
8
server-ce/chef/cookbooks/nodejs/metadata.rb
Normal file
|
@ -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'
|
24
server-ce/chef/cookbooks/nodejs/recipes/default.rb
Normal file
24
server-ce/chef/cookbooks/nodejs/recipes/default.rb
Normal file
|
@ -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
|
12
server-ce/chef/cookbooks/redis-server/CHANGELOG.md
Normal file
12
server-ce/chef/cookbooks/redis-server/CHANGELOG.md
Normal file
|
@ -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.
|
68
server-ce/chef/cookbooks/redis-server/README.md
Normal file
68
server-ce/chef/cookbooks/redis-server/README.md
Normal file
|
@ -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
|
||||
<table>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><tt>['redis']['bacon']</tt></td>
|
||||
<td>Boolean</td>
|
||||
<td>whether to include bacon</td>
|
||||
<td><tt>true</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
8
server-ce/chef/cookbooks/redis-server/metadata.rb
Normal file
8
server-ce/chef/cookbooks/redis-server/metadata.rb
Normal file
|
@ -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'
|
20
server-ce/chef/cookbooks/redis-server/recipes/default.rb
Normal file
20
server-ce/chef/cookbooks/redis-server/recipes/default.rb
Normal file
|
@ -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
|
12
server-ce/chef/cookbooks/sharelatex/CHANGELOG.md
Normal file
12
server-ce/chef/cookbooks/sharelatex/CHANGELOG.md
Normal file
|
@ -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.
|
68
server-ce/chef/cookbooks/sharelatex/README.md
Normal file
68
server-ce/chef/cookbooks/sharelatex/README.md
Normal file
|
@ -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
|
||||
<table>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><tt>['sharelatex']['bacon']</tt></td>
|
||||
<td>Boolean</td>
|
||||
<td>whether to include bacon</td>
|
||||
<td><tt>true</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
7
server-ce/chef/cookbooks/sharelatex/metadata.rb
Normal file
7
server-ce/chef/cookbooks/sharelatex/metadata.rb
Normal file
|
@ -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'
|
107
server-ce/chef/cookbooks/sharelatex/providers/app.rb
Normal file
107
server-ce/chef/cookbooks/sharelatex/providers/app.rb
Normal file
|
@ -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 <team@sharelatex.com>"
|
||||
|
||||
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
|
38
server-ce/chef/cookbooks/sharelatex/recipes/default.rb
Normal file
38
server-ce/chef/cookbooks/sharelatex/recipes/default.rb
Normal file
|
@ -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
|
11
server-ce/chef/cookbooks/sharelatex/resources/app.rb
Normal file
11
server-ce/chef/cookbooks/sharelatex/resources/app.rb
Normal file
|
@ -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
|
||||
|
|
@ -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: ""
|
Loading…
Reference in a new issue