Skip to content

Web interface for submitting Blender render jobs to Amazon Web Services.

Notifications You must be signed in to change notification settings

robksawyer/brenda-web

Repository files navigation

Brenda Web Interface

The goal of this project is to create a web interface that allows users to easily submit and manage Blender render jobs submitted via Amazon Web Services. And more specifically, via Amazon EC2 Spot Intances. Right now the backend heavily relies on the work done by James Yonan. See the github project, titled Brenda at jamesyonan/brenda.

Build Status Code Climate Test Coverage Donate

Milestones and Progress

Beta 1.0 - Coming Early 2016

Be sure to check out the progress report at PROGRESS.md for the latest feature list and status.

Getting Started

  1. See the SailsJS Getting Started. You mostly need to install nodejs.
  2. git clone https://github.com/robksawyer/brenda-web.git
  3. cd brenda-web
  4. Rename config/local.sample.js to config/local.js. This contains local configuration variables that the app can use.
  5. Run the command npm install to download the node modules used in the project.
  6. Set Amazon keys as environment variables. See setting up AWS below.
  7. Open your Terminal (iTerm 2)
  8. Run the command sails lift
  9. Navigate to http://localhost:1337/register and create an account.
  10. Click your username in the navigation bar to enter the Settings page.

Configuration

AWS (Amazon Web Services)

The following environment variables need to be set.

Environment Variables

AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION="us-west-2"

You could also just add the following to your config/local.js file.

aws: {
      credentials: {
        accessKeyId: 'YOUR_ACCESS_KEY',
        secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
        region: 'us-west-2'
      }
   }

Technology Stack

Web/NodeJS Framework

NPM Packages

  • skipper-s3: Streaming file uploads to S3
  • skipper-s3-alt: An alternative skipper driver for upload files in AWS S3
  • aws-sdk: Amazon SDK for Node
  • knox: Amazon S3 client
  • aws-q: Give the AWS SDK some Q promise magic
  • adm-zip: Automatically zipping .blend files in order to push to Amazon S3
  • moment - Formatting time data

Other Dependencies

Data Storage

The project is currently dependent on MongoDB as its data storage provider. mongo-express is used as a gui to make life a bit easier. It's also worth noting that all of this is made possible, because of the sails-mongo Waterline adapter.

Visit your mongo-express interface at http://localhost:1336. This can be changed via the node_modules/mongo-express/config site.url property. The default user/pass is admin and pass. This can be changed in the config file.

There's a helper script to start mongo-express. Just run npm run mongo to start it up. You can change this in package.json.

Setting up MongoDB locally

  1. Install it via Homebrew
  2. Make sure the data storage location ls -al /usr/local/var/mongodb/ exists.
  3. Start it up in the background with mongod --config /usr/local/etc/mongod.conf --fork

However, if you want to keep MongoDB running at any time, even when you reboot the system, you should use the following commands:

//Start mongod main process on session start:
ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Warning: In order to get this working, I had to make some permission updates.

$ sudo chown -R robsawyer /usr/local/var/log/mongodb/
$ sudo chown -R robsawyer /usr/local/var/mongodb
$ sudo chown -R robsawyer /usr/local/etc/mongod.conf

//Start MongoDB now, in background, and keep it running
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Wuh? What is Brenda?

Resources

Inspiration

About

Web interface for submitting Blender render jobs to Amazon Web Services.

Resources

Stars

Watchers

Forks

Packages

No packages published