Skip to content

Entwicklung mit Linux

Olav Seyfarth edited this page Mar 13, 2024 · 8 revisions

Entwicklungsumgebung einrichten

Hier wird erklärt wie man eine Umgebung auf Linux mit Docker einrichtet, um an twofactor_email zu entwickeln. Die Anleitung orientiert sich an der offiziellen Anleitung von Nextcloud.

1. Docker Desktop installieren

Virtualization Support muss nur aktiviert werden, wenn nicht eh schon ist.

Nextcloud Anleitung:

Ausführliche Anleitung:

Originalanleitung von Docker:

2. Docker dev image von Nextcloud einrichten

Docker dev image von Nextcloud laden und einrichten:

git clone https://github.com/juliushaertl/nextcloud-docker-dev
cd nextcloud-docker-dev
./bootstrap.sh

Docker dev image starten (muss immer zum Starten ausgeführt werden):

docker compose up nextcloud

Mit Strg+C Process wieder beenden

Quelle:

3. twofactor_email reinladen

Wir befinden uns im geklonten nextcloud-docker-dev Ordner. Nun in den Apps Ordner wechseln und twofactor_email klonen:

cd workspace/server/apps
git clone [email protected]:datenschutz-individuell/twofactor_email.git

4. JS und PHP Pakete installieren

Composer npm usw. muss bei Bedarf installiert werden.

composer i
npm ci

5. Neues JS builden

Builden von JS (Muss immer gemacht werden, wenn Frontend Dateien geändert wurden (z.B. Vue)

Nun sollte die twofactor_email App schon in Nextcloud erscheinen und nach Aktivierung funktionieren. Außerdem kann das Projekt bearbeitet und getestet werden.

Befehle während der Entwicklung

Mit Nextcloud error log (PHP-Backend) verbinden

docker exec -ti master-nextcloud-1 tail -f data/nextcloud.log

Docker dev image starten:

Wir befinden uns im geklonten nextcloud-docker-dev Ordner.

docker compose up nextcloud

Mit Strg+C Process wieder beenden

Neues JS builden

Builden von JS (Muss immer gemacht werden, wenn Frontend Dateien geändert wurden (z.B. Vue)

npm run build

Tests ausführen

Dockercontainer betreten:

docker exec -it master-nextcloud-1 bash

In twofactor_email Ordner wechseln und tests ausführen:

cd apps/twofactor_email/
composer run-script test

Alte Nextcloudinstanz zum Testen starten:

Es kann einfach eine Docker Instanz einer alten Version von Nextcloud gestartet werden. Wir wählen für SERVER_BRANCH den gewünschten Branch oder Tag aus https://github.com/nextcloud/server. Außerdem linken wir unseren lokalen twofactor_email Projektordner in den Container. "PFAD/ZUM" muss dabei mit dem Pfad zu unserem Klon des nextcloud-docker-dev Projektes ausgetauscht werden.

docker run --rm -p 8080:80 -e SERVER_BRANCH=v27.1.7 -v PFAD/ZUM/nextcloud-docker-dev/workspace/server/apps/twofactor_email:/var/www/html/apps/twofactor_email ghcr.io/juliushaertl/nextcloud-dev-php80:latest

Die Instanz ist möglicherweise nicht über http://nextcloud.local/ erreichbar. Ggf findest du sie in Docker Desktop (https://cloud.nextcloud.com/s/iyNGp8ryWxc7Efa?dir=undefined&path=%2F1%20Setting%20up%20a%20development%20environment%2FTutorial%20for%20Ubuntu&openfile=6446103#h-2-access-your-nextcloud-in-the-browser)

image


Olavs more minimalistic approach on Arch Linux

# AS ROOT
pacman -S docker docker-compose docker-buildx
# optional, but provides more networks with lesser hosts per network, buildkit still necessary or default meanwhile?
cat >/etc/docker/daemon.json <<'EOF' {
  "default-address-pools": [
    {
      "base": "172.16.0.0/12",
      "size": 26
    }
  ],
  "features": {
    "buildkit": true
  }
}
EOF
systemctl enable --now docker.socket
usermod -aG docker <DEV_USER>
# In order for group memberships to be activated, log off and back on

# AS DEV_USER
# assumes a working GitHub environment including SSH key setup to bidi-sync via GIT
# change to a reasonable dev root folder
git clone [email protected]:juliushaertl/nextcloud-docker-dev.git
cd nextcloud-docker-dev
./bootstrap.sh
# Wait until finished without error ##QUESTION: How to upgrade this later on?

docker compose up --pull always -d nextcloud
# Nextcloud instance should be accessible from the host via http://nextcloud.local:80/
# User: admin, Password: admin
# additional default users see https://juliushaertl.github.io/nextcloud-docker-dev/basics/overview/#default-users