6687: install guide updates aimed at reducing jumping around during the process
[arvados.git] / doc / install / install-workbench-app.html.textile.liquid
1 ---
2 layout: default
3 navsection: installguide
4 title: Install Workbench
5 ...
6
7 h2. Install prerequisites
8
9 The Arvados package repository includes Workbench server package that can help automate much of the deployment.
10
11 h3(#install_ruby_and_bundler). Install Ruby and Bundler
12
13 {% include 'install_ruby_and_bundler' %}
14
15 h3(#build_tools_workbench). Build tools
16
17 * The Arvados Python SDK
18 * Graphviz
19 * Build tools to build gem dependencies
20 * Nginx
21
22 Workbench doesn't need its own database, so it does not need to have PostgreSQL installed.
23
24 On older distributions, you may need to use a backports repository to satisfy these requirements.  For example, on older Red Hat-based systems, consider using the "nginx16":https://www.softwarecollections.org/en/scls/rhscl/nginx16/ Software Collection.
25
26 On a Debian-based system, install the following packages:
27
28 <notextile>
29 <pre><code>~$ <span class="userinput">sudo apt-get install bison build-essential graphviz git nginx python-arvados-python-client arvados-workbench</span>
30 </code></pre>
31 </notextile>
32
33 On a Red Hat-based system, install the following packages:
34
35 <notextile>
36 <pre><code>~$ <span class="userinput">sudo yum install bison make automake gcc gcc-c++ graphviz git nginx python27-python-arvados-python-client arvados-workbench</span>
37 </code></pre>
38 </notextile>
39
40 {% include 'notebox_begin' %}
41
42 If you intend to use specific versions of these packages from Software Collections, you may have to adapt some of the package names to match; e.g., @nginx16@.
43
44 {% include 'notebox_end' %}
45
46 {% include 'note_python27_sc' %}
47
48 h2. Set up configuration files
49
50 The Workbench server package uses configuration files that you write to @/etc/arvados/workbench@ and ensures they're consistently deployed.  Create this directory and copy the example configuration files to it:
51
52 <notextile>
53 <pre><code>~$ <span class="userinput">sudo mkdir -p /etc/arvados/workbench</span>
54 ~$ <span class="userinput">sudo chmod 700 /etc/arvados/workbench</span>
55 ~$ <span class="userinput">sudo cp /var/www/arvados-workbench/current/config/application.yml.example /etc/arvados/workbench/application.yml</span>
56 </code></pre>
57 </notextile>
58
59 h2. Configure Workbench
60
61 Edit @/etc/arvados/workbench/application.yml@ following the instructions below.  The deployment script will consistently deploy this to Workbench's configuration directory.  Workbench reads both @application.yml@ and its own @config/application.defaults.yml@ file.  Values in @application.yml@ take precedence over the defaults that are defined in @config/application.defaults.yml@.  The @config/application.yml.example@ file is not read by Workbench and is provided for installation convenience only.
62
63 Consult @config/application.default.yml@ for a full list of configuration options.  Always put your local configuration in @/etc/arvados/workbench/application.yml@&mdash;never edit @config/application.default.yml@.
64
65 h3. secret_token
66
67 This application needs a secret token. Generate a new secret:
68
69 <notextile>
70 <pre><code>~$ <span class="userinput">ruby -e 'puts rand(2**400).to_s(36)'</span>
71 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
72 </code></pre>
73 </notextile>
74
75 Then put that value in the @secret_token@ field.
76
77 h3. arvados_login_base and arvados_v1_base
78
79 Point @arvados_login_base@ and @arvados_v1_base@ at your "API server":install-api-server.html. For example like this:
80
81 <notextile>
82 <pre><code>arvados_login_base: https://prefix_uuid.your.domain/login
83 arvados_v1_base: https://prefix_uuid.your.domain/arvados/v1
84 </code></pre>
85 </notextile>
86
87 h3. site_name
88
89 @site_name@ can be set to any arbitrary string. It is used to identify this Workbench to people visiting it.
90
91 h3. arvados_insecure_https
92
93 If the SSL certificate you use for your API server isn't an official certificate signed by a CA, make sure @arvados_insecure_https@ is @true@.
94
95 h3. Other options
96
97 Consult @application.default.yml@ for a full list of configuration options. Always put your local configuration in @application.yml@ instead of editing @application.default.yml@.
98
99 h2. Configure Piwik
100
101 In @/var/www/arvados-workbench/current/config@, copy @piwik.yml.example@ to @piwik.yml@ and edit to suit.
102
103 h2. Prepare the Workbench deployment
104
105 Now that all your configuration is in place, run @/usr/local/bin/arvados-workbench-upgrade.sh@.  This will install and check your configuration, and install necessary gems.
106
107 {% include 'notebox_begin' %}
108 You can safely ignore the following error message you may see when installing gems:
109 <notextile>
110 <pre><code>themes_for_rails at /usr/local/rvm/gems/ruby-2.1.1/bundler/gems/themes_for_rails-1fd2d7897d75 did not have a valid gemspec.
111 This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
112 The validation message from Rubygems was:
113   duplicate dependency on rails (= 3.0.11, development), (>= 3.0.0) use:
114     add_runtime_dependency 'rails', '= 3.0.11', '>= 3.0.0'
115 Using themes_for_rails (0.5.1) from https://github.com/holtkampw/themes_for_rails (at 1fd2d78)
116 </code></pre>
117 </notextile>
118 {% include 'notebox_end' %}
119
120 This command aborts when it encounters an error.  It's safe to rerun multiple times, so if there's a problem with your configuration, you can fix that and try again.
121
122 h2. Set up Web server
123
124 {% include 'install_nginx_workbench' %}
125
126 h2. Trusted client setting
127
128 Log in to Workbench once to ensure that the Arvados API server has a record of the Workbench client. (It's OK if Workbench says your account hasn't been activated yet. We'll deal with that next.)
129
130 In the <strong>API server</strong> project root, start the rails console.  Locate the ApiClient record for your Workbench installation (typically, while you're setting this up, the @last@ one in the database is the one you want), then set the @is_trusted@ flag for the appropriate client record:
131
132 <notextile><pre><code>/var/www/arvados-api/current$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
133 irb(main):001:0&gt; <span class="userinput">wb = ApiClient.all.last; [wb.url_prefix, wb.created_at]</span>
134 =&gt; ["https://workbench.example.com/", Sat, 19 Apr 2014 03:35:12 UTC +00:00]
135 irb(main):002:0&gt; <span class="userinput">include CurrentApiClient</span>
136 =&gt; true
137 irb(main):003:0&gt; <span class="userinput">act_as_system_user do wb.update_attributes!(is_trusted: true) end</span>
138 =&gt; true
139 </code></pre>
140 </notextile>
141
142 h2(#admin-user). Add an admin user
143
144 Next, we're going to use the rails console on the <strong>API server</strong> to activate our own account and give yourself admin privileges:
145
146 <notextile>
147 <pre><code>/var/www/arvados-api/current$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
148 irb(main):001:0&gt; <span class="userinput">Thread.current[:user] = User.all.select(&:identity_url).last</span>
149 irb(main):002:0&gt; <span class="userinput">Thread.current[:user].is_admin = true</span>
150 irb(main):003:0&gt; <span class="userinput">Thread.current[:user].update_attributes is_admin: true, is_active: true</span>
151 irb(main):004:0&gt; <span class="userinput">User.where(is_admin: true).collect &:email</span>
152 =&gt; ["root", "<b>your_address@example.com</b>"]
153 </code></pre></notextile>
154
155 At this point, you should have a working Workbench login with administrator privileges. Revisit your Workbench URL in a browser and reload the page to access it.