Portfolio Performance in Docker

Hallo zusammen,

es gab hier vor einiger Zeit die Frage nach PP in Docker an dem ich ebenfalls interessiert war. Ich habe mir das jetzt nochmal angeguckt und es läuft. Mit dem Container kann man PP dann einfach im Browser aufrufen z.B. über ein Tablet.

Ich setze jetzt mal ein paar Docker Grundkenntnisse voraus, daher hier nur eine kurze Anleitung :slight_smile:

dockerfile

############## docker build -t portfolio . #################
FROM jlesage/baseimage-gui:debian-12-v4

ENV APP_NAME="PortfolioPerformance"
ENV APP_ICON_URL=https://www.portfolio-performance.info/images/logo.png
ENV VERSION 0.72.2
ENV ARCHIVE https://github.com/buchen/portfolio/releases/download/${VERSION}/PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz
ENV JAVA_VER 23

RUN \
    apt-get update && \
    apt-get -y --no-install-recommends install apt-transport-https \
        wget \
		ca-certificates \
	&& wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /usr/share/keyrings/adoptium.asc \
	&& echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb bookworm main" | tee /etc/apt/sources.list.d/adoptium.list \
	&& apt-get update \
	&& apt-get -y install \
	temurin-${JAVA_VER}-jre && \
    apt-get purge -y apt-transport-https \
        wget && \
    apt-get autoremove -y && \
    apt-get clean

RUN \
    add-pkg libgtk-3-bin && \
    add-pkg --virtual build-dependencies wget && \
    cd /opt && wget ${ARCHIVE} && tar xvzf PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz && \
    echo "-configuration\n/opt/portfolio/configuration\n-data\n/opt/portfolio/workspace\n$(cat /opt/portfolio/PortfolioPerformance.ini)" > /opt/portfolio/PortfolioPerformance.ini && \
    echo "osgi.nl=de" >> /opt/portfolio/configuration/config.ini && \
    chmod -R 777 /opt/portfolio && \
	rm -r PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz && \
    install_app_icon.sh "$APP_ICON_URL" && \
    del-pkg build-dependencies && \
    sed -i "s/resize = 'scale';/resize = 'remote';/g" /opt/noVNC/app/ui.js

RUN \
	echo '#!/bin/sh' >> /startapp.sh && \
    echo 'cd /opt/portfolio/workspace' >> /startapp.sh && \
	echo 'exec /opt/portfolio/PortfolioPerformance' >> /startapp.sh && \
	chmod +x /startapp.sh

Die Datei speichert ihr auf eurem Docker Gerät, loggt euch per SSH ein, navigiert zu dem Pfad und gebt diesen Befehl ein:

docker build -t portfolio .

Der Punkt am Ende ist wichtig :wink:

Jetzt erstellt er das Image, nachdem das alles fertig ist den Container starten:

docker run -d \
--name PortfolioPerformance \
-v /pfad/zum/Ordner/PortfolioPerformance:/opt/portfolio/workspace \
-p 5800:5800 \
-e KEEP_APP_RUNNING=1 \
-e DARK_MODE=1 \
-e USER_ID=0 \
-e GROUP_ID=0 \
-e TZ="Europe/Berlin" \
portfolio

Alternativ als compose:

services:
  portfolioperformance:
    image: portfolio
    container_name: PortfolioPerformance
    ports:
      - 5800:5800
    volumes:
      - /pfad/zum/Ordner/PortfolioPerformance:/opt/portfolio/workspace
    environment:
      - KEEP_APP_RUNNING=1
      - DARK_MODE=1
      - USER_ID=0
      - GROUP_ID=0
      - TZ=Europe/Berlin
    restart: always

Anschließend einfach im Browser über eure-Geräte-IP:5800 öffnen.
In dem von euch gewählten Pfad könnt ihr jetzt eure Depot.xml Datei ablegen und im Browser öffnen.

Updates funktionieren ebenfalls, man muss das Image nicht bei jeder Version neu bauen.

Was nicht funktioniert ist das aufrufen von URLs über PP, da kein Browser installiert ist :wink:

In den Einstellungen muss noch ein Haken bei SWTChart gesetzt werden sonst funktioniert die Bestandsansicht nicht richtig. Das ist ein bekannter Fehler bei Debian.

Feedback ist gerne gesehen :slight_smile:

12 Likes

Hi,

zunächst vielen Dank für deine Lösung.

Ich wollte das ganze auf meiner Synology DS218+ zum Laufen bringen. Allerdings habe ich bisher für die Installation der Container immer die entsprechende Docker-Oberfläche für die Synology verwendet. Da meine learning-by-doing-Skills noch nicht für die Kurzanleitung reichen, würde ich mich (und bestimmt auch zahlreiche andere) sehr über eine Anleitung für die Installation über das Docker-Programm der Synology (https://www.synology.com/de-de/dsm/feature/docker) freuen!

Vielleicht kann jemand weiterhelfen.

Besten Dank im voraus!

Viele Grüße

Stephan

Daran wäre ich auch interessiert.

1 Like

dtpnk hat ein Dockerfile auf Github publiziert. Und auch als Package publiziert.

Laut Doku kann man das mit folgenden Kommando verwenden:

docker pull docker.pkg.github.com/dtpnk/docker-portfolio/docker-portfolio:latest

Kann Synology damit was anfangen? Wenn das tut, können wir das weiter aufpolieren.

Laut dieser Anleitung kann man in den Einstellungen weitere Docker Repositories hinterlegen (ist ja auf Github publiziert) und dann auch danach suchen:

@Stephan_B

bei meiner Recherche habe ich eine ganz gute Anleitung gefunden, wie das add-on Programm Docker auf einer Synology NAS installiert wird. Zumindest ist damit schon einmal eine Basis geschaffen. Hier ist der link zu der Anleitung:

Danke für die Anleitung! Docker läuft soweit super auf meiner NAS.

Nun ist nur das Problem, wie ich genau in der Anleitung gezeigten Oberfläche die Docker Version von Portfolio Performance installiert bekomme…

Es gibt die Möglichkeit unter Abbild/Image auch andere URLs/Files einzubinden (siehe: https://www.cryptocurrencynut.com/monero-node-synology-nas/). Allerdings kann man scheinbar nur Adressen von https://hub.docker.com/ hinzufügen. Zumindest hat der Github-Link nicht funktioniert.

Ich habe aber eine funktionierende Variante, jedoch nur für die ältere Version 0.42.1:

  1. in der Docker-Oberfläche zu Abbild/Image gehen
  2. dort unter Hinzufügen/Add folgende URL einfügen: https://hub.docker.com/r/lenusch/performance-portfolio

Danach wird das Paket geladen. Schön wäre es natürlich, wenn man auf diesem Weg auch die aktuellste Version installieren könnte.

Nachtrag:
Ich konnte den Container zwar installieren, allerdings wird dieser nach dem Start immer wieder unerwartet gestoppt! :frowning:

@Stephan_B
Super, ich finde es gut wie du dich in das Thema eingearbeitet hast und die ersten Gehversuche mit Docker auch erfolgreich sind. Ich habe zwar auch schon die Docker-Version auf meiner Synology NAS installiert, bin zur Zeit aber noch dabei, mich in das Thema weiter einzuarbeiten. Allerdings stelle ich mir immer noch die Frage, welchen Vorteil mir die Installation von PP mit Docker bringen soll. Ich habe die Datenfiles von PP alle in eine Synology Cloud untergebracht und habe so mit einem Notebook und einem Desktop (beide mit Windows 10) von überall Zugriff auf die zuletzt bearbeiteten files. Welchen Vorteil bietet mir die Nutzung von PP mittels Docker?

Die Installation auf einem Rechner ist natürlich problemlos möglich. Ich hätte aber gern eine Lösung, wo die entsprechenden Daten auf meiner NAS liegen und ich von überall Zugriff habe. Das heißt, mittels Docker könnte ich auf PP mit jedem Endgerät von Überall ohne zusätzliche Installation zugreifen.

Ich habe das Problem mal auf Github veröffentlicht, vielleicht gibt es eine Rückmeldung: https://github.com/sunsided/portfolio-performance-docker/issues/1

Funktioniert einwandfrei auf meinem HomeServer! Vielen Dank!

1 Like

ich wärme das Thema nochmals auf - nutze ebenfalls eine Synology 720+ mit Docker und möchte dort gern mein PP auslagern, da das mittlerweile das einzige Programm ist, weswegen ich mein Ipad beiseite lege und den Laptop anschmeiße. Ich möchte PP gern plattformunabhänig per Browser bedienen und dazu Docker verwenden.

Ich habe aus dem Docker-Repository den Docker von sunsides installiert, leider läuft der bei mir überhaupt nicht. Nächster Versuch mit dem Build von totti4ever (https://hub.docker.com/r/totti4ever/portfolio-performance) der läuft auf meiner DS eigentlich zufriedenstellend, allerdings habe ich damit keine Schreibberechtigungen auf den gemounteten Ordnern. Ich würde schon gern die PP-Dateien außerhalb des Docker-Workspaces lagern, damit ich diese in meine Backups integrieren kann.

Soweit ich mich nun eingelesen habe, liegt es daran, dass die UID des Dockerfiles (1000) auch auf meiner Synology verwendet werden soll. In der DSM habe ich allerdings keinen User mit der UID=1000 - ich habe einen Docker-Benutzer angelegt mit der UID=1029, der hätte entsprechende Rechte und nun möchte ich, dass der Container mit der UID=1029 gestartet wird, jedoch ist IM Container kein solcher user bekannt (klar, woher soll der das wissen)

Meine Frage als Anfänger: wie bekomme ich im DockerContainer nun einen User mit der ID=1029 angelegt, der die Prozesse im Container ausführen kann und auch Schreibrechte auf meinem Mount hat?

Vielen Dank

Eher eine Unix-Frage. Vielleicht hilft da die allgemeine Antwort: Du kannst dir die UIDs z.B. unter /etc/passwd sowohl innerhalb als auch außerhalb des Containers ansehen (ggflls sudo cat /etc/passwd). Mittels chown (bzw. sudo chown) und chmod verändert du die Berechtigungen und die Owner von Dateien.

Viele Grüße.

ah, schön dass es hier inzwischen auch ein fertiges File mit VNC gibt…
Wie boersenplatz4 schon schrieb eine BS Frage… Da die Grundkonfiguration schon einigermaßen unsicher ist… nur http, keine Benutzerabfrage, VNC ohne Passwort… tut es auch ein CHMOD 777 auf die Datei :slight_smile:

Ich habe das ganze auch auf einer kostenlosen AWS EC2 unit zum laufen bekommen.

Ich weiß nur noch nicht so ganz, wie ich dafür sorgen kann, dass nur ich Zugriff zu meinem Portfolio habe und nicht jeder, der meine IP erraten kann. Hat da jemand eine Idee?

Die SuFu im AWS Forum scheint kaputt zu sein :thinking:
However, ohne eine statische IP von der aus du zugreifst wird es schwierig:

Die Frage die sich mir stellt, 12 Monate kostenlos und dann?!

Das hatte ich auch schon gefunden, geht ja aber ein bisschen gegen den Sinn, dass man PP überall unabhängig von Device nutzen kann.

Die EC2 Instanz, die man braucht, kostet 30$ pro Jahr wenn man im voraus bezahlt. Das ist für Personen, die sich kein Raspberry Pi oder NAS dafür anschaffen wollen vielleicht ganz interessant.

1 Like

Das ist der Hacken wenn man Clouds einsetzen möchte. Entweder sichert man den Zugang via IP-Adresse oder zieht ein weiteres Layer für die Authentifizierung ein. PP kennt ihr nur die Verschlüsselung der Datei und AWS die Kontrolle über IP. Evtl hilft dir ja https://www.s3auth.com/ .

HI Stephan,

leider habe ich den Container auch nicht auf meinem QNAP TS-470 Pro zum laufen gebracht. Habe mehrere beim dockerhub gefunden, aber leider startet keins der Container.

Gibt es ein Container der auch auf meinem QNAP läuft?

Viele Grüße,
charlie

Hallo,

ich habe es nochmal über die Konsole installiert, damit klappt es auch auf einem QNAP NAS.

Vielen Dank,
charlie

Ja die das war mein Versuch, an dem ich nach paar Tagen auch gescheitert bin. Leider hab ich es nicht zum laufen gebracht.

Hatte ein kleines Account Problem, aber jetzt geht wieder alles. Nochmals vielen Dank an @Thomas :slight_smile:

Mit Update 0.50 ist eine neuere Java Version nötig, ich habe daher den Inhalt der dockerfile Datei im Startpost aktualisiert.

@lenusch
Zur Synology Oberfläche kann ich nicht viel sagen, über die Konsole sollte es aber auch mit einer Synology funktionieren.