Mealie installieren

Epinephrin90

Benutzer
Registriert
15. Sep. 2021
Beiträge
29
Reaktionspunkte
1
Punkte
3
Hallo zusammen,

ich bin frisch im NAS Geschäft (DS220+) und habe bereits den Docker installiert. Jetzt würde ich gerne Mealie irgendwie draufbringen und dort meine Rezepte hochladen.
Gibts hier irgendwo eine Step by Step Anleitung was ich genau machen muss? Ich hab genau gar keine Ahnung :(

Bin es aber leid jedes mal eine ewig lange Word Datei am PC aufzumachen :(

Liebe Grüße
Epi
 
Ich würde dir empfehlen die neuste Compose von der Projektseite zu verwenden. Es kann, muss zwar aber nicht, dass sich was geändert hat.
 
https://mariushosting.com/how-to-install-mealie-v1-on-your-synology-nas/
(von mir nicht getestet und probiert!)
Es gibt dort eine ältere Version (Jahr 2023), hier die neuere. Ob es die aktuelle ist, kannst du selber nachschauen.
Ganz unten steht, dass es Ende Februar geupdatet wurde! :) Danke!
Ich würde dir empfehlen die neuste Compose von der Projektseite zu verwenden. Es kann, muss zwar aber nicht, dass sich was geändert hat.
Du meinst die von deinem Vorposter? Das ist die aktuellste, schaut für mich zumindest so aus! :)
 
  • Like
Reaktionen: w00dcu11er
Nein, das mein ich nicht. Die Entwickler von Mealie empfehlen z.B. SQLite als Datenbank. Siehe https://docs.mealie.io/documentation/getting-started/installation/sqlite/. Marius verwendet, aber PostgreSQL. Die ist aber in der Wartung/beim Backup komplizierter. Da musst du dich mehr mit befassen. SQLite reicht, wenn du nur eine Datei sicherst. Der Stack ist ja komplett da zum kopieren und einfügen....
 
  • Like
Reaktionen: mj084
Backup innerhalb Mealie geht aber auch, so das man auch die Datenbank mal wechseln kann.
Hab auch die Anleitung von Marius genommen, geht, aber man kann es auch mit der originalen compose machen.
Frau und ich wollen nicht mehr drauf verzichten, ist echt praktisch im Alltag für Planung.
 
Wenn ich sowas lese:
Ich hab genau gar keine Ahnung :(
dann würde ich halt nicht PostgreSQL empfehlen.
Du kannst zwar in Mealie selber Backups machen, aber wenn du deine Daten mit einem Job sichern willst, dann ist es leichter wenn man SQLite verwendest und einfach den Ordner kopieren kann. Du musst beim wieder einrichten auch nicht auf die exakte Version der DB achten. Mir fällt kein Grund ein, wieso man PSQL dafür braucht. Außer du hast extrem viele Nutzer, aber dann sollte man eh wissen was man macht.
Aber am Ende muss @Epinephrin90 selber wissen was er nutzt.
 
  • Like
Reaktionen: *kw* und goetz
Da ich mich gar nicht auskenne, aber nach Schema F arbeiten kann (dachte ich), hab ich das von Marius genommen, jedoch bringt er mir beim Portainer-Mealie-Stack immer den Error 1

1742060415799.png

PGID und UID passen, die hab ich auslesen könne (auch wenn nicht mehr per Mail sondern per ssh in der cmd Box).
Ich bring diesen Stack jedoch irgendwie nicht zum Laufen.

Welche Infos braucht ihr hier von mir, dass ihr mir weiterhelfen könnt?

Liebe Grüße
Epi
 
Da ich mich gar nicht auskenne, aber nach Schema F arbeiten kann
Besser wäre es, aber wenn man probiert die Grundlagen zu lernen. Das stumpfe kopieren ohne zu wissen was es bedeutet bringt auf Dauer nichts. Du wirst bei jedem kleinen Problem Hilfe brauchen und im schlimmsten Fall ist deine Rezeptsammlung weg...

Das ist ja nicht böse gemeint, aber man liest das andauernd, dass man ann dies oder jenes betreiben will, aber eigentlich gar keine Ahnung hat wie Docker funktioniert. Docker nutzen ist alles andere als kompliziert, aber man sollte sich damit befassen.
 
  • Like
Reaktionen: Epinephrin90
Ich stimme @JohneDoe zu, um an deine Logs zu kommen: In Portainer anmelden > Stacks > Mealie > Unter Qick Actions kannst du dir u.a. die Logs anschauen wo das Problem liegt.
 
  • Like
Reaktionen: Epinephrin90
Code:
    from . import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/admin/__init__.py", line 1, in <module>
    from mealie.routes._base.routers import AdminAPIRouter
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/__init__.py", line 1, in <module>
    from .base_controllers import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/base_controllers.py", line 9, in <module>
    from mealie.core.dependencies.dependencies import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/__init__.py", line 1, in <module>
    from .dependencies import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/dependencies.py", line 17, in <module>
    from mealie.db.db_setup import generate_session
  File "/opt/mealie/lib/python3.12/site-packages/mealie/db/db_setup.py", line 10, in <module>
    settings = get_app_settings()
               ^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/config.py", line 43, in get_app_settings
    return app_settings_constructor(env_file=ENV, production=PRODUCTION, data_dir=determine_data_dir())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 455, in app_settings_constructor
    "SECRET": determine_secrets(data_dir, ".secret", production),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 56, in determine_secrets
    with open(secrets_file, "w") as f:
         ^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/app/data/.secret'
usermod: no changes
Switching to dedicated user
        User uid:    1026
        User gid:    100
        
Traceback (most recent call last):
  File "/opt/mealie/bin/mealie", line 5, in <module>
    from mealie.main import main
  File "/opt/mealie/lib/python3.12/site-packages/mealie/main.py", line 3, in <module>
    from mealie.app import settings
  File "/opt/mealie/lib/python3.12/site-packages/mealie/app.py", line 23, in <module>
    from mealie.routes import router, spa, utility_routes
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/__init__.py", line 3, in <module>
    from . import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/admin/__init__.py", line 1, in <module>
    from mealie.routes._base.routers import AdminAPIRouter
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/__init__.py", line 1, in <module>
    from .base_controllers import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/base_controllers.py", line 9, in <module>
    from mealie.core.dependencies.dependencies import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/__init__.py", line 1, in <module>
    from .dependencies import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/dependencies.py", line 17, in <module>
    from mealie.db.db_setup import generate_session
  File "/opt/mealie/lib/python3.12/site-packages/mealie/db/db_setup.py", line 10, in <module>
    settings = get_app_settings()
               ^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/config.py", line 43, in get_app_settings
    return app_settings_constructor(env_file=ENV, production=PRODUCTION, data_dir=determine_data_dir())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 455, in app_settings_constructor
    "SECRET": determine_secrets(data_dir, ".secret", production),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 56, in determine_secrets
    with open(secrets_file, "w") as f:
         ^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/app/data/.secret'
usermod: no changes
Switching to dedicated user
        User uid:    1026
        User gid:    100
        
Traceback (most recent call last):
  File "/opt/mealie/bin/mealie", line 5, in <module>
    from mealie.main import main
  File "/opt/mealie/lib/python3.12/site-packages/mealie/main.py", line 3, in <module>
    from mealie.app import settings
  File "/opt/mealie/lib/python3.12/site-packages/mealie/app.py", line 23, in <module>
    from mealie.routes import router, spa, utility_routes
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/__init__.py", line 3, in <module>
    from . import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/admin/__init__.py", line 1, in <module>
    from mealie.routes._base.routers import AdminAPIRouter
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/__init__.py", line 1, in <module>
    from .base_controllers import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/routes/_base/base_controllers.py", line 9, in <module>
    from mealie.core.dependencies.dependencies import (
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/__init__.py", line 1, in <module>
    from .dependencies import *
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/dependencies/dependencies.py", line 17, in <module>
    from mealie.db.db_setup import generate_session
  File "/opt/mealie/lib/python3.12/site-packages/mealie/db/db_setup.py", line 10, in <module>
    settings = get_app_settings()
               ^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/config.py", line 43, in get_app_settings
    return app_settings_constructor(env_file=ENV, production=PRODUCTION, data_dir=determine_data_dir())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 455, in app_settings_constructor
    "SECRET": determine_secrets(data_dir, ".secret", production),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/mealie/lib/python3.12/site-packages/mealie/core/settings/settings.py", line 56, in determine_secrets
    with open(secrets_file, "w") as f:
         ^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/app/data/.secret'

Anscheinend "Permission denied", oder? Ich arbeite hier, in diesem Container, aber mit meiner Gmail Adresse und meinem erstellten zugehörigen App Passwort dazu?
Kann es sein, dass ich irgendwo im Control Panel meiner DS220+ eine andere Email Adresse hinterlegt habe und diese nicht conform miteinander sind?
 
Besser wäre es, aber wenn man probiert die Grundlagen zu lernen. Das stumpfe kopieren ohne zu wissen was es bedeutet bringt auf Dauer nichts. Du wirst bei jedem kleinen Problem Hilfe brauchen und im schlimmsten Fall ist deine Rezeptsammlung weg...

Das ist ja nicht böse gemeint, aber man liest das andauernd, dass man ann dies oder jenes betreiben will, aber eigentlich gar keine Ahnung hat wie Docker funktioniert. Docker nutzen ist alles andere als kompliziert, aber man sollte sich damit befassen.
Keine Angst, ich nehms nicht böse auf - es ist nur, aktuell benutze ich die NAS nur als Fotospeicher. So far so good, das funktioniert soweit - ob ich weitere Programme installieren will, weiß ich nicht, dann macht es aber auf jedenfall Sinn das näher zu lernen!
 
Code:
{
    "AppArmorProfile": "docker-default",
    "Args": [],
    "Config": {
        "AttachStderr": true,
        "AttachStdin": false,
        "AttachStdout": true,
        "Cmd": null,
        "Domainname": "",
        "Entrypoint": [
            "/app/run.sh"
        ],
        "Env": [
            "MAX_WORKERS=1",
            "PGID=100",
            "SMTP_USER=XXXXXXXXXXXXX",
            "SMTP_FROM_EMAIL=XXXXXXXXXXX",
            "POSTGRES_SERVER=mealie-db",
            "POSTGRES_PASSWORD=mealiepass",
            "POSTGRES_DB=mealie",
            "WEB_CONCURRENCY=1",
            "SMTP_FROM_NAME=Mealie",
            "SMTP_PORT=587",
            "PUID=1026",
            "DB_ENGINE=postgres",
            "ALLOW_SIGNUP=true",
            "SMTP_AUTH_STRATEGY=TLS",
            "SMTP_HOST=smtp.gmail.com",
            "BASE_URL=http://XXXXXXXXXXXXXX",
            "SMTP_PASSWORD=XXXXXXXXXXXXXXXXXXXXX",
            "TZ=Europe/Berlin",
            "POSTGRES_PORT=5432",
            "POSTGRES_USER=mealieuser",
            "PATH=/opt/mealie/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
            "PYTHON_VERSION=3.12.9",
            "PYTHON_SHA256=7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112",
            "MEALIE_HOME=/app",
            "PYTHONUNBUFFERED=1",
            "PYTHONDONTWRITEBYTECODE=1",
            "PIP_NO_CACHE_DIR=off",
            "PIP_DISABLE_PIP_VERSION_CHECK=on",
            "PIP_DEFAULT_TIMEOUT=100",
            "VENV_PATH=/opt/mealie",
            "PRODUCTION=true",
            "TESTING=false",
            "GIT_COMMIT_HASH=d24a518bac7c89df27118286c8d9588f2edbbc44",
            "LD_LIBRARY_PATH=/usr/local/lib",
            "APP_PORT=9000",
            "HOST=0.0.0.0"
        ],
        "ExposedPorts": {
            "9000/tcp": {}
        },
        "Healthcheck": {
            "Test": [
                "CMD-SHELL",
                "python -m mealie.scripts.healthcheck || exit 1"
            ]
        },
        "Hostname": "mealie",
        "Image": "ghcr.io/mealie-recipes/mealie:latest",
        "Labels": {
            "com.docker.compose.config-hash": "5bca495b928724fa078a648801680d3ea778a3ef03cd466afb710e036a9f8c17",
            "com.docker.compose.container-number": "1",
            "com.docker.compose.depends_on": "db:service_healthy:false",
            "com.docker.compose.image": "sha256:9d5216e538b03b33e4eef9bbd9ecf516a129dfcb4d33bcb4f3b69b550d3a1169",
            "com.docker.compose.oneoff": "False",
            "com.docker.compose.project": "mealie",
            "com.docker.compose.project.config_files": "",
            "com.docker.compose.project.working_dir": "/data/compose/4",
            "com.docker.compose.service": "mealie",
            "com.docker.compose.version": "",
            "org.opencontainers.image.source": "https://github.com/mealie-recipes/mealie"
        },
        "OnBuild": null,
        "OpenStdin": false,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": {
            "/app/data/": {}
        },
        "WorkingDir": ""
    },
    "Created": "2025-03-15T17:56:01.002153445Z",
    "Driver": "btrfs",
    "ExecIDs": null,
    "GraphDriver": {
        "Data": null,
        "Name": "btrfs"
    },
    "HostConfig": {
        "AutoRemove": false,
        "Binds": [
            "/volume1/docker/mealie/data:/app/data:rw"
        ],
        "BlkioDeviceReadBps": null,
        "BlkioDeviceReadIOps": null,
        "BlkioDeviceWriteBps": null,
        "BlkioDeviceWriteIOps": null,
        "BlkioWeight": 0,
        "BlkioWeightDevice": null,
        "CapAdd": null,
        "CapDrop": null,
        "Cgroup": "",
        "CgroupParent": "",
        "CgroupnsMode": "host",
        "ConsoleSize": [
            0,
            0
        ],
        "ContainerIDFile": "",
        "CpuCount": 0,
        "CpuPercent": 0,
        "CpuPeriod": 0,
        "CpuQuota": 0,
        "CpuRealtimePeriod": 0,
        "CpuRealtimeRuntime": 0,
        "CpuShares": 1024,
        "CpusetCpus": "",
        "CpusetMems": "",
        "DeviceCgroupRules": null,
        "DeviceRequests": null,
        "Devices": null,
        "Dns": null,
        "DnsOptions": null,
        "DnsSearch": null,
        "ExtraHosts": [],
        "GroupAdd": null,
        "IOMaximumBandwidth": 0,
        "IOMaximumIOps": 0,
        "IpcMode": "private",
        "Isolation": "",
        "Links": null,
        "LogConfig": {
            "Config": {},
            "Type": "db"
        },
        "MaskedPaths": [
            "/proc/asound",
            "/proc/acpi",
            "/proc/kcore",
            "/proc/keys",
            "/proc/latency_stats",
            "/proc/timer_list",
            "/proc/timer_stats",
            "/proc/sched_debug",
            "/proc/scsi",
            "/sys/firmware"
        ],
        "Memory": 4294967296,
        "MemoryReservation": 0,
        "MemorySwap": 8589934592,
        "MemorySwappiness": null,
        "NanoCpus": 0,
        "NetworkMode": "mealie_default",
        "OomKillDisable": false,
        "OomScoreAdj": 0,
        "PidMode": "",
        "PidsLimit": null,
        "PortBindings": {
            "9000/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "9925"
                }
            ]
        },
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyPaths": [
            "/proc/bus",
            "/proc/fs",
            "/proc/irq",
            "/proc/sys",
            "/proc/sysrq-trigger"
        ],
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 5,
            "Name": "on-failure"
        },
        "Runtime": "runc",
        "SecurityOpt": [
            "no-new-privileges:true"
        ],
        "ShmSize": 67108864,
        "UTSMode": "",
        "Ulimits": null,
        "UsernsMode": "",
        "VolumeDriver": "",
        "VolumesFrom": null
    },
    "HostnamePath": "/volume1/@docker/containers/0bbe39ae5acdada4081de9979b950194ff0015b86f89337a7f49335521621300/hostname",
    "HostsPath": "/volume1/@docker/containers/0bbe39ae5acdada4081de9979b950194ff0015b86f89337a7f49335521621300/hosts",
    "Id": "0bbe39ae5acdada4081de9979b950194ff0015b86f89337a7f49335521621300",
    "Image": "sha256:9d5216e538b03b33e4eef9bbd9ecf516a129dfcb4d33bcb4f3b69b550d3a1169",
    "LogPath": "/volume1/@docker/containers/0bbe39ae5acdada4081de9979b950194ff0015b86f89337a7f49335521621300/log.db",
    "MountLabel": "",
    "Mounts": [
        {
            "Destination": "/app/data",
            "Mode": "rw",
            "Propagation": "rprivate",
            "RW": true,
            "Source": "/volume1/docker/mealie/data",
            "Type": "bind"
        }
    ],
    "Name": "/Mealie",
    "NetworkSettings": {
        "Bridge": "",
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "HairpinMode": false,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "MacAddress": "",
        "Networks": {
            "mealie_default": {
                "Aliases": [
                    "Mealie",
                    "mealie",
                    "0bbe39ae5acd"
                ],
                "DriverOpts": null,
                "EndpointID": "",
                "Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAMConfig": null,
                "IPAddress": "",
                "IPPrefixLen": 0,
                "IPv6Gateway": "",
                "Links": null,
                "MacAddress": "",
                "NetworkID": "0cd4f08347e95b8cf12ed08f657445151642db4df3e8405793c5fb6e3aa7fcce"
            }
        },
        "Ports": {},
        "SandboxID": "2e33ce291d9d9040348127e5b81e608e9eadb534fe721071f8ceb30f60bd0145",
        "SandboxKey": "/var/run/docker/netns/2e33ce291d9d",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null
    },
    "Path": "/app/run.sh",
    "Platform": "linux",
    "Portainer": {
        "ResourceControl": {
            "Id": 4,
            "ResourceId": "3_mealie",
            "SubResourceIds": [],
            "Type": 6,
            "UserAccesses": [],
            "TeamAccesses": [],
            "Public": false,
            "AdministratorsOnly": true,
            "System": false
        }
    },
    "ProcessLabel": "",
    "ResolvConfPath": "/volume1/@docker/containers/0bbe39ae5acdada4081de9979b950194ff0015b86f89337a7f49335521621300/resolv.conf",
    "RestartCount": 5,
    "State": {
        "Dead": false,
        "Error": "",
        "ExitCode": 1,
        "FinishedAt": "2025-03-15T17:57:31.472084964Z",
        "Health": {
            "FailingStreak": 0,
            "Log": [],
            "Status": "unhealthy"
        },
        "OOMKilled": false,
        "Paused": false,
        "Pid": 0,
        "Restarting": false,
        "Running": false,
        "StartedAt": "2025-03-15T17:57:28.173151089Z",
        "Status": "exited"
    }
}

Ich hoffe da sind keine "geheimen" Informationen drin. Passwort Email etc hab ich mal rausgeschmissen
 
Ich nutze seit Jahren kein Portainer mehr. Du hast ja irgendwo einen neuen Stack angelegt wo du das Zeug aus der Anleitung eingefügt hast. Das hätte ich gerne gesehen. Stacks -> Mealie oder wie der heißt und da müsste man das sehen...
 
Portainer > Stacks > Editor
 

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