First configure the database:
+ cd arvados/services/api
cp config/database.yml.sample config/database.yml
Edit database.yml to your liking and make sure the database and db user exist.
cp config/initializers/omniauth.rb.example config/initializers/omniauth.rb
-Edit config/initializers/omniauth.rb. Choose an APP_SECRET and APP_ID. Also set
-CUSTOM_PROVIDER_URL.
+Edit config/initializers/omniauth.rb. Choose an *APP_SECRET* and *APP_ID*. Also set
+*CUSTOM_PROVIDER_URL*.
-Make sure your Omniauth provider knows about your APP_ID and APP_SECRET
+Make sure your Omniauth provider knows about your *APP_ID* and *APP_SECRET*
combination.
You also need to update config/initializers/secret_token.rb. Generate a new secret with
- rake secret
+ rake secret
and put it in config/initializers/secret_token.rb:
- Server::Application.config.secret_token = 'your-new-secret-here'
+ Server::Application.config.secret_token = 'your-new-secret-here'
Finally, edit your
is set to a unique 5-digit hex string. You can replace the 'cfi-aws-0' string
with a string of your choice to make that happen.
-The config.uuid_prefix string is a unique identifier for your API server. It
+The *config.uuid_prefix* string is a unique identifier for your API server. It
also serves as the first part of the hostname for your API server, for instance
- 9ujm1.arvadosapi.com
+ {{ site.arvados_api_host }}
You should use your own domain instead of arvadosapi.com
Second, unless you are running on AWS, you will want to change the definition of
- config.compute_node_nameservers
+ config.compute_node_nameservers
If you know your nameservers and they are fixed, you can hardcode them, and
make sure to remove the code that tries to look them up from the AWS metadata:
- config.compute_node_nameservers = ['1.2.3.4','2.3.4.5','3.4.5.6']
+ config.compute_node_nameservers = ['1.2.3.4','2.3.4.5','3.4.5.6']
+ #require 'net/http'
+ #config.compute_node_nameservers = ['local', 'public'].collect do |iface|
+ # Net::HTTP.get(URI("http://169.254.169.254/latest/meta-data/#{iface}-ipv4")).match(/^[\d\.]+$/)[0]
+ #end << '172.16.0.23'
## Apache/Passenger
Set up Apache and Passenger. Point them to the services/api directory in the source tree.
+To enable streaming so users can monitor crunch jobs in real time, add
+to your Apache configuration:
+
+ PassengerBufferResponse off
+
## Add an admin user
Point browser to the API endpoint. Log in with a google account.
Thread.current[:user] = User.find(1)
Thread.current[:user].is_admin = true
- User.find(1).update_attributes is_admin: true
+ User.find(1).update_attributes is_admin: true, is_active: true
User.find(1).is_admin
This should be
In rails console
- a = ApiClient.new(owner:1); a.save!
+ a = ApiClient.new(owner_uuid:'0'); a.save!
x = ApiClientAuthorization.new(api_client_id:a.id, user_id:1); x.save; x.api_token