A beta version of Catsnap 3.0 is now available. 3.0 introduces a major architectural change: instead of accessing dynamodb directly, the command-line script is now a client to a postgres-backed web api. This has several advantages, including browser-based access, reduced operating costs (potentially all the way to $0.00), and improved security.
You'll need to run the server code somewhere. The instructions below assume you're using a VPS or EC2. However, you could also run catsnap on your personal computer, or a managed service like Heroku. In any case, you'll need to create a postgres database for Catsnap to use. First-time Catsnap users will also need to create an S3 bucket.
Deploying the 3.0 server is fairly straightforward. You'll need to set several environment variables: CATSNAPAPIKEY is a secret key the client and server share for authentication. It can be any string of characters. CATSNAPAWSACCESSKEYID and CATSNAPAWSSECRETACCESSKEY: your AWS credentials. CATSNAPBUCKET: the S3 bucket where you want catsnap to store images. CATSNAPOWNERID: an openid provider that uniquely identifies you as the owner of this catsnap installation. CATSNAPSECRET_KEY: a secret key to use when generating session identifiers. DATABASE_URL: a url Catsnap can use to connect to its postgres database. * PORT: the port on which you want catsnap to listen.
Once you have your environment set up, clone catsnap into a directory of your choice. Change to the catsnap directory and install its dependencies:
python setup.py install
Use yoyo-migrate to build the database:
yoyo-migrate apply migrations $DATABASE_URL
If you have an existing catsnap installation backed by dynamodb, there's a script for migrating your data into postgres. The script isn't installed by setup.py so you'll need to run it directly from its path:
Start the server with gunicorn:
gunicorn catsnap.app:app -b 0.0.0.0:$PORT -w 3
And you should be up and running.
Installing the client is even easier:
pip install catsnap==3.0.0b1 catsnap config
I'm aware of a couple minor issues, but I expect to have them fixed within the next few days. Please let me know about any problems you run across (or even send me a pull request), and happy catsnapping!