3 navsection: installguide
4 title: Install the API server
8 {% include alert-stub.html %}
14 1. A GNU/linux (virtual) machine
15 2. A domain name for your api server
17 ## Download the source tree
19 Please follow the instructions on the [Download page](https://arvados.org/projects/arvados/wiki/Download) in the wiki.
21 ## Configure the API server
23 First configure the database:
25 cd arvados/services/api
26 cp config/database.yml.sample config/database.yml
28 Edit database.yml to your liking and make sure the database and db user exist.
29 Then set up the database:
31 RAILS_ENV=production rake db:setup
35 cp config/initializers/omniauth.rb.example config/initializers/omniauth.rb
37 Edit config/initializers/omniauth.rb. Choose an *APP_SECRET* and *APP_ID*. Also set
38 *CUSTOM_PROVIDER_URL*.
40 Make sure your Omniauth provider knows about your *APP_ID* and *APP_SECRET*
43 You also need to update config/initializers/secret_token.rb. Generate a new secret with
47 and put it in config/initializers/secret_token.rb:
49 Server::Application.config.secret_token = 'your-new-secret-here'
53 environments/production.rb
57 First, you want to make sure that
61 is set to a unique 5-digit hex string. You can replace the 'cfi-aws-0' string
62 with a string of your choice to make that happen.
64 The *config.uuid_prefix* string is a unique identifier for your API server. It
65 also serves as the first part of the hostname for your API server, for instance
67 {{ site.arvados_api_host }}
69 You should use your own domain instead of arvadosapi.com
71 Second, unless you are running on AWS, you will want to change the definition of
73 config.compute_node_nameservers
75 If you know your nameservers and they are fixed, you can hardcode them, and
76 make sure to remove the code that tries to look them up from the AWS metadata:
78 config.compute_node_nameservers = ['1.2.3.4','2.3.4.5','3.4.5.6']
80 #config.compute_node_nameservers = ['local', 'public'].collect do |iface|
81 # Net::HTTP.get(URI("http://169.254.169.254/latest/meta-data/#{iface}-ipv4")).match(/^[\d\.]+$/)[0]
86 Set up Apache and Passenger. Point them to the services/api directory in the source tree.
88 To enable streaming so users can monitor crunch jobs in real time, add
89 to your Apache configuration:
91 PassengerBufferResponse off
95 Point browser to the API endpoint. Log in with a google account.
99 Thread.current[:user] = User.find(1)
100 Thread.current[:user].is_admin = true
101 User.find(1).update_attributes is_admin: true, is_active: true
102 User.find(1).is_admin
112 a = ApiClient.new(owner_uuid:'0'); a.save!
113 x = ApiClientAuthorization.new(api_client_id:a.id, user_id:1); x.save; x.api_token