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?
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=
The image for the pictrs service is wrong.
No idea what it should be, but it shouldnt be docker.io/c:0.4.3
Thanks. I get the same error even with pictrs image set to docker.io/asonix/pictrs:0.5.4
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