Add 'apps/arv-web/' from commit 'f9732ad8460d013c2f28363655d0d1b91894dca5'
[arvados.git] / doc / install / install-workbench-app.html.textile.liquid
1 ---
2 layout: default
3 navsection: installguide
4 title: Install Workbench
5 ...
6
7 This installation guide assumes you are on a 64 bit Debian or Ubuntu system.
8
9 h2. Install prerequisites
10
11 <notextile>
12 <pre><code>~$ <span class="userinput">sudo apt-get install \
13     bison build-essential gettext libcurl3 libcurl3-gnutls \
14     libcurl4-openssl-dev libpcre3-dev libpq-dev libreadline-dev \
15     libssl-dev libxslt1.1 sudo wget zlib1g-dev graphviz
16 </span></code></pre></notextile>
17
18 Also make sure you have "Ruby and bundler":install-manual-prerequisites-ruby.html installed.
19
20 Workbench doesn't need its own database, so it does not need to have PostgreSQL installed.
21
22 h2. Download the source tree
23
24 <notextile>
25 <pre><code>~$ <span class="userinput">cd $HOME</span> # (or wherever you want to install)
26 ~$ <span class="userinput">git clone https://github.com/curoverse/arvados.git</span>
27 </code></pre></notextile>
28
29 See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki.
30
31 The Workbench application is in @apps/workbench@ in the source tree.
32
33 h2. Install gem dependencies
34
35 <notextile>
36 <pre><code>~$ <span class="userinput">cd arvados/apps/workbench</span>
37 ~/arvados/apps/workbench$ <span class="userinput">bundle install</span>
38 </code></pre>
39 </notextile>
40
41 Alternatively, if you don't have sudo/root privileges on the host, install the gems in your own directory instead of installing them system-wide:
42
43 <notextile>
44 <pre><code>~$ <span class="userinput">cd arvados/apps/workbench</span>
45 ~/arvados/apps/workbench$ <span class="userinput">bundle install --path=vendor/bundle</span>
46 </code></pre></notextile>
47
48 The @bundle install@ command might produce a warning about the themes_for_rails gem. This is OK:
49
50 <notextile>
51 <pre><code>themes_for_rails at /home/<b>you</b>/.rvm/gems/ruby-2.1.1/bundler/gems/themes_for_rails-1fd2d7897d75 did not have a valid gemspec.
52 This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
53 The validation message from Rubygems was:
54   duplicate dependency on rails (= 3.0.11, development), (>= 3.0.0) use:
55     add_runtime_dependency 'rails', '= 3.0.11', '>= 3.0.0'
56 Using themes_for_rails (0.5.1) from https://github.com/holtkampw/themes_for_rails (at 1fd2d78)
57 </code></pre></notextile>
58
59 h2. Choose your environment
60
61 The Workbench application can be run in @development@ or in @production@ mode. Unless this installation is going to be used for development on the Workbench applicatoin itself, you should run it in @production@ mode.
62
63 Copy the example environment file for your environment. For example, if you choose @production@:
64
65 <notextile>
66 <pre><code>~/arvados/apps/workbench$ <span class="userinput">cp -i config/environments/production.rb.example config/environments/production.rb</span>
67 </code></pre></notextile>
68
69 h2. Configure the Workbench application
70
71 First, copy the example configuration file:
72
73 <notextile>
74 <pre><code>~/arvados/apps/workbench$ <span class="userinput">cp -i config/application.yml.example config/application.yml</span>
75 </code></pre></notextile>
76
77 The Workbench application reads the @config/application.yml@ file, as well as the @config/application.defaults.yml@ file. Values in @config/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 the Workbench application and is provided for installation convenience, only.
78
79 Consult @config/application.default.yml@ for a full list of configuration options. Always put your local configuration in @config/application.yml@, never edit @config/application.default.yml@.
80
81 h3. secret_token
82
83 This application needs a secret token. Generate a new secret:
84
85 <notextile>
86 <pre><code>~/arvados/apps/workbench$ <span class="userinput">rake secret</span>
87 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
88 </code></pre>
89 </notextile>
90
91 Then put that value in the @secret_token@ field.
92
93 h3. arvados_login_base and arvados_v1_base
94
95 Point @arvados_login_base@ and @arvados_v1_base@ at your "API server":install-api-server.html. For example like this:
96
97 <notextile>
98 <pre><code>arvados_login_base: https://prefix_uuid.your.domain/login
99 arvados_v1_base: https://prefix_uuid.your.domain/arvados/v1
100 </code></pre>
101 </notextile>
102
103 h3. site_name
104
105 @site_name@ can be set to any arbitrary string. It is used to identify this Workbench to people visiting it.
106
107 h3. arvados_insecure_https
108
109 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@.
110
111 h3. other options
112
113 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@.
114
115 Copy @config/piwik.yml.example@ to @config/piwik.yml@ and edit to suit.
116
117 h2. Start the Workbench application
118
119 h3. Development environment
120
121 If you plan to run in development mode, you can now run the development server this way:
122
123 <notextile>
124 <pre><code>~/arvados/apps/workbench$ <span class="userinput">bundle exec rails server --port=3031</span>
125 </code></pre></notextile>
126
127 h3. Production environment
128
129 We recommend "Passenger":https://www.phusionpassenger.com/ to run the API server in production.
130
131 Point it to the apps/workbench directory in the source tree.
132
133 h2. Trusted client setting
134
135 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.)
136
137 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:
138
139 <notextile><pre><code>~/arvados/services/api$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
140 irb(main):001:0&gt; <span class="userinput">wb = ApiClient.all.last; [wb.url_prefix, wb.created_at]</span>
141 =&gt; ["https://workbench.example.com/", Sat, 19 Apr 2014 03:35:12 UTC +00:00]
142 irb(main):002:0&gt; <span class="userinput">include CurrentApiClient</span>
143 =&gt; true
144 irb(main):003:0&gt; <span class="userinput">act_as_system_user do wb.update_attributes!(is_trusted: true) end</span>
145 =&gt; true
146 </code></pre>
147 </notextile>
148
149 h2(#admin-user). Add an admin user
150
151 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:
152
153 <notextile>
154 <pre><code>~/arvados/services/api$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
155 irb(main):001:0&gt; <span class="userinput">Thread.current[:user] = User.all.select(&:identity_url).last</span>
156 irb(main):002:0&gt; <span class="userinput">Thread.current[:user].is_admin = true</span>
157 irb(main):003:0&gt; <span class="userinput">Thread.current[:user].update_attributes is_admin: true, is_active: true</span>
158 irb(main):004:0&gt; <span class="userinput">User.where(is_admin: true).collect &:email</span>
159 =&gt; ["root", "<b>your_address@example.com</b>"]
160 </code></pre></notextile>
161
162 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.