I’m trying to set up my own Lemmy server with Docker. I think I have everything set up, but I’m getting an error Cannot autolaunch D-Bus without X11 $DISPLAY. This error kind of makes sense, because I’m SSHing into my server and have not forwarded D-Bus connections, so $DISPLAY is undefined. But why does a Lemmy server need a display in the first place? Is this a bug and a display isn’t actually needed? If I set $DISPLAY to whatever, will it still run okay?

  • Grail (capitalised)OP
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    10 months ago

    I’m starting with sudo docker compose up -d and my docker-compose.yml is:

    version: "3.7"
    
    x-logging: &default-logging
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "4"
    
    services:
      proxy:
        container_name: proxy
        image: docker.io/library/nginx
        ports:
          # actual and only port facing any connection from outside
          # Note, change the left number if port 1236 is already in use on your system
          # You could use port 80 if you won't use a reverse proxy
          - "8536:8536"
        volumes:
          - ./nginx_internal.conf:/etc/nginx/nginx.conf:ro,Z
          - ./proxy_params:/etc/nginx/proxy_params:ro,Z
        restart: always
        logging: *default-logging
        depends_on:
          - pictrs
          - lemmy-ui
      lemmy-ui:
        container_name: lemmy-ui
        image: dessalines/lemmy-ui:${LEMMY_VERSION}
        environment:
          - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
          - LEMMY_UI_LEMMY_EXTERNAL_HOST=${DOMAIN}
          - LEMMY_UI_HTTPS=true
        volumes:
          - ./volumes/lemmy-ui/extra_themes:/app/extra_themes
        depends_on:
          - lemmy
        restart: always
        logging: *default-logging
      lemmy:
        container_name: lemmy
        image: dessalines/lemmy:${LEMMY_VERSION}
        hostname: lemmy
        restart: always
        logging: *default-logging
        environment:
          - RUST_LOG=warn
        volumes:
          - ./lemmy.hjson:/config/config.hjson:Z
        depends_on:
          - postgres
          - pictrs
      pictrs:
        container_name: pictrs
        image: docker.io/c:0.4.3
        # This needs to match the pictrs url in lemmy.hjson
        hostname: pictrs
        environment:
          - PICTRS__MEDIA__EXTERNAL_VALIDATION=http://pictrs-safety:14051/api/v1/scan/IPADDR
          - PICTRS__MEDIA__VIDEO_CODEC=vp9
          - PICTRS__MEDIA__GIF__MAX_WIDTH=256
          - PICTRS__MEDIA__GIF__MAX_HEIGHT=256
          - PICTRS__MEDIA__GIF__MAX_AREA=65536
          - PICTRS__MEDIA__GIF__MAX_FRAME_COUNT=400
          - PICTRS_OPENTELEMETRY_URL=http://otel:4137
          - RUST_LOG=debug
          - RUST_BACKTRACE=full
          - PICTRS__API_KEY=${PICTRS_API_KEY}
          - PICTRS__STORE__TYPE=${PICTRS_STORE_TYPE}
          - PICTRS__STORE__ENDPOINT=${PICTRS_STORE_ENDPOINT}
          - PICTRS__STORE__BUCKET_NAME=${PICTRS_STORE_BUCKET_NAME}
          - PICTRS__STORE__REGION=${PICTRS_STORE_REGION}
          - PICTRS__STORE__USE_PATH_STYLE=${PICTRS_STORE_USE_PATH_STYLE}
          - PICTRS__STORE__ACCESS_KEY=${PICTRS_STORE_ACCESS_KEY}
          - PICTRS__STORE__SECRET_KEY=${PICTRS_STORE_SECRET_KEY}
        volumes:
          - ./volumes/pictrs:/mnt:Z
        user: 991:991
        restart: always
        logging: *default-logging
        deploy:
          resources:
            limits:
              memory: 690m
      postgres:
        container_name: postgres
        image: docker.io/postgres:15-alpine
        hostname: postgres
        environment:
          - POSTGRES_USER=${POSTGRES_USER}
          - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
          - POSTGRES_DB=${POSTGRES_DB}
        volumes:
          - ./volumes/postgres:/var/lib/postgresql/data:Z
          - ./customPostgresql.conf:/etc/postgresql.conf
        restart: always
        command: postgres -c config_file=/etc/postgresql.conf
        logging: *default-logging
      pictrs-safety:
        image: ghcr.io/db0/pictrs-safety:v1.2.2
        hostname: pictrs-safety
        container_name: pictrs-safety
        environment:
        - FEDIVERSE_SAFETY_WORKER_AUTH="${PICTRS_SAFETY_WORKER_AUTH}"
        - FEDIVERSE_SAFETY_IMGDIR="/tmp/images"
        - USE_SQLITE=1
        - secret_key="${PICTRS_SECRET_KEY}"
        - SCAN_BYPASS_THRESHOLD=10
        - MISSING_WORKER_THRESHOLD=5
        ports:
          - "14051:14051"
        user: 991:991
        restart: always
        logging: *default-logging
        depends_on:
          - pictrs
    

    I’m following this guide: https://patrickwu.space/2023/11/04/install-lemmy-simplified/. My .env file is:

    LEMMY_VERSION=0.19.3
    DOMAIN=lemmy.soulism.net
    # postgres
    POSTGRES_USER=admin
    POSTGRES_PASSWORD=**redacted**
    POSTGRES_DB=
    # pictrs
    ## keys
    PICTRS_API_KEY=stars
    ### 15 random characters
    PICTRS_SAFETY_WORKER_AUTH=p70nkXCN1UEcyN3
    ### 80 random characters
    PICTRS_SECRET_KEY=**redacted**
    ## storage type; by default is filesystem for object storage please set it to object_storage
    PICTRS_STORE_TYPE=filesystem
    PICTRS_STORE_ENDPOINT=
    PICTRS_STORE_BUCKET_NAME=
    PICTRS_STORE_REGION=
    PICTRS_STORE_USE_PATH_STYLE=false
    PICTRS_STORE_ACCESS_KEY=
    PICTRS_STORE_SECRET_KEY=
    
      • Grail (capitalised)OP
        link
        fedilink
        English
        arrow-up
        1
        ·
        10 months ago

        Thanks. I get the same error even with pictrs image set to docker.io/asonix/pictrs:0.5.4

        • towerful@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          10 months ago

          I mean, i dont see anything strange.
          Maybe just destroy the droplet and start fresh? Or spin up another just to test with?
          Are you familiar with installing docker? I always just use docker’s convenience script to install it, and never had any problems.
          You sure you havent accidentally installed docker desktop instead of docker engine? I dont know if docker has a desktop version for linux.

          I keep meaning to figure out rootless mode or swap to podman

          • Grail (capitalised)OP
            link
            fedilink
            English
            arrow-up
            1
            ·
            10 months ago

            I’ve never used docker before. It’s a strange newfangled technology I don’t understand. Back in my day you either used apt-get, or you compiled it yourself. I want to learn, and I thought installing Lemmy would be a good learning opportunity, but I’m finding myself chasing my own tail instead. My docker version is Docker version 24.0.2, build cb74dfc, and google is seeming to indicate that’s docker engine. I can’t see how docker desktop would be trying to run on ubuntu.