#!/bin/bash # Add pandora repository echo "deb http://ppa.launchpad.net/j/pandora/ubuntu zesty main" > /etc/apt/sources.list.d/pandora.list apt-key add - </tmp/pandora-createdb.sql CREATE ROLE pandora NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN ENCRYPTED PASSWORD '${PANDORA_PWD}'; CREATE DATABASE pandora; REVOKE ALL ON DATABASE pandora FROM public; ALTER DATABASE pandora OWNER TO pandora; \c pandora; CREATE EXTENSION pg_trgm; EOF sudo -u postgres psql -f /tmp/pandora-createdb.sql rm -f /tmp/pandora-createdb.sql # Configure RabbitMQ export PANDORA_RABBIT_PWD=$(head -c 260 /dev/urandom | tr -cd '[:alnum:]' | head -c 26) rabbitmqctl add_user pandora ${PANDORA_RABBIT_PWD} rabbitmqctl add_vhost /pandora rabbitmqctl set_permissions -p /pandora pandora ".*" ".*" ".*" export PANDORA_BROKER_URL="amqp://pandora:${PANDORA_RABBIT_PWD}@localhost:5672//pandora" # Configure Pandora mkdir /srv/pandora/data cp /srv/pandora/pandora/config.pandora.jsonc /srv/pandora/pandora/config.jsonc sed 's/127.0.0.1/0.0.0.0/' /srv/pandora/pandora/gunicorn_config.py.in >/srv/pandora/pandora/gunicorn_config.py cat </srv/pandora/pandora/local_settings.py DATABASES = { 'default': { 'NAME': 'pandora', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'pandora', 'PASSWORD': '${PANDORA_PWD}', } } DB_GIN_TRGM = True BROKER_URL = '${PANDORA_BROKER_URL}' XACCELREDIRECT = True MEDIA_URL = '/pandora/data/' STATIC_URL = '/pandora/static/' WEBSOCKET = True WEBSOCKET_ADDRESS = "0.0.0.0" DEBUG = False TEMPLATE_DEBUG = DEBUG JSON_DEBUG = False EOF sed -i "s|url(r'^|url(r'^pandora/|g" /srv/pandora/pandora/urls.py sed -i 's|href="/|href="/pandora/|g' /srv/pandora/pandora/templates/*.html sed -i 's|src="/|src="/pandora/|g' /srv/pandora/pandora/templates/*.html sed -i "s|build_absolute_uri('/|build_absolute_uri('/pandora/|g" ./item/views.py ./item/tasks.py ./archive/views.py ./user/views.py ./app/views.py ./text/views.py # Create OS user adduser --system --group --home /srv/pandora --shell /bin/false pandora chown -R pandora:pandora /srv/pandora # Populate database sudo -u pandora /srv/pandora/pandora/manage.py init_db # Install systemd services cp /srv/pandora/etc/systemd/system/*.service /etc/systemd/system/ cp /srv/pandora/etc/tmpfiles.d/pandora.conf /etc/tmpfiles.d/ systemd-tmpfiles --create /etc/tmpfiles.d/pandora.conf systemctl daemon-reload # Start services for SERVICE in "pandora pandora-tasks pandora-encoding pandora-cron pandora-websocketd"; do systemctl enable ${SERVICE} systemctl start ${SERVICE} done # TODO: LXC # TODO: nginx configuration