this post was submitted on 18 Jun 2023
4 points (83.3% liked)

Lemmy Support

4622 readers
22 users here now

Support / questions about Lemmy.

Matrix Space: #lemmy-space

founded 5 years ago
MODERATORS
 

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.

top 12 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 1 year ago (3 children)

Does your database password contain $Qa and/or $k? It'll interpret those as environment variables if not escaped properly.

The docker daemon not running is a bit weird, usually docker-compose shouldn't be trying to connect to the daemon via http, are you using sudo?

[–] [email protected] 2 points 1 year ago

Also on the second part I didn't realize I had to use sudo (yeah as I mentioned I am terrible with docker). Fixing the db pswd and using sudo has made it all start! Thank you again!

[–] [email protected] 2 points 1 year ago

You're a genius! I always generate my passwords with Keepass and forgot to unmark the characters setting. Going to give that a try now. Thank you!

[–] [email protected] 1 points 1 year ago

Now it's throwing up the error that 443 is already in use since I access Nextcloud via https. Am I able to just change the port in the config file?

[–] [email protected] 1 points 1 year ago (1 children)

Are you able to post logs from both the lemmy container and the lemmy-ui container? That might shed some light as to which one is failing.

$ sudo docker logs lemmy
$ sudo docker logs lemmy-ui

You may need to run sudo docker container ls in order to find the actual container name for the two, as the default docker-compose doesn't specify their names, so they'll get randomly generated.

(I'm assuming the error you're seeing from docker compose up -d is from lemmy-ui, and something else is failing or preventing the backend from starting, but that's just a guess)

[–] [email protected] 1 points 1 year ago (1 children)

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?

[–] [email protected] 1 points 1 year ago (3 children)

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.

[–] [email protected] 1 points 1 year ago

Thank you for this! I am working on it now. Having issues with installing docker as it seems like their repo for Raspbian is actually empty.... I suppose I can just tell it to use an Ubuntu repo and put in the most recent Ubuntu version name so it pulls from there. I'll let you know how it all goes.

[–] [email protected] 1 points 1 year ago (1 children)

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>

?

[–] [email protected] 0 points 1 year ago* (last edited 1 year ago) (1 children)

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
...
[–] [email protected] 2 points 1 year ago

Got it, thank you!

[–] [email protected] 1 points 1 year ago* (last edited 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;
    }
}

}

load more comments
view more: next ›