pan.do/ra is a free, open source media archive platform.
Find a file
2013-03-04 12:54:06 +00:00
etc update init.d scripts to match upstart scripts 2013-02-21 07:18:20 +00:00
pandora add user.ui.hash for all config files 2013-03-04 12:04:48 +00:00
scripts increase JPG quality 2013-02-19 17:27:43 +05:30
static in dialogs that correspond to pages, make sure that on close, we only set page to '' if the close happened via the dialog, and not in the app panel's page change handler 2013-03-04 12:54:06 +00:00
vm document starting of pandora-cron 2013-02-21 07:27:21 +00:00
.bzrignore ignore mac files 2013-02-28 11:20:02 +00:00
COPYING add gpl3 2012-11-26 17:46:14 +01:00
README document starting of pandora-cron 2013-02-21 07:27:21 +00:00
reload.sh dont run cron tasks in encoding queue, can only have one instance, cron jobs are executed several times otherwise 2013-02-21 06:55:49 +00:00
requirements.txt cleanup requirements 2013-01-05 08:58:18 +01:00
update.py user virtualenv in update.py 2013-03-02 05:27:52 +00:00

pan.do/ra - open media archive

for more information on pan.do/ra visit our website at https://pan.do/ra

== SETUP ==
pan.do/ra is known to work with Ubuntu 12.04,
but other distributions should also work.
The instructions below are for Ubuntu 12.04.
All commans given expect that you are root.

To run pan.do/ra you need to install and setup:
    python
    postgres
    nginx (or apache2)
    additinal video packages


* Installing required packages
1) add pandora ppa to get all packages in the required version

    apt-get install python-software-properties
    add-apt-repository ppa:j/pandora
    apt-get update

2) install all required packages
    apt-get install bzr git subversion mercurial \
            python-setuptools python-pip python-virtualenv ipython \
            python-dev python-imaging python-numpy python-psycopg2 \
            python-geoip python-html5lib python-lxml \
            python-gst0.10 gstreamer0.10-plugins-good gstreamer0.10-plugins-bad \ 
            postgresql postgresql-contrib rabbitmq-server \
            ffmpeg2theora libav-tools libavcodec-extra-53 \
            python-ox oxframe


* Prepare Environment
1) add pandora user and set permissions
   adduser pandora --disabled-login --disabled-password

2) Setup Database
   su postgres
   createuser pandora
   createdb  -T template0 --locale=C --encoding=UTF8 -O pandora pandora
   echo "CREATE EXTENSION pg_trgm;" | psql pandora
   exit

3) Setup RabbitMQ
Important: "use_your_own" is a password and you have to use the same value here and below for BROKER_PASSWORD

    rabbitmqctl add_user pandora use_your_own
    rabbitmqctl add_vhost /pandora
    rabbitmqctl set_permissions -p /pandora pandora ".*" ".*" ".*"


* Install Pan.do/ra
1) Get code from bazzar
    cd /srv/
    bzr branch http://code.0x2620.org/pandora pandora
    cd pandora
    virtualenv --system-site-packages .
    pip -E . install -r requirements.txt

    cd static
    bzr branch http://code.0x2620.org/oxjs

    cd /srv
    chown -R pandora.pandora pandora

2) create local_settings.py and config.jsonc

1) create file /srv/pandora/pandora/local_settings.py with the following content:
    DATABASES = {
        'default': {
            'NAME': 'pandora',
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'USER': 'pandora',
            'PASSWORD': '',
        }
    }
    DB_GIN_TRGM = True
    BROKER_PASSWORD = "use_your_own"

    #with apache x-sendfile or lighttpd set this to True
    XSENDFILE = False

    #with nginx X-Accel-Redirect set this to True
    XACCELREDIRECT = True

2) create config.jsonc
    config.jsonc holds the configuration for your site.
    To start you can copy /srv/pandora/pandora/config.pandora.jsonc
    to /srv/pandora/pandora/config.jsonc but have a look at 
    https://wiki.0x2620.org/wiki/pandora/configuration and
    config.0xdb.jsonc config.padma.jsonc for configuration options.

3) initialize database
    su pandora
    cd /srv/pandora/pandora
    ./manage.py syncdb --noinput
    ./manage.py migrate
    ./manage.py sqlfindindex | ./manage.py dbshell
    ./manage.py sync_itemsort
    ./manage.py collectstatic -l --noinput
    ./manage.py update_static
    ./manage.py compile_pyc

4) install init scripts and start daemons
    cp /srv/pandora/etc/init/*.conf /etc/init/
    service pandora start
    service pandora-encoding start
    service pandora-task start
    service pandora-cron start

5) Setup Webserver
a) nginx (recommended)
    apt-get install nginx
    cp /srv/pandora/etc/nginx/pandora /etc/nginx/sites-available/pandora
    cd /etc/nginx/sites-enabled
    ln -s ../sites-available/pandora

    #read comments in /etc/nginx/sites-available/pandora for setting
    #your hostname and other required settings
    #make sure XACCELREDIRECT = True in /srv/pandora/pandora/local_settings.py
    
    service nginx reload

b) apache2 (if you need it for other sites on the same server)
    apt-get install apache2-mpm-prefork libapache2-mod-xsendfile
    a2enmod xsendfile
    cp /srv/pandora/etc/apache2/pandora.conf /etc/apache2/sites-available/pandora.conf
    a2ensite pandora

    #read comments in /etc/apache2/sites-available/pandora.conf for setting
    #your hostname and other required settings
    #make sure XSENDFILE = True in /srv/pandora/pandora/local_settings.py
    
    service apache2 reload


Now you can open pandora in your browser, the first user to sign up will become admin.

=== Updating ===
To update a pandora installation get the latest version from bzr by running
  su pandora
  cd /srv/pandora
   ./update.py

this will update pandora/oxjs/python-ox and list possible upgrades to the db

to update your database tables, use
  su pandora
  cd /srv/pandora/pandora
   ./manage.py sqldiff -a
to check if there are changes and
   ./manage.py sqldiff -a | ./manage.py dbshell
to apply them.


=== Development ===
  in one terminal:
    ./manage.py runserver

  and background task in another:
    ./manage.py celeryd -B -Q celery,default,encoding

  now you can access your local pandora instace at http://127.0.0.1:8000/

  we use virtual machines for development, you can get a vm from our site
  or use the script in vm/build.sh to create one.