Wie linkace im Docker installieren?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

ElaCorp

Benutzer
Registriert
12. Mai 2015
Beiträge
1.088
Reaktionspunkte
110
Punkte
83
Hallo

wie installiere ich https://www.linkace.org/docs/v1/setup/setup-with-docker/ ? Hier hat es jemand hinbekommen. Aber bei mir geht es nach dem Datenbank Formular im Browser nicht weiter.
https://goneuland.de/linkace-mittels-traefik-und-docker-installieren/

Mein Stack:
Code:
services:
  app:
    image: docker.io/linkace/linkace:latest
    container_name: linkace
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    ports:
      - "38080:80"            # extern:intern – bei Bedarf anpassen
    volumes:
      - /volume2/docker/linkace/.env:/app/.env
      - /volume2/docker/linkace/backups:/app/storage/app/backups
    restart: unless-stopped

  db:
    image: mariadb:10.11
    container_name: linkace_db
    command: >
      --transaction-isolation=READ-COMMITTED
      --innodb-file-per-table=1
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_bin
    environment:
      MYSQL_DATABASE: linkace
      MYSQL_USER: linkace
      MYSQL_PASSWORD: ein_sicheres_db_passwort
      MYSQL_ROOT_PASSWORD: ein_noch_sichereres_root_passwort
    healthcheck:
      test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"]
      interval: 10s
      timeout: 5s
      retries: 10
    volumes:
      - /volume2/docker/linkace/db:/var/lib/mysql
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: linkace_redis
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "ein_sicheres_redis_passwort"]
    volumes:
      - /volume2/docker/linkace/redis:/data
    restart: unless-stopped

.env
Code:
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:4a9L4J05XXXO1f2jUoF3X6s8WqZr7p0c5yBh3L8Q9nI=

# --- Datenbank (MariaDB)
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=linkace
DB_USERNAME=linkace
DB_PASSWORD=ein_sicheres_db_passwort

DB_SSL_MODE=disable
MYSQL_VERIFY_SERVER_CERT=false
MYSQL_SSL_CA=
MYSQL_SSL_CERT=
MYSQL_SSL_KEY=

# --- Redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
REDIS_PASSWORD=ein_sicheres_redis_passwort

disable-ssl.cnf
Code:
[client]
ssl-mode = DISABLED

und revers Proxy eingestellt. URL funktioniert.

Bildschirmfoto 2025-09-30 um 01.01.53.png


Hat jemand von euch einen fertigen funktionierenden Stack für Portainer?
 
Zuletzt bearbeitet:
DB_SSL_MODE=disable
Die Fehlermeldung im Screenshot zeigt, dass die Anwendung hier "required" verwendet. Es sieht danach aus das die Variable ignoriert, oder auf den Default-Wert gesetzt wird, weil das Entrypoint-Skripte (oder die Anwendung) mit dem angegebenen Wert nichts anfangen kann.

Wie verhält es sich denn, wenn DB_SSL_MODE=prefer verwendet wird?

Falls das nicht geht, würde ich im GitHub Repo nachschauen, ob es bereits einem entsprechenden Issue gibt, und notfalls einen aufmachen.
 
  • Like
Reaktionen: ctrlaltdelete
Wenn die Anleitung von Docker Compose ausgeht, dann wird ja die .env Datei verarbeitet. Bei Portainer passiert dies aber nicht....
 
Nun habe ich alle Sachen in einen Stack eingebaut. Dieser geht auch durch. Geht aber nicht. Gleicher Fehler.

Code:
version: "2.4"

services:
  app:
    image: docker.io/linkace/linkace:latest
    container_name: linkace
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    ports:
      - "38080:80"
    environment:
      APP_ENV: "production"
      APP_DEBUG: "false"
      APP_KEY: "base64:4a9L4J05mYtO1f2jUoF3X6s8WqZr7p0c5yBh3L8Q9nI="
      # --- Datenbank (MariaDB)
      DB_CONNECTION: "mysql"
      DB_HOST: "db"
      DB_PORT: "3306"
      DB_DATABASE: "linkace"
      DB_USERNAME: "linkace"
      DB_PASSWORD: "ein_sich88eres_db_passwort"
      DB_SSL_MODE: "disable"
      MYSQL_VERIFY_SERVER_CERT: "false"
      MYSQL_SSL_CA: ""
      MYSQL_SSL_CERT: ""
      MYSQL_SSL_KEY: ""
      # --- Redis
      CACHE_DRIVER: "redis"
      SESSION_DRIVER: "redis"
      REDIS_HOST: "redis"
      REDIS_PASSWORD: "ein_sich88eres_redis_passwort"
      REDIS_PORT: "6379"
    volumes:
      - /volume2/docker/linkace/backups:/app/storage/app/backups
    restart: unless-stopped

  db:
    image: mariadb:10.11
    container_name: linkace_db
    command: >
      --transaction-isolation=READ-COMMITTED
      --innodb-file-per-table=1
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_bin
    environment:
      MYSQL_DATABASE: "linkace"
      MYSQL_USER: "linkace"
      MYSQL_PASSWORD: "ein_sich88eres_db_passwort"
      MYSQL_ROOT_PASSWORD: "ein_noch_sich88ereres_root_passwort"
    healthcheck:
      test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"]
      interval: 10s
      timeout: 5s
      retries: 10
    volumes:
      - /volume2/docker/linkace/db:/var/lib/mysql

    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: linkace_redis
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "ein_sich88eres_redis_passwort"]
    volumes:
      - /volume2/docker/linkace/redis:/data
    restart: unless-stopped

Gleicher Fehler wie oben. Egal ob direkt über IP oder https und reverse proxy.
 
Was ich jetzt nur auf die schnelle sehe, du mappst /volume2/docker/linkace/.env:/app/.env gar nicht mehr.
Du kannst die .env Datei doch auch in Portainer verwenden.
 
@JohneDoe Ich habe versucht auf die env zu verzichten. Alles nur über den Stack laufen zu lassen. Egal wie ich es mache, es geht nicht. Das ist noch nicht die Lösung.

Wenn die Anleitung von Docker Compose ausgeht, dann wird ja die .env Datei verarbeitet. Bei Portainer passiert dies aber nicht....
Was ich jetzt nur auf die schnelle sehe, du mappst /volume2/docker/linkace/.env:/app/.env gar nicht mehr.
Du kannst die .env Datei doch auch in Portainer verwenden.
??? In dem einen Post sagst du, die env wird in Portainer nicht verarbeitet. Dann wiederum soll ich sie in Portainer verarbeiten. Denkst du, dass man dich da ausreichend versteht?
 
1. Die .env wird von deinem Docker Image verarbeitet und wenn sie gemappt wird, dann wird sie wohl von der PHP Anwendung auch verarbeitet, also kannst/darfst du sich nicht weg lassen.
2. Ich ging einfach davon aus, dass du die Software die du nutzt auch kennst. Wenn du Docker Compose verwendest, dann wird die .env Datei automatisch geladen und kann direkt verwendet werden. Bei Portainer geht das natürlich nicht, weil du keine compose.yml da hast. Du kannst doch aber in der UI eine Stack Env definieren. Siehe https://www.portainer.io/blog/using-env-files-in-stacks-with-portainer
Denkst du, dass man dich da ausreichend versteht?
Nach diesem netten Kommentar wünsche ich dir noch viel Erfolg. Man hätte auch einfach freundlich nachfragen können wie es gemeint war.
 
Hier eine Funktionierende version.
Code:
services:
  linkace-db:
    image: postgres:17
    container_name: linkace-db
    environment:
      POSTGRES_DB: linkace
      POSTGRES_USER: linkace
      POSTGRES_PASSWORD: testpasswort
    volumes:
      - /volume2/docker/linkace/db:/var/lib/postgresql/data:rw
    networks:
      - linkace-net

  linkace:
    image: linkace/linkace:latest
    container_name: linkace
    depends_on:
      - linkace-db
    environment:
      DB_CONNECTION: pgsql
      DB_HOST: linkace-db
      DB_PORT: 5432
      DB_DATABASE: linkace
      DB_USERNAME: linkace
      DB_PASSWORD: testpasswort
    volumes:
      - /volume2/docker/linkace/data:/var/www/html/storage:rw
    ports:
      - "38080:80"
    networks:
      - linkace-net

networks:
  linkace-net:
    driver: bridge
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat