diff --git a/50-pandora.sh b/50-pandora.sh new file mode 100644 index 0000000..0799d69 --- /dev/null +++ b/50-pandora.sh @@ -0,0 +1,112 @@ +#!/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