3 navsection: installguide
4 title: Install Workbench
7 This installation guide assumes you are on a 64 bit Debian or Ubuntu system.
9 h2. Install prerequisites
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>
18 Also make sure you have "Ruby and bundler":install-manual-prerequisites-ruby.html installed.
20 Workbench doesn't need its own database, so it does not need to have PostgreSQL installed.
22 h2. Download the source tree
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>
29 See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki.
31 The Workbench application is in @apps/workbench@ in the source tree.
33 h2. Install gem dependencies
36 <pre><code>~$ <span class="userinput">cd arvados/apps/workbench</span>
37 ~/arvados/apps/workbench$ <span class="userinput">bundle install</span>
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:
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>
48 The @bundle install@ command might produce a warning about the themes_for_rails gem. This is OK:
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>
59 h2. Choose your environment
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.
63 Copy the example environment file for your environment. For example, if you choose @production@:
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>
69 h2. Configure the Workbench application
71 First, copy the example configuration file:
74 <pre><code>~/arvados/apps/workbench$ <span class="userinput">cp -i config/application.yml.example config/application.yml</span>
75 </code></pre></notextile>
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.
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@.
83 This application needs a secret token. Generate a new secret:
86 <pre><code>~/arvados/apps/workbench$ <span class="userinput">rake secret</span>
87 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91 Then put that value in the @secret_token@ field.
93 h3. arvados_login_base and arvados_v1_base
95 Point @arvados_login_base@ and @arvados_v1_base@ at your "API server":install-api-server.html. For example like this:
98 <pre><code>arvados_login_base: https://prefix_uuid.your.domain/login
99 arvados_v1_base: https://prefix_uuid.your.domain/arvados/v1
105 @site_name@ can be set to any arbitrary string. It is used to identify this Workbench to people visiting it.
107 h3. arvados_insecure_https
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@.
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@.
115 Copy @config/piwik.yml.example@ to @config/piwik.yml@ and edit to suit.
117 h2. Start the Workbench application
119 h3. Development environment
121 If you plan to run in development mode, you can now run the development server this way:
124 <pre><code>~/arvados/apps/workbench$ <span class="userinput">bundle exec rails server --port=3031</span>
125 </code></pre></notextile>
127 h3. Production environment
129 We recommend "Passenger":https://www.phusionpassenger.com/ to run the API server in production.
131 Point it to the apps/workbench directory in the source tree.
133 h2. Trusted client setting
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.)
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:
139 <notextile><pre><code>~/arvados/services/api$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
140 irb(main):001:0> <span class="userinput">wb = ApiClient.all.last; [wb.url_prefix, wb.created_at]</span>
141 => ["https://workbench.example.com/", Sat, 19 Apr 2014 03:35:12 UTC +00:00]
142 irb(main):002:0> <span class="userinput">include CurrentApiClient</span>
144 irb(main):003:0> <span class="userinput">act_as_system_user do wb.update_attributes!(is_trusted: true) end</span>
149 h2(#admin-user). Add an admin user
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:
154 <pre><code>~/arvados/services/api$ <span class="userinput">RAILS_ENV=production bundle exec rails console</span>
155 irb(main):001:0> <span class="userinput">Thread.current[:user] = User.all.select(&:identity_url).last</span>
156 irb(main):002:0> <span class="userinput">Thread.current[:user].is_admin = true</span>
157 irb(main):003:0> <span class="userinput">Thread.current[:user].update_attributes is_admin: true, is_active: true</span>
158 irb(main):004:0> <span class="userinput">User.where(is_admin: true).collect &:email</span>
159 => ["root", "<b>your_address@example.com</b>"]
160 </code></pre></notextile>
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.