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
|
template_files
|
||||||
|
|
||||||
db.sqlite
|
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