Schlagwort: DockerCompose

  • Notion Alternative Anytype (Self-host)

    Notion Alternative Anytype (Self-host)

    Ich habe bereits von Docmost als Notion Alternative geschrieben und Docmost ist auch eine tolle Alternative. Docmost ist im Vergleich zu Notion schlank und übersichtlich. Doch wer mehr Funktionen benötigt, wird wohl immer wieder zu Notion wechseln. Das muss aber nicht sein. Es gibt eine Software, die vom Funktionsumfang an Notion heran kommt: Anytype.

    Loslösen von der USA

    In den Sozialen Medien lese ich immer mehr Beiträge das sich Menschen von US Firmen loslösen wollen. Eine Möglichkeit ist das Hosten durch einen eigenen Server. Dieser kann z.B. über eine On-Demand-VPN oder einem Reverse proxy erreichbar sein.

    Kurz meine Meinung

    Ich habe Spaß am Selbst Hosten und mache das gerne. Der Lerneffekt ist enorm. Allerdings bleibt die Verantwortung bei mir. Bei einem Datenverlust, ist viel Arbeit futsch. Der Cloud Service aus der USA ist mit der beste. Das Apple Ökosystem funktioniert hervorragend. Möchte ich mich also komplett lösen von der USA? – Nein. Doch wo ich es mir zutraue, probiere ich mich gerne aus.

    Installation

    Voraussetzung

    Bei mir läuft Anytype in einem LXC auf Proxmox. Auf dem ist Docker und Docker Compose installiert. Ein weiteres Programm was wir benötigen ist make. Da komme ich aber noch zu.
    Vielleicht noch interessant zu wissen: Die meisten Docker Container laufen über eine Web GUI. Für Anytype benötigst du deren Software. Also kannst du die auch schon mal herunterladen und installieren.

    Ok, starten wir

    Logge dich per SSH auf deinen Server ein und schau, in welches Verzeichnis du Anytype installieren möchtest.
    Nun Klonen wir das Git Repo

    git clone https://github.com/anyproto/any-sync-dockercompose.git

    und wechseln in das neu erstellte Verzeichnis

    cd any-sync-dockercompose  

    Wir erstellen nun eine Versteckte Datei. In dieser steht die Serveradresse. Pass die bitte für dich an.

    echo 'EXTERNAL_LISTEN_HOSTS=192.168.2.123' >> .env.override

    Nun rollen wir die Container aus mit

    make start

    Bei mir war make nicht installiert. Dies kannst du mit Root Rechten tun

    apt install make

    Die Installation von Anytype dauert eine ganze weile. Es werden einige Container ausgerollt.

    Nun benötigen wir noch eine yml Datei. Diese finden wir, wenn wir in den Ordner etc springen.

    cd etc 

    Hier finden wir die Datei client.yml. Diese Datei ist für uns wichtig. An diese Daten kommst du mit nano, vi oder über cat.

    cat client.yml

    Diesen Code kopierst du von der Stelle id bis consensus und fügst den z.B. in Visual Studio Code ein. Datei absichern als .yml Datei. Diese brauchst du später um dich mit Anytype zu verbinden (auch auf dem Smartphone und Tablett).

    Das war es nun schon.

    Starte nun Anytype und drücke oben rechts auf das Zahnrad. Hier stellst du Deutsch und Selbst gehostet ein. Die Datei die du gerade gespeichert hast, fügst du in Selbst gehostete Konfiguration ein.

    Wenn du noch keinen Tresor hast, kannst du nun einen erstellen. Die angezeigten Wörter sind wichtig. Gut abspeichern. Verlierst du die, musst du einen neuen Tresor erstellen und deine Daten sind weg.

    Herzlichen Glückwunsch. Nun hast du Anytype.
    Wie oben schon geschrieben, Anytype verbindet sich im Heimnetz. Eine Syncronisation erfolgt somit über diese Installation nur dann, wenn du im heimischen Netzwerk bist. Das kann z.B. über eine VPN möglich sein oder du musst warten, bis du wieder zu Hause bist. Deine Daten auf dem Smartphone sind Lokal auf dem Gerät gespeichert. Bei Notion soll eine Verbindung zum Internet Voraussetzung sein.

    Quelle

    Der Quellcode von Anytype ist Teilweise Open Source.

    Quelle: https://github.com/anyproto/any-sync-dockercompose

  • LinkAce ist in Version 2.0 verfügbar

    LinkAce ist in Version 2.0 verfügbar

    LinkAce ist ein selbst gehostetes Lesezeichenarchiv (Bookmarks) welches Kostenlos und Open Source ist. Ich habe es bereits schon einige Zeit im Einsatz und finde es sehr übersichtlich und schick.

    Der Entwickler schreibt auf seinem Blog:

    Unterstützung für mehrere Benutzer

    LinkAce unterstützt jetzt mehrere Benutzer und verfügt über ein verbessertes Berechtigungssystem sowie neue Sichtbarkeitseinstellungen für Links, Listen und Tags. Folgendes ist neu:

    • Administratoren können Systemeinstellungen verwalten und neue Benutzer einladen.
    • Sie können jetzt Links, Listen und Tags als öffentlich, intern oder privat festlegen und steuern, wer sie sehen kann – ob öffentliche oder angemeldete Benutzer.
    • Links, Listen und Tags zeigen jetzt den Namen des Autors an, sodass klar ist, wer sie hinzugefügt hat.
    • Jeder Benutzer verfügt über eigene API-Schlüssel für die Integration von Drittanbieter-Apps und Administratoren können auch systemweite API-Schlüssel erstellen.

    LinkAce unterstützt jetzt auch Single Sign-On (SSO) über OAuth oder OIDC, wobei bereits 12 Anbieter integriert sind, darunter eine generische OIDC-Option.

    Benutzeroberfläche

    Die Benutzeroberfläche wurde für eine bessere Struktur, Konsistenz und Lesbarkeit komplett überarbeitet.

    • Drei neu gestaltete Anzeigemodi für Links: Kompakt-, Detail- und Kartenansicht. Sie können direkt über die Benutzeroberfläche ganz einfach zwischen ihnen wechseln, ohne in die Einstellungen gehen zu müssen.
    • Die Hauptnavigation wurde optimiert, sodass weniger Klicks zur Navigation erforderlich sind.
    • Beim Hinzufügen oder Bearbeiten von Links werden jetzt Listen und Tags vorgeladen, was den Vorgang beschleunigt und nahezu sofortige Suchvorgänge ermöglicht.
    • Passen Sie LinkAce mit einem benutzerdefinierten Logotext, einem zusätzlichen Fußzeilenlink oder einer benutzerdefinierten Kontaktseite an.

    Darüber hinaus können Sie jetzt Links, Listen und Tags gleichzeitig bearbeiten, um die Verwaltung zu beschleunigen.

    Verwaltung

    • Audit-Protokolle wurden neu geschrieben und protokollieren jetzt auch Ereignisse auf Systemebene.
    • Allen beim Import verarbeiteten Links wird ein eindeutiger Tag hinzugefügt, um sie später identifizieren zu können.
    • Es gibt einen dedizierten CLI-Befehl zum Testen der E-Mail-Konfiguration.

    Ausführen von LinkAce

    • Für die einfache Bereitstellung von LinkAce in Ihrem Kubernetes-Cluster steht ein Helm-Diagramm zur Verfügung.
    • Das Docker-Image für LinkAce wurde neu geschrieben, basiert nun auf dem Caddy-Webserver und läuft standardmäßig ohne Rootberechtigung.
    • Das Setup wurde überarbeitet und unterstützt jetzt auch SQLite und PostgreSQL.

    Installation

    Ich habe LinkAce unter Dockge am laufen. Wenn du Dockge noch nicht kennst, dann solltest du dich mal dazu informieren. Es ist vergleichbar mit Portainer nur schlanker. Es sind alle wichtigen Funktionen am Board.

    Für die, die weder Portainer noch Dockge verwenden möchten, Ordner erstellen und einmal eine Docker Compose Datei sowie eine .env.

    Hier das Docker Compose Skript. Es besteht aus 3 Containern. Einmal LinkAce, dann eine Datenbank und Redis für die Performance. Wer nicht gerne mit MariaDB arbeitet, kann auch alternativ Postgres und SQLite verwenden. Ich habe das fertige Skript von GitHub genommen.

    services:
      # --- LinkAce
      app:
        image: docker.io/linkace/linkace:latest
        restart: unless-stopped
        depends_on:
          - db
        ports:
          - 8123:80 #ggf Port anpassen bei der 8123
          # Remove the hash of the following line if you want to use HTTPS for this container
          #- "0.0.0.0:443:443"
        volumes:
          - ./.env:/app/.env
          - ./backups:/app/storage/app/backups
    
      # --- Database
      db:
        image: docker.io/library/mariadb:11.5
        restart: unless-stopped
        command: mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
        environment:
          - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
          - MYSQL_USER=${DB_USERNAME}
          - MYSQL_PASSWORD=${DB_PASSWORD}
          - MYSQL_DATABASE=${DB_DATABASE}
        volumes:
          - db:/var/lib/mysql
    
      # --- Cache
      redis:
        image: docker.io/bitnami/redis:7.4
        restart: unless-stopped
        environment:
          - REDIS_PASSWORD=${REDIS_PASSWORD}
    
    volumes:
      db: null

    Nun kommt die .env Datei. Hier sollten zumindest 2 Passwörter geändert werden. Einmal das DB_PASSWORD und einmal das REDIS_PASSWORD.

    ## LINKACE CONFIGURATION
    
    # Der App-Schlüssel wird später generiert, bitte belassen Sie es dabei
    APP_KEY=someRandomStringWith32Characters
    
    ## Konfiguration der Datenbankverbindung
    ## Achtung! Diese Einstellungen werden während des Web-Setups konfiguriert, bitte ändern Sie sie jetzt nicht.
    # Einstellen des Datenbanktreibers 
    DB_CONNECTION=mysql
    # Stellen Sie hier den Host Ihrer Datenbank ein
    DB_HOST=db
    # Stellen Sie hier den Port Ihrer Datenbank ein
    DB_PORT=3306
    # Legen Sie hier den Namen der Datenbank fest
    DB_DATABASE=linkace
    # Legen Sie sowohl den Benutzernamen als auch das Passwort des Benutzers fest, der auf die Datenbank zugreift
    DB_USERNAME=linkace
    # Schließen Sie Ihr Passwort in Anführungszeichen (") ein, wenn es Sonderzeichen enthält
    DB_PASSWORD=ChangeThisToASecurePassword!
    
    ## Redis-Cache-Konfiguration
    # Legen Sie hier die Redis-Verbindung fest, wenn Sie sie verwenden möchten
    REDIS_HOST=redis
    REDIS_PASSWORD=ChangeThisToASecurePassword!
    REDIS_PORT=6379
    
    ## Mail-Konfiguration
    MAIL_FROM_ADDRESS=your@email.com
    MAIL_FROM_NAME=LinkAce
    # Legen Sie hier den Treiber fest, der für den E-Mail-Versand verwendet wird, Standard ist `log`.
    MAIL_MAILER=smtp
    # Legen Sie hier den SMTP-Host und seinen Port fest
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    # Legen Sie hier den Benutzernamen fest, der zur Verbindung mit dem SMTP-Server verwendet wird
    MAIL_USERNAME=null
    # Legen Sie hier das Passwort für die Verbindung zum SMTP-Server fest
    MAIL_PASSWORD=null
    # Wenn Ihr SMTP-Server verschlüsselte Verbindungen verwendet, aktivieren Sie dies hier, indem Sie die Variable auf „tls“ setzen.
    MAIL_ENCRYPTION=null

    Nun ganz wichtig! Es wird noch ein APP_KEY benötigt welcher bei der Installation erstellt wird. Damit das Tool Schreibrechte hat, muss die Datei einmalig andere Lese-/Schreib-Rechte bekommen und zwar chmod 666 .env.
    Dies kann später wieder geändert werden.

    Nun kannst du die Container ausrollen und mit http://Deine-IP:8123 auf dein LinkAce zugreifen. Hier müssen nun noch ein paar Einstellungen vorgenommen werden, z.B. die Konfiguration der Datenbank. Das hat leider bei mir immer zu einem Fehler geführt. Sollte der bei dir auch auftreten, kannst du das Problem wie folgt lösen:

    Gehe über die Konsole in das Verzeichnis in der die Docker Compose Datei liegt und gehe wie folgt vor:

    # Container herunter fahren
    docker compose down
    
    # Das richtige Volume finden
    docker volume ls
    
    # Volume löschen (Standart linkace-db)
    docker volume rm linkace-db
    
    #Docker Compose Skript neu ausrollen
    docker compose up -d

    Nun solltest du die Installation abschließen können.

    Links

    https://github.com/Kovah/LinkAce

    Eine Demo zu LinkAce findest du hier: https://demo.linkace.org/guest/links

  • Ollama – deine KI ohne Internet im Heimnetzwerk

    Ollama – deine KI ohne Internet im Heimnetzwerk

    Ich glaube wir kommen alle nicht mehr an der Künstlichen Intelligenz vorbei.
    Du hast eine Frage? – Google ist out, die Frage stellt man der KI.
    Du bist alleine und suchst einen Gesprächspartner? – Dein neuer Freund kann die KI sein.

    Doch die KI kann noch viel mehr. Zum Beispiel Dokumente analysieren und diese dann Tags zuordnen. Dabei möchte ich nicht, dass meine Dokumente auf irgendwelchen Servern verarbeitet werden. Hier setzt Ollama an. Eine KI die im Heimnetz ihre Anwendung findet und über Schnittstellen genutzt werden kann.

    Einige Container bieten KI Integration. Je nach Anwendung kann man unter den Environments diese KI einbinden oder ggf. auch im Menü der GUI. Eine andere Möglichkeit ist z.B. n8n, eine Automatisierungsplattform für Workflows.

    Vorraussetzungen

    Ich habe Ollama auf meinem Homeserver MINIS FORUM UM450 mit AMD Ryzen 5 4500U 6C/6T mit 4,0 GHz 32 GB RAM genutzt.

    Ollama habe ich 5 Kerne über Proxmox gegeben und damit ist die KI an seine Grenzen gekommen. Aus dem Grund nutze ich Ollama bei mir nicht aktiv. Es hat allerdings funktioniert. Man brauch nur Geduld. Falls du es mal testen möchtest kommen wir nun zum Docker Compose File.

    Docker Compose File

    Ich habe Ollama auf Dockge installiert. Den Code unten eingefügt und gewartet bis die Gigabytes von Images herunter geladen sind. Die open-webui hat auch ein paar Sekunden gebraucht bis sie gestartet ist.

    Bei dem Docker Compose Skript handelt es sich um 2 Container. Einmal Ollama selbst und die Web GUI, open-webui. Die Web GUI ist über den Port 8080 erreichbar. Also http://deineIP:8080

    networks:
      ollama-docker:
        external: false
    volumes:
      ollama: null
      open-webui: null
    services:
      ollama:
        container_name: ollama
        image: ollama/ollama:latest
        networks:
          - ollama-docker
        expose:
          - 11434
        volumes:
          - ollama:/root/.ollama
        restart: unless-stopped
      open-webui:
        container_name: open-webui
        image: ghcr.io/open-webui/open-webui:main
        networks:
          - ollama-docker
        ports:
          - 8080:8080
        volumes:
          - open-webui:/app/backend/data
        environment:
          - OLLAMA_BASE_URL=http://ollama:11434
        restart: unless-stopped
    

    Einstellungen

    Einstellen musst du nun nicht mehr viel. Auf der Webseite musst du dich Anmelden. Dabei bleiben deine Daten bei dir.

    Im Anschluss kannst du deine Lieblingssprache einstellen. Bei mir als Deutscher, deutsch.

    Nun einmal Einstellungen – Administrationsbereich – dort auf Modelle und rechts auf Manage Models. Nun auf „Um auf die verfügbaren Modellnamen zuzugreifen, hier klicken“ klicken. Hier suchst du dir ein Modellname aus. Als beliebte werden mir llama3.3 oder deepseek-r1 angezeigt. Diesen Tag fügst du unter „Modell von Ollama.com beziehen“ ein und wartest bis der Download fertig ist. Das kann dauern. In dieser Datei befindet sich das Wissen.

    Viel Spaß beim ausprobieren.

  • Immich, die SelfHost Google Foto Alternative

    Immich, die SelfHost Google Foto Alternative

    Wir alle kennen und nutzen Google. Die Suchmaschine und auch Google Fotos sind spitze. Mal eben ein Foto oder Album Plattform übergreifend teilen, mit Google kein Problem.
    Doch Google lebt von unserem Internet verhalten und wirklich wissen tut keiner, was der Riese mit unseren Daten macht. Vielleicht stört dich das nicht, doch du lebst ständig an der Cloud Speicher Grenze. 15 Gb kostenloser Cloud Speicher sind zwar ganz nett, aber reicht für Fotoalben und Backups nicht lange.

    Vielleicht war das der Grund, dass ein paar Programmierer das Open Source Projekt Immich in die Welt gerufen haben.
    Immich ist angelehnt an Google Fotos nur als SalfHost Lösung. Es gibt eine App für Apple und Google Geräte, sowie eine Weboberfläche.

    Was du dafür brauchst ist ein kleiner MiniPC. Vermutlich reicht ein Raspberry Pi 5 schon aus.

    Installation

    Mit der Anleitung tue ich mich tatsächlich schwer. Ich sag dir mal, wie es bei mir läuft. Solltest du dies bei dir ähnlich aufsetzen wollen, kannst du dich melden.

    Ich nutze Proxmox und habe dort einen Priviligierten LXC am laufen. Der LXC hat eine Anbindung zu einem Netzlaufwerk. Ich nutze hier das SMB Protokoll da dies System übergreifend ist. Unter iOS, MacOS, Linux, Androide und Windows wird die SMB Freigaben erkannt. Möchte ich an meine Fotos ohne den „Umweg“ über die Webseite oder App, kann ich mein Netzlaufwerk aufrufen und die nötigen Fotos dort raus kopieren. Dies ist z.B. eine gute Option wenn du einen NAS zu Hause im Einsatz hast. Immich bietet dir eine schöne grafische Weboberfläche, die Daten selbst sind auf dem NAS gesichert.

    Ich greife auf mein Immich über mein internes Netzwerk zu. Von unterwegs nutze ich einen VPN mit OnDemond Einstellung. Ich bin praktisch mit meinem Handy immer zu Hause und aus dem Grund habe ich keinen Reverse Proxy dazwischen geschaltet, ist aber möglich.

    Docker und Dockge installation

    Ausgehend von einem Linux System auf Debian.

    # System Aktualisierung
    apt update && apt upgrade -y && apt autoremove -y && reboot
    
    # Installation von Docker 
    ## Installation von curl
    apt install curl -y
    
    ## Installation von Docker
    curl -sSL https://get.docker.com | sh
    
    ## Installation von Docker Compose
    apt install docker-compose -y
    
    # Installation von Dockge
    ## Ordner erstellen
    mkdir -p /opt/stacks /opt/dockge
    
    ## und ins Verzeichnis wechseln
    cd /opt/dockge
    
    ## Nun das Compose Skript herunterladen
    curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
    
    ## nun noch den Container ausrollen
    docker compose up -d
    
    ## Dockge ist unter erreichbar
    http://192.168.IP.IP:5001

    Installation von Immich

    Von der GitHub Seite habe ich mir das Skript herunter geladen und unter Dockge auf +Compose geklickt. Dort folgendes Skript eingefügt:

    #
    # WARNING: Make sure to use the docker-compose.yml of the current release:
    #
    # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    #
    # The compose file on main may not be compatible with the latest release.
    #
    
    name: immich
    services:
      immich-server:
        container_name: immich_server
        image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
        # extends:
        #   file: hwaccel.transcoding.yml
        #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
        volumes:
          # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
          - ${UPLOAD_LOCATION}:/usr/src/app/upload
          - /etc/localtime:/etc/localtime:ro
        env_file:
          - .env
        ports:
          - 2283:2283
        depends_on:
          - redis
          - database
        restart: always
        healthcheck:
          disable: false
      immich-machine-learning:
        container_name: immich_machine_learning
        # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
        # Example tag: ${IMMICH_VERSION:-release}-cuda
        image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
        # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
        #   file: hwaccel.ml.yml
        #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
          - model-cache:/cache
        env_file:
          - .env
        restart: always
        healthcheck:
          disable: false
      redis:
        container_name: immich_redis
        image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
        healthcheck:
          test: redis-cli ping || exit 1
        restart: always
      database:
        container_name: immich_postgres
        image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
        environment:
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_USER: ${DB_USERNAME}
          POSTGRES_DB: ${DB_DATABASE_NAME}
          POSTGRES_INITDB_ARGS: --data-checksums
        volumes:
          # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
          - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
        healthcheck:
          test: pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" ||
            exit 1; Chksum="$$(psql --dbname="$${POSTGRES_DB}"
            --username="$${POSTGRES_USER}" --tuples-only --no-align
            --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM
            pg_stat_database')"; echo "checksum failure count is $$Chksum"; [
            "$$Chksum" = '0' ] || exit 1
          interval: 5m
          start_interval: 30s
          start_period: 5m
        command: postgres -c shared_preload_libraries=vectors.so -c
          'search_path="$$user", public, vectors' -c logging_collector=on -c
          max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on
        restart: always
    volumes:
      model-cache: null
    networks: {}

    und nun noch die .env Datei. Diese muss bearbeitet werden und zwar an folgenden Punkten:

    UPLOAD_LOCATION –> Hier dein bevorzugtes Verzeichnis eintragen. Wie oben beschrieben, nutze ich eine SMB Freigabe die unter /mnt/immich zu finden ist.

    DB_DATA_LOCATION –> Das Datenbank Verzeichnis habe ich gelassen. Kann optional angepasst werden.

    TZ –> Die Zeitzone habe ich auf Deutsch gestellt. (Europe/Berlin)

    DB_PASSWORD –> Das Datenbank Passwort sollte keine Sonderzeichen beinhalten. Nur a-Z, A-Z und 0-9.

    DB_USERNAME –> Optional kann man dies noch anpassen.
    DB_DATABASE_NAME –> Optional kann man die noch anpassen.

    # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
    
    # The location where your uploaded files are stored
    UPLOAD_LOCATION=./upload
    ## Es kann wie bei mir ein Verweis auf einen gemounteten Ordner gemacht werden. Beispiel: /mnt/immich/upload
    # The location where your database files are stored
    DB_DATA_LOCATION=./datenbank
    
    # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
    TZ=Europe/Berlin
    
    # The Immich version to use. You can pin this to a specific version like "v1.71.0"
    IMMICH_VERSION=release
    
    # Connection secret for postgres. You should change it to a random password
    # Please use only the characters `A-Za-z0-9`, without special characters or spaces
    DB_PASSWORD=PASSWORT
    
    # The values below this line do not need to be changed
    ###################################################################################
    DB_USERNAME=postgres
    DB_DATABASE_NAME=immich

    Nun auf Deploy und der Container wird erstellt. In Immich kann ich dir 2 Einstellungen noch empfehlen. Unter Verwaltung – Einstellungen – Speichervorlage – Speichervorlagen-Engine aktivieren.

    Diese Einstellung legt einen Ordner an nach deinen Einstellungen. Zum Beispiel /2025/Januar/ Foto.jpg oder /2025/2025-01-31/Foto.jpg

    Meine Vorlage sieht so aus:

    {{y}}/{{y}}-{{MM}}-{{dd}}/{{y}}-{{MM}}-{{dd}}_{{H}}-{{mm}}-{{ss}}-{{filename}}
    
    /2022/2022-02-03/2022-02-03_4-56-05-IMAGE_56437.jpg

    Eine zweite Einstellung ist der User Name. Nach der Installation wird der Ordner Admin genannt. Diesen habe ich geändert in meinen Namen. Dies kannst du unter Kontoeinstellungen – Konto – Speicherpfad.

  • Nexterm

    Nexterm

    Die Open Source Server-Management-Software für SSH, VNC und RDP.

    Beim Durchstöbern von GitHub bin ich auf das Open Source Projekt Nexterm gestoßen. Mit dieser Software kannst du deine Server per SSH, VNC und RDP ansteuern und verwalten.

    Ich betreiben Nexterm im eigenen LAN. Über einen Reverse Proxy wäre Nexterm natürlich aus dem Web auch erreichbar. Hier sehe ich allerdings ein Sicherheitsrisiko was ich nicht eingehen wollte. Zudem habe ich auf meinen Mobilgeräten eine VPN Verbindung eingerichtet und komme so über den Browser jederzeit auf meinen Server (klappt super mit dem iPad, Smartphone sind vom Display vielleicht zu klein um produktiv damit zu arbeiten).

    Nexterm nutze ich fast täglich. Der Vorteil ist: ich sehe auf einem Blick meine Server und kann mich mit einem Doppelklick direkt verbinden. IP-Adresse, Nutzer und Passwörter sind hinterlegt, so dass ich nicht erst noch gucken muss, wie war den noch mal die IP vom Server, der Nutzer und das Passwort.

    Die Installation ist denkbar einfach über ein Docker Compose Skript. Das Tool befindet sich in der frühen Fase der Entwicklung. Vor der Installation guckt bitte, welche Stabile Version gerade aktuell ist.

    services:
      nexterm:
        ports:
          - 6989:6989
        restart: always
        volumes:
          - nexterm:/app/data
        image: germannewsmaker/nexterm:1.0.2-OPEN-PREVIEW
    volumes:
      nexterm: null
    networks: {}

    Quelle: https://github.com/gnmyt/Nexterm

  • Linux, aller Anfang muss nicht schwer sein

    Linux, aller Anfang muss nicht schwer sein

    Aus irgend einem Grund bist du genau hier auf diesem Blogbeitrag gelandet. Du hast viel von Linux gehört, findest das System interessant und möchtest mehr erfahren über Linux, weißt aber nicht wie du in die Welt von Linux einsteigen kannst?
    In diesem Beitrag möchte ich dir von meinem Weg in die Linux Welt erzählen.

    Irgendwann in den 90er hatte ich mir mal eine CT Zeitung geholt in der lag eine SUSE Linux installations CD bei. Neugierig wie ich war, habe ich mir diese Installiert und war überwältigt. Es hatte soviel Ähnlichkeit mit Windows. Es gab eine grafische Oberfläche (ich glaube die erst Version von KDE). Auch das Termin fand ich interessant. Es sah besser aus als MS-DOS.

    Doch das Anwendungsspektrum für einen jungen Mann war zu gering. Ich wollte ab und an Zocken und das war damals unter Linux nicht möglich. Windows war da der Platzhirsch. Es kam wie es kommen musst, ich nutze SUSE nicht mehr und löschte es schließlich von meiner Platte.

    Ich hatte immer mal wieder einen neuen Einstieg in Linux gewagt. Es hab Knoppix, Linux Mint, Ubuntu. Ich habe sie alle mal getestet, konnte mich allerdings nie lange damit beschäftigen.

    Der Wiedereinstieg in Linux

    Ich fing an mich für die kleinen Raspberry Pi’s zu interessieren. Ich schaute bei YouTube nach Projekten und baute diese nach. War ein Projekt abgeschlossen, folge das nächste und so weiter und so weiter. Meist habe ich die SD-Karten wieder formatiert um den Pi für ein neues Projekt zu nutzen. Aus ein Pi wurden schließlich drei oder vier und ich dachte mir, 3 Pi’s sind genauso teuer in der Unterhaltung wie ein kleiner MiniPC. Also habe ich meine Pi’s verkauft und mir einen MiniPC zugelegt mit dem Betriebsystem Proxmox. Der MiniPC dient mir nun als Server. Die Möglichkeiten sind enorm. Ich fing an Virtuelle Maschinen zu betreiben und diese zu administrieren.
    Hier mal ein paar Anwendungen die ich unter Proxmox am laufen habe:

    • PiHole
    • HomeAssistent
    • WordPress
    • Plex
    • WireGuard
    • und diverse Docker Container

    Wenn dir das alles nichts sagt, Google mal. Ich glaube du wirst mindestens eins davon interessant finden.

    Fazit

    Ich habe Linux Mint auf meinem Mac als Zweitsystem, nutze es allerdings sehr wenig. Die Möglichkeiten die mir Apple bietet sind einfach enorm. Sämtliche Apps werden für Apple hergestellt.
    Unter Linux laufen viele Anwendungen bei mir über so genante Container und sind übers Web erreichbar.
    Und genau hier kommt nun mein Tipp: Schaffe dir einen Pi oder vielleicht direkt einen kleinen MiniPC an, gerne auch gebraucht. Installiere dort das Linux Betriebsystem Proxmox. Über den Webbrowser kannst du alles aus deinem Netz administrieren und erste Erfahrungen mit Linux sammeln. Dies ist, wie ich finde ein guter und einfacher Einstieg in die Linux Welt.

  • Read it Later

    Read it Later

    Wer kennt es nicht. Du sitze im Wartezimmer oder einfach nur auf dem Sofa und scrollst durchs Internet. Dabei findest du einen Interessanten Beitrag wie ein Rezept oder, so geht es mir oft, einen Interessanten IT Beitrag den ich zu Hause am Rechner umsetzen möchte.
    Damit ich den Link zum Beitrag wieder finde, lasse ich den Tap im Browser meist offen.
    Doch es geht auch einfacher. In diesem Beitrag soll es um ein paar dieser Lösungen gehen, unter anderem Self Hosting.

    Beim Suchen durchs Internet bin ich auf ein paar App gestoßen. Einige davon sind Urgesteine und ich nutze diese bereits seit viel vielen Jahren. Doch seit dem ich meinen Homeserver betreibe bin ich neugieriger geworden und möchte immer mehr in eigener Hand betreiben. Dennoch, so ganz komme ich nicht um diese Apps drum herum.
    Ich fange mal an.

    Instapaper

    Die für mich bekannteste App ist INSTAPAPER. Instapaper speichert mit einem klick den Beitrag und zwar so, dass dieser Offline in der App lesbar ist. Werbung wird oft erkannt und ausgefiltert. Die App ist für die private Nutzung weitestgehend kostenlos. Sie ist schlicht und funktional. Sie besitzt für alle gängigen Browser ein Plugin und kann damit per One Klick den Beitrag speichern so das dieser auf allen Geräten angepasst lesbar ist. Für mich ist dies eine sehr gute App die ich seit Jahren nutze (vermutlich seit meinem ersten iphone, dem 3GS).

    Die App Reeder

    Wenn wir einmal bei Apps sind, dann möchte ich die Reeder App einmal vorstellen. Hierbei handelt es sich um eine RSS App. Auch diese App gibt es schon lange und wird ständig weiter entwickelt. Dabei ist sie nie überladen.
    Die Stärke die ich hier sehe, es wird kein Account benötigt wie bei Instapaper.
    Die Stärken:

    • man kann Apps wie Instapaper integrieren
    • RSS Abos erstellen
    • es gibt in der Teilen Funktion unter iOS den Punkt „Read Later with Reeder“

    Diese App gibt es für iOS und MacOS. Ich habe sie allerdings für beide Betriebsysteme kaufen müssen. Zudem befindet sich die App seit einigen Jahren in Version 5. Die Version 4 habe ich damals auch gekauft. Ob und wann eine Version 6 kommt, ist fraglich.

    Self Host

    Doch als Serverbetreiber hat man gerne seine Daten bei sich, zudem bastel und teste ich auch gerne neue Anwendungen.
    So habe ich mich auf die Suche nach Alternativen zu Instapaper und RSS begeben. Dabei bin ich auf zwei Docker Anwendung gestoßen und einer App die mit einem Kurzbefehl die Read it Later Funktion erfüllt.

    iA Writer

    Bevor ich zur Self Host Lösungen komme, beginne ich mit der App iA Writer. Diese App nutze ich gerne. Aktuell schreibe ich diesen Blogbeitrag mit der App. Sie gibt es für den Mac und iOS Geräten. Sie ist schlank und besitzt einen Fokus Modus. Ist der Fokus Modus aktiviert (Einschalten mit CMD + D) rutscht die Zeile in der ich mich befinde in die Mitte. Die Sätze und Absätze, an denen ich gerade nicht arbeite, sind grau und damit nicht hervorgehoben.
    Doch es soll um die Read it Later Funktion gehen und das ist mit dieser App mithilfe eines Kurzbefehls möglich. Diesen kann man dann auch ins Teilen Menü mit integrieren.
    Den Unterschied, den ich zu den anderen Apps die ich hier vorgestellt habe sehe, das die Beiträge gezielt in einem Ordner deiner Wahl gespeichert werden und das als Markdown. Ich habe mir in der Cloud meiner Wahl einen Ordner erstellt der Read-it-later heißt. Immer wenn ich einen Beitrag später einmal lesen möchte oder keinen Text raus kopieren möchte, kann ich dies einfach hier drüber als eine .txt Datei speichern.
    Den Kurzbefehl bekommt man schnell über die google Suche.

    Docker Anwendung Hoarder

    Ja und hier kommen wir nun endlich zu der Self Host Lösung. Doch auch sie hat pro und contra.
    Die App ist eine Bookmark Link Anwendung. Das heißt, mit einem Klick kannst du einen Link speichern. Die Links werden in der Anwendung geöffnet und Artikel können schön Formatiert gelesen werden. Der Nachteil: Internet ist Vorraussetzung.
    Für diese Anwendung gibt es im iOS App Store eine App mit der man seinen Server verbinden kann. Zudem für die gängigen Browser ein Plugin.
    Hier geht es zum Gib Repository https://github.com/hoarder-app/hoarder

    Docker Anwendung Omnivore

    Die Vermutlich interessanteste Docker Anwendung ist Omnivore. Omnivore ist eine kostenlose Open Source Lösung und ist eine direkte Konkurrenz zu Instapaper und Pocket. Du kannst den Dienst über https://omnivore.app/ Kostenlos nutzen. Es wird lediglich ein Benutzeraccount benötigt.

    Alternativ kann man Omnivore unter Docker selbst Hosten. Allerdings ist dies derzeit nicht ganz einfach. Ich habe Omnivore auf einem LXC unter Proxmox versucht zum laufen zu bekommen. Habe dem Container 8 GB Speicher gegeben und musste dann feststellen, das diese Anwendung mehr als das doppelte benötigt. Auch sind 1024MB RAM recht knapp. Das Docker Compose Skript ist recht groß und bedarf schon ein wenig Erfahrung. Diese Probleme kennt anscheint der Entwickler und plant Abhilfe.

    Ich bin auf meinem Server nur bis zur Anmeldung gekommen. Dann traten Fehler auf.

    Mein Fazit

    Schwer schwer. Alles noch nicht ganz nach dem ich gesucht habe. Self Host ja, aber mit Einschränkung.
    Etablierte Apps binden einen ggf. durch Accounts.
    Ich werde in den nächsten Monaten viel mit der Docker Anwendung Hoarder, iA Writer und der App Reeder arbeiten. Ich denke, dass diese drei Anwendungen für mich perfekt sind. Instapaper werde ich von Zeit zu Zeit sicherlich auch weiter nutzen.

  • Nexterm – Server management

    Nexterm – Server management

    Hierbei handelt es sich um ein ganz frisches (2024) Projekt welches noch nicht lange auf dem Markt ist. Über einem YouTuber aus dem Englisch sprachigem Raum bin ich auf dies Projekt aufmerksam geworden.

    Quellen:
    https://docs.nexterm.dev
    https://github.com/gnmyt/Nexterm

    Mithilfe von Nexterm kann man über eine Web GUI eine Terminalverbindung aufbauen. Der Vorteil den ich in diesem Tool sehe ist die Bibliothek. Zu jedem LXC oder VM kann ein Terminal gespeichert werden. Einfach ein Doppelklick und man ist drin. Alles schön und sauber, übersichtlich beisammen.
    Eine weitere Stärke ist die VNC Funktion. Über diese kann man per Remote auf andere Desktops zugreifen.

    Das ganze ist über Docker einfach einrichtbar. Allerdings ist bei mir das Vertrauen in dieses junge Projekt noch nicht sehr hoch, dies auf einem öffentlichem Server betreiben zu wollen. Im Heimnetz spricht für mich nichts dagegen.

    Ich habe die Docker Compose.yml Datei genommen und diese in Dockge rein kopiert. Alternativ ist dies natürlich auch in Portainer möglich. Für die ganz fitten natürlich auch ohne dieser beiden Tools.

    Dies ist der Code von der offiziellen Webseite. Hier ist unter image die Version 1.0.1-OPEN-PREVIEW hinterlegt. Ggf. muss dies in der Zukunft angepasst werden z.B. auf eine Version oder :latest.

    services:
      nexterm:
        ports:
          - "6989:6989"
        restart: always
        volumes:
          - nexterm:/app/data
        image: germannewsmaker/nexterm:1.0.1-OPEN-PREVIEW
    volumes:
      nexterm: