adduser expo apt install openssh-server mosh tmux mc zile emacs-nox mc most ncdu apt install python-django apache2 mysql-server survex make rsync apt install libjs-openlayers make apt install git mercurial mercurial-server? for boe: apt install libcgi-session-perl libcrypt-passwdmd5-perl libfile-slurp-perl libgit-wrapper-perl libhtml-template-perl libhtml-template-pro-perl libmime-lite-perl libtext-password-pronounceable-perl libtime-parsedate-perl libuuid-tiny-perl libcrypt-cracklib-perl apt install ufraw for PEF image decoding. sudo apt install python-django python-django-registration e fonts-freefont-ttf libapache2-mod-wsgi python3-gdbm # sudo apt install python-django-imagekit python-django-tinymc obsolete-packages: bins (move to jigl?) older python-django? backports: survex therion not-packaged: caveview make these dirs available at top documentroot: cuccfiles expofiles loser tunneldata troggle expoweb boc/boe config containing: setup apache configs for cucc and expo #disable default website a2dissite 000-default a2ensite cucc a2ensite expo a2enmod cgid Boe config: Alias /boe /home/expo/boe/boc/boc.pl AddHandler cgi-script .pl SetHandler cgi-script Options +ExecCGI Require all granted And remember to set both program and data dir to be www-data:www-data (optionally make file group read/write by treasurer account) create empty repo by clicking create in boe interface then set names in 'settings' Set up mysql (as root) mysql -p CREATE DATABASE troggle; GRANT ALL PRIVILEGES ON troggle.* TO 'expo'@'localhost' IDENTIFIED BY 'somepassword'; install django: sudo apt install python-django python-django-registration python-django-imagekit python-django-tinymce fonts-freefont-ttf libapache2-mod-wsgi python-django-imagekit comes from https://salsa.debian.org/python-team/modules/python-django-imagekit python-django-tinymce comes from https://salsa.debian.org/python-team/modules/python-django-tinymce need fonts-freefont-ttf (to have truetype freesans available for troggle via PIL) need libapache2-mod-wsgi for apache wsgi support. On stretch the django 1.10 is no use so get rid of that: apt remove python3-django python-django python-django-common python-django-doc Then replace with django 1.7 (Needs to be built for stretch) apt install python-django python-django-common python-django-doc apt install python-django-registration python-django-imagekit python-django-tinymce then hold them to stop them being upgraded by unattended upgrades: echo "python-django hold" | sudo dpkg --set-selections echo "python-django-common hold" | sudo dpkg --set-selections echo "python-django-doc hold" | sudo dpkg --set-selections Optimizing server I've tweaked the apache and mysql settings to make them a bit more suitable for a small machine. Seems to have shaved 200MB or so off the idling footprint. https://www.narga.net/optimizing-apachephpmysql-low-memory-server/ (just discovered 'ab' for running apache performance tests - handy). Do the edit to site-packages/django/db/backends/base.py to comment out the requirement for mysqlclient >1.3.13 as we run perfectly happily with Django 2.2.19 & mysqlite 1.3.10 : version = Database.version_info #test nobbled by Wookey 2021-04-08 as 1.3.13 is not available on stable #if version < (1, 3, 13): # raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)