Schlagwort: docker compose

  • 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.

  • Docmost

    Docmost

    Zur Zeit schlägt mir der YouTube Algorithmus die Anwendung Docmost am laufendem Band vor.

    Als ich das erste mal mir die Anwendung angeschaut habe, dachte ich, brauche ich nicht. Schreib/Notiz Apps habe ich on mass.

    Doch die Neugier wurde durch die vielen YouTube Vorschläge geweckt und ich habe diesen in einem Docker Container einmal ausgerollt.

    Was ist Docmost

    Auf der Webseite von Docmost schreiben die Entwickler, dass die Anwendung eine Alternative zu Notion ist.

    Docmost is an open-source alternative to the likes of Notion and Confluence.

    Die Open Source Anwendung ist dein eigenes Wiki, eine Wissensdatenbank. Sie hilft dir beim planen und Umsetzen. Soll dich durchs Studium führen.

    Ein eigenes Wiki ist, finde ich, sehr wichtig. Ich benutze seit über einem Jahr BookStack dafür was auch Open Source ist und im Kern ähnlich, aber anders aufgebaut ist. Vielleicht eine Option sich das auch mal anzusehen.

    Wer sich nicht sicher ist ob er Docmost benötigt, der sollte sich Notion einmal anschauen. Ich habe mir z.B. YouTube Videos dazu angesehen und muss sagen, interessant ist die Software schon.
    Hier muss ich dich aber warnen. Wer sporadisch die Software nur nutzt, wird vermutlich ihr Potenzial nicht ausreizen. Docmost ist komplex.

    Installation

    Damit du die Anwendung auch einmal testen kannst, stelle ich dir meinen Installationsweg einmal vor.

    Ich habe Docmost im Rechenzentrum bei Hetzner am laufen. Die Installation ist natürlich auch auf dem eigenen Homeserver möglich. Die Anwendung kann auch nur im eigenen LAN betreiben werden und Geräte wie Handy und Laptop greifen von Unterwegs per VPN auf die Anwendung zu.

    Ich nutze gerne Dockge. Es ist ein Container Verwaltungssoftware wie Portainer. Dockge ist schlanker und übersichtlicher.
    Wer die Skills hat, kann auch komplett auf Dockge oder Portainer verzichten.

    Hmmm … ich glaube ich stelle beide Wege einmal vor.

    Einmal ohne Container Verwaltungssoftware:

    # Verbindung zum Server per SSH aufbauen
    ssh root@IP
    
    # Einen Ordner erstellen
    mkdir docmost
    
    # Docker Compose file erstellen
    nano docker-compose.yml
    
    # Das Skript einfügen und speichern
    
    # Dann eine .env Datei erstellen
    nano .env
    
    # Und hier die Parameter einfügen und auf dich anpassen. Zum Schluss speichern
    
    # Container ausrollen
    docker compose up -d 

    Unter Dockge ist ist wie gesagt übersichtlicher durch die Web GUI.

    In Dockge anmelden und auf +compose ein neues Skript erstellen. Rechts unter compose.yaml das Skript einfügen. Anpassen brauchst du es nicht, dass machen wir in der .env Datei unter compose.yml. Auch hier die Daten aus der .env einfügen und fertig. Nun noch auf Deploy.

    Über http://IP:3001 rufst du Docmost auf.

    Das Docker-Compose File

    docker compose.yml Datei

    services:
      docmost:
        image: docmost/docmost:latest
        depends_on:
          - db
          - redis
        environment:
          APP_URL: ${WEB_URL}
          APP_SECRET: ${REPLACE_WITH_LONG_SECRET}
          DATABASE_URL: postgresql://docmost:${STRONG_DB_PASSWORD}@db:5432/docmost?schema=public
          REDIS_URL: redis://redis:6379
          MAIL_DRIVER: ${MAIL_DRIVER}
          SMTP_HOST: ${SMTP_HOST}
          SMTP_PORT: ${SMTP_PORT}
          SMTP_USERNAME: ${SMTP_USERNAME}
          SMTP_PASSWORD: ${SMTP_PASSWORD}
          SMTP_SECURE: ${SMTP_SECURE}
          MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS}
          MAIL_FROM_NAME: ${MAIL_FROM_NAME}
        ports:
          - 3000:3000
        restart: unless-stopped
        volumes:
          - docmost:/app/data/storage
      db:
        image: postgres:16-alpine
        environment:
          POSTGRES_DB: docmost
          POSTGRES_USER: docmost
          POSTGRES_PASSWORD: ${STRONG_DB_PASSWORD}
        restart: unless-stopped
        volumes:
          - db_data:/var/lib/postgresql/data
      redis:
        image: redis:7.2-alpine
        restart: unless-stopped
        volumes:
          - redis_data:/data
    volumes:
      docmost: null
      db_data: null
      redis_data: null
    networks: {}

    .env Datei

    # ${WEB_URL}
    WEB_URL=http://localhost:3000 
    
    # ${STRONG_DB_PASSWORD} ohne Sonderzeichen und Umlaute
    STRONG_DB_PASSWORD=HIER-PASSWORT 
    
    #${REPLACE_WITH_LONG_SECRET} ohne Sonderzeichen und Umlaute
    REPLACE_WITH_LONG_SECRET=HIER-PASSWORT 
    
    
    ## Um Benutzer in Ihren Arbeitsbereich einzuladen wird ein smtp Zugang benötigt
    # ${MAIL_DRIVER}
    MAIL_DRIVER=smtp 
    
    #${SMTP_HOST}
    SMTP_HOST= smtp.mail.yahoo.com
    
    # ${SMTP_PORT}
    SMTP_PORT= 587
    
    # ${SMTP_USERNAME}
    SMTP_USERNAME= mai@yahoo.de
    
    # ${SMTP_PASSWORD}
    SMTP_PASSWORD= HIER-PASSWORT
    
    # ${SMTP_SECURE}
    SMTP_SECURE= false
    
    # ${MAIL_FROM_ADDRESS}
    MAIL_FROM_ADDRESS=mail@yahoo.de
    
    # ${MAIL_FROM_NAME}
    MAIL_FROM_NAME=Docmost
  • 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.