Setup Instructions

I currently recommend setting it up using docker. These instructions might not work for you anymore.

You will need a django project in order to run SilverStrike. You can clone a sample application I recommend for production from here. This guide assumes you are cloning the project to /srv/webapps/silverstrike

To actually use it in production I recommend using uwsgi and nginx. If you have can contribute instructions for other servers, please do so! Below are two short config files for uwsgi and nginx that you can use to get your instance up and running. They are also included in the project you cloned so you can just symlink them to where they should be.

uwsgi.ini

[uwsgi]

chdir           = /srv/webapps/silverstrike
module          = wsgi
virtualenv      = /srv/webapps/silverstrike/env

master          = true
processes       = 10
socket          = /run/uwsgi/silverstrike.sock
#chmod-socket   = 666

vacuum          = true
plugin          = python3

uid             = www-data
gid             = www-data

nginx.config

server {
	listen 80;
	listen [::]:80;
	server_name silverstrike.example.com;
	return 301      https://$server_name$request_uri;
}

server {
	listen 443;
	listen [::]:443;
	server_name silverstrike.example.com;

	ssl			on;
	## More ssl settings here...

	location /static {
		alias /srv/webapps/silverstrike/public/static;
	}

	location / {
		uwsgi_pass  unix:/run/uwsgi/silverstrike.sock;
		include     /etc/nginx/uwsgi_params;
	}
}

Configuration

All configuration of SilverStrike happens in the settings.py file. You should be able to use it without modification, and you really don’t need to know about every setting that is listed there, but here are a couple that you probably want to should change.

NameDescription
SECRET_KEYSet it to a random string, this value is used internally by django and should be kept secret
DEBUGsetting it to True will allow you to know what’s wrong if you’re having difficulties, but you should set it to False once your instance is up and running. You might expose secret information if you set it to True
ALLOWED_HOSTSOnce you set DEBUG to False django will refuse to respond to requests that use a HOST header that’s not included in this list. If you make Silverstrike available at 'https://silverstrike.example.com' include that value in the list
DATABASESBy default sqlite is used, which is ok for development or small production setups, I recommend using a real database like postgresql or mariadb. Refer to the Django docs on how to configure the database. The link is provided in the settings file
ACCOUNT_ADAPTERSince all users currently have access to all the data, signing up is disabled. If for some reason you want to enable signup comment the line of this setting.

Initialization

The development server is capable of serving all assets (stylesheets, images, javascript, …) but is relatively slow in doing so. That’s why in production (DEBUG = False) django doesn’t serve them. So you will need to collect all static files and make them accessible to the web server. Here is the code to set everything up:

cd /srv/webapps/silverstrike
python3 -m venv env
source env/bin/activate
pip install silverstrike
python demo/manage.py migrate
python demo/manage.py collectstatic
python demo/manage.py createsuperuser

The migrate command initializes the database and applies any outstanding migrations. After updating to a new version you should run the command in case any new migrations have been added.

The collectstatic command collects all assets so that they can be served by the webserver directly. They are placed in /srv/webapps/silverstrike/public/static/. This command should be run everytime you update to a new version, because assets can always change.

The createsuperuser command can be used to create superusers with all permissions. After creating an initial superuser you can create more users using the builtin django admin.