ETA: This is being done on a Raspberry Pi 4 running 64-bit Raspbian using an external SSD as storage.

I am following the instructions here: https://github.com/LemmyNet/lemmy-docs/blob/4249465e9960cad97245aa03b3ad4c758ff945c7/src/en/administration/install_docker.md

Please note that I have only used docker a few times in the past and have always failed so that could be a contributing factor.

My goal for the moment is just to have the instance on localhost so I can play around with it before deciding if running my own instance is something I have the time for.

Here are the steps I have taken so far and the result:

`WARNING: The Qa variable is not set. Defaulting to a blank string. WARNING: The k variable is not set. Defaulting to a blank string. ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running?

If it’s at a non-standard location, specify the URL with the DOCKER_HOST environment variable. `

I imagine I’m doing a lot of things wrong. I would be extremely appreciative for any help anybody can provide.

  • animist@lemmy.oneOP
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    It looks like no containers have even been created:

    [redacted]@[redacted]:~/Downloads/lemmy $ sudo docker logs lemmy
    Error: No such container: lemmy
    [redacted]@[redacted]:~/Downloads/lemmy $ sudo docker container ls
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [redacted]@[redacted]:~/Downloads/lemmy $
    

    I guess it didn’t get far enough in the process to make them?

    • marsara9@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Hmm. Well I literally just setup a Pi running a Lemmy instance last week. I can walk you through the steps that I took…

      1. Ubuntu Server using https://www.raspberrypi.com/software/. Raspbian should also work with these steps, but I just happened to use Ubuntu Server. So feel free to skip this step.

      2. Install Docker via these instructions: https://docs.docker.com/engine/install/ubuntu/. If you used these steps to install Docker prior, feel free to skip, but if you just did apt-get install... you may need to revisit that page.

      3. created a lemmy folder somewhere on my machine. For the sake of argument, I’m going to assume /docker/lemmy for now.

      3a) Create the volumes and pictrs folders and chown them as described in original documentation: https://join-lemmy.org/docs/en/administration/install_docker.html

      1. Copy the docker-compose.yml file as described in the documentation as well as the lemmy.hjson. I placed the docker-compose in /docker and the lemmy.hjson in /docker/lemmy.

      2. Edit the docker-compose.yml so that you use the latest pre-build images instead of building from source. To do that you’ll want to remove the lines that look like this:

      build:
        context: ../
        dockerfile: docker/Dockerfile
      

      and instead replace them with:

      image: dessalines/lemmy:<tag>
      

      but before we do that we need to determine the latest tags that are available to the Pi. You can look here: https://hub.docker.com/r/dessalines/lemmy/tags and here: https://hub.docker.com/r/dessalines/lemmy-ui/tags. For the Pi though the latest versions available are: 0.17.3-linux-arm64 for both the backend and the UI.

      1. Now you should be able to edit the lemmy.hjson / docker-compose and the nginx.conf files to match your environment (i.e. set the passwords, site-name, etc…).

      P.S. I did lookup the error you got and it seems to be related to Nginx. So if above steps don’t work, you may need to paste your nginx.conf file.

      • animist@lemmy.oneOP
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        Okay so here are the contents of the nginx.conf file:

        worker_processes 1;
        events {
            worker_connections 1024;
        }
        http {
        upstream lemmy {
            # this needs to map to the lemmy (server) docker service hostname
            server "lemmy:8536";
        }
        upstream lemmy-ui {
            # this needs to map to the lemmy-ui docker service hostname
            server "lemmy-ui:1234";
        }
        
        server {
            # this is the port inside docker, not the public one yet
            listen 80;
            # change if needed, this is facing the public web
            server_name localhost;
            server_tokens off;
        
            gzip on;
            gzip_types text/css application/javascript image/svg+xml;
            gzip_vary on;
        
            # Upload limit, relevant for pictrs
            client_max_body_size 20M;
        
            add_header X-Frame-Options SAMEORIGIN;
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
        
            # frontend general requests
            location / {
                # distinguish between ui requests and backend
                # don't change lemmy-ui or lemmy here, they refer to the upstream definitions on top
                set $proxpass "http://lemmy-ui";
        
                if ($http_accept = "application/activity+json") {
                  set $proxpass "http://lemmy";
                }
                if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") {
                  set $proxpass "http://lemmy";
                }
                if ($request_method = POST) {
                  set $proxpass "http://lemmy";
                }
                proxy_pass $proxpass;
        
                rewrite ^(.+)/+$ $1 permanent;
                # Send actual client IP upstream
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        
            # backend
            location ~ ^/(api|pictrs|feeds|nodeinfo|.well-known) {
                proxy_pass "http://lemmy";
                # proxy common stuff
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        
                # Send actual client IP upstream
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }
        

        }

      • animist@lemmy.oneOP
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Okay so I don’t see

        build:
          context: ../
          dockerfile: docker/Dockerfile
        

        in the docker compose file anywhere. Where should I then place

        image: dessalines/lemmy:<tag>
        

        ?

        • marsara9@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          1 year ago

          https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml

          ...
          services:
            proxy:
              ...
          
            lemmy:
              # image: dessalines/lemmy:dev
              # use this to build your local lemmy server image for development
              # run docker compose up --build
              build:
                context: ../
                dockerfile: docker/Dockerfile
                # args:
                #   RUST_RELEASE_MODE: release
              # this hostname is used in nginx reverse proxy and also for lemmy ui to connect to the backend, do not change
              hostname: lemmy
          

          Just copied this from the above URL. But just under lemmy: there’s a few comments and the reference to the build section. You’ll want to remove those lines. and just have:

          lemmy:
              image: dessalines/lemmy:0.17.3-linux-arm64
              ...
          

          You’ll need to do the same thing for lemmy-ui, but it’s build section is already commented out but the default compose is using an incorrect tag for the Pi.

          See below:

          ...
           lemmy-ui:
              image: dessalines/lemmy-ui:0.17.1
              # use this to build your local lemmy ui image for development
              # run docker compose up --build
              # assuming lemmy-ui is cloned besides lemmy directory
              # build:
              #   context: ../../lemmy-ui
              #   dockerfile: dev.dockerfile
             ...
          

          so for it, you just want to change it to:

          lemmy-ui:
              image: dessalines/lemmy-ui:0.17.3-linux-arm64
          ...