Companion
![Build Status](https://travis-ci.org/transloadit/uppy.svg?branch=master)
Companion is a server integration for Uppy file uploader.
It handles the server-to-server communication between your server and file storage providers such as Google Drive, Dropbox,
Instagram, etc. Companion is not a target to upload files to. For this, use a https://tus.io server (if you want resumable) or your existing Apache/Nginx server (if you don't). See here for full documentation
Install
npm install @uppy/companion
If you don't have a Node.js project with a package.json
you might want to install/run Companion globally like so: [sudo] npm install -g @uppy/companion@0.30.0
.
Usage
companion may either be used as pluggable express app, which you plug to your already existing server, or it may simply be run as a standalone server:
Plug to already existing server
var express = require('express')
var bodyParser = require('body-parser')
var session = require('express-session')
var uppy = require('@uppy/companion')
var app = express()
app.use(bodyParser.json())
app.use(session({secret: 'some secrety secret'}))
...
const options = {
providerOptions: {
google: {
key: 'GOOGLE_KEY',
secret: 'GOOGLE_SECRET'
}
},
server: {
host: 'localhost:3020',
protocol: 'http',
},
filePath: '/path/to/folder/'
}
app.use(uppy.app(options))
To enable uppy socket for realtime feed to the client while upload is going on, you call the socket
method like so.
...
var server = app.listen(PORT)
uppy.socket(server, options)
Run as standalone server
Please ensure that the required env variables are set before runnning/using companion as a standalone server. See.
$ companion
If you cloned the repo from GitHub and want to run it as a standalone server, you may also run the following command from within its
directory
npm start
Run as a serverless function
Companion can be deployed as a serverless function to AWS Lambda or other cloud providers through serverless
. Check this guide to get started.
After you have cloned the repo go inside examples/serverless
:
cd examples/serverless
You can enter your API Keys inside the serverless.yml
file:
INSTAGRAM_KEY: <YOUR_INSTAGRAM_KEY>
INSTAGRAM_SECRET: <YOUR_INSTAGRAM_SECRET>
When you are all set install the dependencies and deploy your function:
npm install && sls deploy
Deploy to heroku
Companion can also be deployed to Heroku
mkdir uppy-companion && cd uppy-companion
git init
echo 'export COMPANION_PORT=$PORT' > .profile
echo 'node_modules' > .gitignore
echo '{
"name": "uppy-companion",
"version": "1.0.0",
"scripts": {
"start": "companion"
},
"dependencies": {
"@uppy/companion": "^0.17.0"
}
}' > package.json
npm i
git add . && git commit -am 'first commit'
heroku create
git push heroku master
Make sure you set the required environment variables.
See full documentation