--- layout: default navsection: installguide title: Install Workbench ... This installation guide assumes you are on a 64 bit Debian or Ubuntu system. h2. Install prerequisites
~$ sudo apt-get install \
    bison build-essential gettext libcurl3 libcurl3-gnutls \
    libcurl4-openssl-dev libpcre3-dev libpq-dev libreadline-dev \
    libssl-dev libxslt1.1 sudo wget zlib1g-dev graphviz
Also make sure you have "Ruby and bundler":install-manual-prerequisites-ruby.html installed. Workbench doesn't need its own database, so it does not need to have PostgreSQL installed. h2. Download the source tree
~$ cd $HOME # (or wherever you want to install)
~$ git clone https://github.com/curoverse/arvados.git
See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki. The Workbench application is in @apps/workbench@ in the source tree. h2. Install gem dependencies
~$ cd arvados/apps/workbench
~/arvados/apps/workbench$ bundle install
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:
~$ cd arvados/apps/workbench
~/arvados/apps/workbench$ bundle install --path=vendor/bundle
The @bundle install@ command might produce a warning about the themes_for_rails gem. This is OK:
themes_for_rails at /home/you/.rvm/gems/ruby-2.1.1/bundler/gems/themes_for_rails-1fd2d7897d75 did not have a valid gemspec.
This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
The validation message from Rubygems was:
  duplicate dependency on rails (= 3.0.11, development), (>= 3.0.0) use:
    add_runtime_dependency 'rails', '= 3.0.11', '>= 3.0.0'
Using themes_for_rails (0.5.1) from https://github.com/holtkampw/themes_for_rails (at 1fd2d78)
h2. Choose your environment 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. Copy the example environment file for your environment. For example, if you choose @production@:
~/arvados/apps/workbench$ cp -i config/environments/production.rb.example config/environments/production.rb
h2. Configure the Workbench application First, copy the example configuration file:
~/arvados/apps/workbench$ cp -i config/application.yml.example config/application.yml
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. 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@. h3. secret_token This application needs a secret token. Generate a new secret:
~/arvados/apps/workbench$ rake secret
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Then put that value in the @secret_token@ field. h3. arvados_login_base and arvados_v1_base Point @arvados_login_base@ and @arvados_v1_base@ at your "API server":install-api-server.html. For example like this:
arvados_login_base: https://prefix_uuid.your.domain/login
arvados_v1_base: https://prefix_uuid.your.domain/arvados/v1
h3. site_name @site_name@ can be set to any arbitrary string. It is used to identify this Workbench to people visiting it. h3. arvados_insecure_https 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@. h3. other options 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@. Copy @config/piwik.yml.example@ to @config/piwik.yml@ and edit to suit. h2. Start the Workbench application h3. Development environment If you plan to run in development mode, you can now run the development server this way:
~/arvados/apps/workbench$ bundle exec rails server --port=3031
h3. Production environment We recommend "Passenger":https://www.phusionpassenger.com/ to run the API server in production. Point it to the apps/workbench directory in the source tree. h2. Trusted client setting 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.) In the API server 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:
~/arvados/services/api$ RAILS_ENV=production bundle exec rails console
irb(main):001:0> wb = ApiClient.all.last; [wb.url_prefix, wb.created_at]
=> ["https://workbench.example.com/", Sat, 19 Apr 2014 03:35:12 UTC +00:00]
irb(main):002:0> include CurrentApiClient
=> true
irb(main):003:0> act_as_system_user do wb.update_attributes!(is_trusted: true) end
=> true
h2(#admin-user). Add an admin user Next, we're going to use the rails console on the API server to activate our own account and give yourself admin privileges:
~/arvados/services/api$ RAILS_ENV=production bundle exec rails console
irb(main):001:0> Thread.current[:user] = User.all.select(&:identity_url).last
irb(main):002:0> Thread.current[:user].is_admin = true
irb(main):003:0> Thread.current[:user].update_attributes is_admin: true, is_active: true
irb(main):004:0> User.where(is_admin: true).collect &:email
=> ["root", "your_address@example.com"]
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.