====== ODK Central Server bei Hetzner ======
Diese Anleitung ist WIP!
Anleitung:\
[[https://docs.getodk.org/central-install-digital-ocean/#central-install-digital-ocean|Installing Central on DigitalOcean]]
===== SSH-Schlüssel erzeugen =====
* siehe [[ops:start#ssh|DevOps SSH]]
===== Server bestellen =====
* Typ: CPX11
* 2 VCPU
* 2 GB Ram
* Ubuntu 22.04
===== DNS anlegen =====
odk IN A {IPV4}
odk IN AAAA {IPv6}
central.odk IN CNAME odk
===== Docker installieren =====
Siehe: [[https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository|Install Docker Engine on Ubuntu]]
* Uninstall old versions
root@...# for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
* Set up Docker's apt repository.
# Add Docker's official GPG key:
root@...# apt-get update
root@...# apt-get install ca-certificates curl gnupg
root@...# install -m 0755 -d /etc/apt/keyrings
root@...# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
root@...# chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
root@...# echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
root@...# apt-get update
* Install the Docker packages.
root@...# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
* Verify that the Docker Engine installation is successful by running the hello-world image.
root@...# docker run hello-world
* Test docker version:
root@...# docker --version && docker compose version
* To update docker:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
===== Firewall überprüfen =====
* Status checken:
root@...# ufw status verbose
* Evtl. die Firewall deaktivieren:
root@...# ufw disable
===== Install ODK Central and configure it =====
cd /srv
git clone https://github.com/getodk/central
cd central
git submodule update -i
* Create environment file and edit. See also [[#configure_hetzner_email_server|Configure Hetzner Email Server]] below:
cp .env.template .env
vim .env
* Allow PostGres updates:
touch ./files/allow-postgres14-upgrade
* Bundle everything together into a server:
docker compose build
===== Configure Hetzner Email Server =====
Hetzner email accounts documentation: [[https://docs.hetzner.com/de/konsoleh/account-management/email/setting-up-an-email-account/|Email-Konto einrichten]]
* Edit .env file:
# Optional: configure a custom mail server
EMAIL_FROM=noreply@diggin-data.de
EMAIL_HOST=mail.your-server.de
EMAIL_PORT=143
EMAIL_SECURE=false
EMAIL_IGNORE_TLS=true
EMAIL_USER=KONTONAME@diggin-data.de
EMAIL_PASSWORD=KONTOPASSWORD
* Build and restart the service container.
root@...# docker compose build service && docker compose stop service && docker compose up -d service
===== Starting up Central =====
* Start the server software:
docker compose up -d
* See whether it is running:
$ docker compose ps
* Visit your domain name in a web browser: [[https://central.odk.diggin-data.de/|ODK Central Login Page]]
* Restart the server
===== Create an Admin User account =====
* Create a new admin account:
root@...# docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-create
* Make the new account an administrator:
root@...# docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-promote
* If you ever lose track of your password, you can reset it:
root@...# docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-set-password