Merge branch '1922-cache-discovery-python'
[arvados.git] / doc / install / install-api-server.md
index 416a2f1a76fac77216a4700866cdd622dc60dd16..dbae3dac8857ec1fc7d61022c661152b79aee92f 100644 (file)
@@ -22,6 +22,7 @@ Please follow the instructions on the [Download page](https://arvados.org/projec
 
 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.
@@ -33,34 +34,62 @@ Then set up omniauth:
 
     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
+
+and put it in config/initializers/secret_token.rb:
+
+    Server::Application.config.secret_token = 'your-new-secret-here'
+
 Finally, edit your
 
     environments/production.rb
 
-file. Specifically, you want to make sure that 
+file. 
+
+First, you want to make sure that 
 
     config.uuid_prefix
 
 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.orvosapi.com
+    {{ site.arvados_api_host }}
+
+You should use your own domain instead of arvadosapi.com
 
-You should use your own domain instead of orvosapi.com
+Second, unless you are running on AWS, you will want to change the definition of
+
+    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']
+    #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.
@@ -69,7 +98,7 @@ In the rails console:
 
     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
@@ -80,6 +109,6 @@ 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