/qfieldcloud-onprem-setup

Repository with commands for setting up an onprem QFieldCloud

GNU General Public License v3.0GPL-3.0

QFieldCloud on-premise setup

Dépôt pour installation et mise en route d'un QFieldCloud auto-hébergé sur machine linux (Debian)

L'installation et la configuration peuvent être faites de deux manières :

  • soit via commandes linux dans le terminal
  • soit via exécution de playbooks ansible (pas encore implémenté)

Mise en route via commandes linux

  • se connecter à la machine en tant que qu'utilisateur root, via sudo su par exemple

Installations

  • installer les paquets apt nécessaires
apt install -y sudo git certbot pwgen pass keepass2

Installation de docker

sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Configuration de la machine linux

  • créer l'utilisateur unix qfc
QFC_ID=666
adduser --shell /bin/bash --uid ${QFC_ID} qfc
  • ajouter l'utilisateur qfc aux groupe sudo et docker
usermod -aG sudo qfc
usermod -aG docker qfc
  • lancer une session sous l'utilisateur qfc
su qfc
  • cloner le dépôt qfieldcloud
cd ~
git clone --recurse-submodules https://github.com/opengisch/qfieldcloud.git
  • basculer sur le tag de la version désirée (la dernière est la v0.26.3)
cd /opt/qfieldcloud
git checkout v0.26.3

Configuration du serveur QFieldCloud

  • copier le fichier de configuration
cp .env.example .env
  • modifier les variables d'environnement nécessaires du fichier .env, en utilisant pwgen pour générer des clés et mots de passe

  • créer le fichier compose standalone

touch docker-compose.override.standalone.yml
  • remplir ce fichier nouvellement créé avec le contenu de ce fichier, via cat > docker-compose.override.standalone.yml puis CTRL+C / CTRL+V en terminant la saisie via CTRL+D

Démarrage et initialisation

  • démarrer les services docker
docker compose up -d --build
  • initialiser le serveur qfieldcloud
docker compose exec app python manage.py migrate
docker compose run app python manage.py collectstatic --noinput
docker compose run app python manage.py createsuperuser --username admin --email admin@mon.domain

En veillant à changer l'adresse mail du super-user et en notant le mot de passe saisi, par exemple via pass ou dans un fichier keepass

  • vérifier l'état des services
docker compose exec app python manage.py status

Certificats SSL

  • éteindre le service du serveur web nginx
docker compose down nginx --remove-orphans
source .env
certbot certonly --standalone -d ${QFIELDCLOUD_HOST}
  • copier les certificats dans la conf nginx de qfieldcloud
sudo cp /etc/letsencrypt/live/${QFIELDCLOUD_HOST}/privkey.pem ./conf/nginx/certs/${QFIELDCLOUD_HOST}-key.pem
sudo cp /etc/letsencrypt/live/${QFIELDCLOUD_HOST}/fullchain.pem ./conf/nginx/certs/${QFIELDCLOUD_HOST}.pem
  • réallumer le service du serveur web nginx
docker compose up nginx -d --build

Installation via ansible (pas encore implémenté)

  • installer ansible
apt install ansible
  • ajouter l'hôte dans ansible/env/hosts et ses variables dans ansible/env/host_vars/$HOST.yml

  • excéuter les playbooks ansible

ansible-playbook setup.yml --inventory env --limit $HOST --tags install -K