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
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']
+ #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