Debian server installation

These are advanced installation notes for a Debian server to deploy OpenAtlas.
We use this instruction for our workflow, it is very specific and detailed (e.g. changing the prompt to color and show git information) so feel free to use/adapt as needed.

New packages

apt install aptitude ntp vim


OpenAtlas user interfaces are currently supported for English and German, you might want to install needed languages with this command:

dpkg-reconfigure locales


  • Implement ssh-key user access
  • Disallow password authentication and root login
    • vim /etc/ssh/sshd-config
      PermitRootLogin no
      PasswordAuthentication no
    • To test, open second shell, restart ssh server (systemctl restart ssh), try to log in again. Leave first shell open, in case you have to fix things.
  • Install and activate Unattended upgrades


  • apt install rkhunter
  • vim /etc/rkhunter.conf
    WEB_CMD="/bin/false" ---> WEB_CMD="" 
  • vim /etc/rkhunter.conf.local
  • rkhunter -c
  • rkhunter --propupd

File structure

  • /var/www
    • /openatlas (OpenAtlas instances)
    • /frontend (presentation sites)

apt install apache2 (needed for permissions later)

  • Setup access on /var/www: owner=root, group=web-admin (can write), world can read e.g. www-data.
  • Directories which needs to be writable by Apache e.g. uploads should be owned by www-data, see stackoverflow discussion e.g.
groupadd web-admin
usermod -a -G web-admin alex
chgrp -R web-admin /var/www
chmod -R 775 /var/www
chmod g+s /var/www

Every user should change umask on user level to 002 in the home directory
vim ~/.profile

Add line
umask 002

Don't forget to log in again so the changes are applied.
mkdir /var/www/openatlas
mkdir /var/www/frontend


Colored prompt with git information about branch and changes

vim ~/.bashrc

function parse_git_dirty {
    [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working tree clean" ]] && echo "*" 
function parse_git_branch {
    git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/" 
PS1='\[\e[1;34m\]\u@\h:\w\[\e[0;32m\]$(parse_git_branch)\[\e[1;34m\]\$ \[\e[m\]'

General adaption

Change default editor to vim:

update-alternatives --config editor

Install OpenAtlas instance

Next follow the instructions how to install OpenAtlas:

In case proxy is needed

For git e.g. ACDH-CH:

$ git config --global http.proxy

For pip3 e.g. ACDH-CH:
$ pip3 install --proxy= calmjs
$ npm config set proxy


  • Disable directory listening for Apache
# a2dismod autoindex
# service apache2 restart
  • To do: check what Apache modules (passenger, rewrite, ssl) and document here (maybe even in install notes)

Certbot for HTTPS

(For sites on ACDH-CH servers ignore this, the certificate has to be managed by the proxy server.)
Before configuration of certbot, comment the line with WSGIDaemonProcess in /etc/apache2/sites-available/XXX.conf.

# apt install certbot python3-certbot-apache
# certbot --apache
# certbot

After configuration of certbot, uncomment the line with WSGIDaemonProcess in /etc/apache2/sites-available/XXX.conf.

To do

  • System mail (e.g. for unattended upgrades, rkhunter, ...)
  • OpenAtlas mail (e.g. for feedback, pwd resets, ...
  • Backups
    • delete old backups
    • configure cronjob
  • Test file uploads and limits
  • Test frontend

Updated by Alexander Watzinger 8 days ago · 35 revisions

Also available in: PDF HTML TXT