I was able to get it running with the docker compose CA app and minimal changes to the official docker-compose file (docs). I’m running swag in front of the lemmy proxy with no issues with federation. Ibracorp’s tutorial can help with the compose plugin
You’ll need to make sure the volume locations and ports are appropriate for your unraid install. You’ll also have to update your domain in the compose file. I’m running swag so I needed to make a new reverse proxy configuration per the official docs.
My compose file is below:
version:"3.7"x-logging:&default-loggingdriver:"json-file"options:max-size:"50m"max-file:4networks:# communication to web and clientslemmyexternalproxy:name:proxynetexternal:true# communication between lemmy serviceslemmyinternal:driver:bridgeinternal:trueservices:proxy:image:nginx:1-alpinenetworks:-lemmyinternal-lemmyexternalproxyports:# 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.conf:/etc/nginx/nginx.conf:ro,Z-/mnt/user/appdata/lemmy-nginx/nginx.conf:/etc/nginx/nginx.conf:rorestart:alwaysdepends_on:-pictrs-lemmy-uilogging:*default-logginglemmy:image:dessalines/lemmy:0.18.0#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 changehostname:lemmynetworks:-lemmyinternal-lemmyexternalproxyrestart:alwaysenvironment:-RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"-RUST_BACKTRACE=full-LEMMY_CORS_ORIGIN=<domain>volumes:-/mnt/user/appdata/lemmy/lemmy.hjson:/config/config.hjsondepends_on:-postgres-pictrslogging:*default-logginglemmy-ui:#image: dessalines/lemmy-ui:latestimage:dessalines/lemmy-ui:0.18.0# 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.dockerfilenetworks:-lemmyinternalenvironment:# this needs to match the hostname defined in the lemmy service-LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536# set the outside hostname here#- LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236-LEMMY_UI_LEMMY_EXTERNAL_HOST=<domain>-LEMMY_HTTPS=false-LEMMY_UI_DEBUG=truedepends_on:-lemmyrestart:alwayslogging:*default-logginginit:truepictrs:image:asonix/pictrs:0.4.0-rc.7# this needs to match the pictrs url in lemmy.hjsonhostname:pictrs# we can set options to pictrs like this, here we set max. image size and forced format for conversion# entrypoint: /sbin/tini -- /usr/local/bin/pict-rs -p /mnt -m 4 --image-format webpnetworks:-lemmyinternalenvironment:-PICTRS_OPENTELEMETRY_URL=http://otel:4137-PICTRS__API_KEY=API_KEY-RUST_LOG=debug-RUST_BACKTRACE=full-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=400user:991:991volumes:-/mnt/user/appdata/lemmy-pictrs:/mntrestart:alwayslogging:*default-loggingpostgres:image:postgres:15-alpine# this needs to match the database host in lemmy.hson# Tune your settings via# https://pgtune.leopard.in.ua/#/# You can use this technique to add them here# https://stackoverflow.com/a/30850095/1655478hostname:postgrescommand:
[
"postgres",
"-c",
"session_preload_libraries=auto_explain",
"-c",
"auto_explain.log_min_duration=5ms",
"-c",
"auto_explain.log_analyze=true",
"-c",
"track_activity_query_size=1048576",
]
networks:-lemmyinternal# adding the external facing network to allow direct db access for devs-lemmyexternalproxyports:# use a different port so it doesnt conflict with potential postgres db running on the host-"5433:5432"environment:-POSTGRES_USER=<strong-user>-POSTGRES_PASSWORD=<strong-password>-POSTGRES_DB=lemmyvolumes:-/mnt/user/appdata/lemmy-postgres:/var/lib/postgresql/datarestart:alwayslogging:*default-logging
Any chance you can post your config, internal nginx conf, postgresql.conf, and the swag conf? I’m trying to do the same thing and I’ve been running into various errors. And I’ve yet to find a good unraid guide for lemmy. Would appreciate!
I was able to get it running with the docker compose CA app and minimal changes to the official docker-compose file (docs). I’m running swag in front of the lemmy proxy with no issues with federation. Ibracorp’s tutorial can help with the compose plugin
You’ll need to make sure the volume locations and ports are appropriate for your unraid install. You’ll also have to update your domain in the compose file. I’m running swag so I needed to make a new reverse proxy configuration per the official docs.
My compose file is below:
version: "3.7" x-logging: &default-logging driver: "json-file" options: max-size: "50m" max-file: 4 networks: # communication to web and clients lemmyexternalproxy: name: proxynet external: true # communication between lemmy services lemmyinternal: driver: bridge internal: true services: proxy: image: nginx:1-alpine networks: - lemmyinternal - lemmyexternalproxy 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.conf:/etc/nginx/nginx.conf:ro,Z - /mnt/user/appdata/lemmy-nginx/nginx.conf:/etc/nginx/nginx.conf:ro restart: always depends_on: - pictrs - lemmy-ui logging: *default-logging lemmy: image: dessalines/lemmy:0.18.0 #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 networks: - lemmyinternal - lemmyexternalproxy restart: always environment: - RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug" - RUST_BACKTRACE=full - LEMMY_CORS_ORIGIN=<domain> volumes: - /mnt/user/appdata/lemmy/lemmy.hjson:/config/config.hjson depends_on: - postgres - pictrs logging: *default-logging lemmy-ui: #image: dessalines/lemmy-ui:latest image: dessalines/lemmy-ui:0.18.0 # 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 networks: - lemmyinternal environment: # this needs to match the hostname defined in the lemmy service - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536 # set the outside hostname here #- LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236 - LEMMY_UI_LEMMY_EXTERNAL_HOST=<domain> - LEMMY_HTTPS=false - LEMMY_UI_DEBUG=true depends_on: - lemmy restart: always logging: *default-logging init: true pictrs: image: asonix/pictrs:0.4.0-rc.7 # this needs to match the pictrs url in lemmy.hjson hostname: pictrs # we can set options to pictrs like this, here we set max. image size and forced format for conversion # entrypoint: /sbin/tini -- /usr/local/bin/pict-rs -p /mnt -m 4 --image-format webp networks: - lemmyinternal environment: - PICTRS_OPENTELEMETRY_URL=http://otel:4137 - PICTRS__API_KEY=API_KEY - RUST_LOG=debug - RUST_BACKTRACE=full - 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 user: 991:991 volumes: - /mnt/user/appdata/lemmy-pictrs:/mnt restart: always logging: *default-logging postgres: image: postgres:15-alpine # this needs to match the database host in lemmy.hson # Tune your settings via # https://pgtune.leopard.in.ua/#/ # You can use this technique to add them here # https://stackoverflow.com/a/30850095/1655478 hostname: postgres command: [ "postgres", "-c", "session_preload_libraries=auto_explain", "-c", "auto_explain.log_min_duration=5ms", "-c", "auto_explain.log_analyze=true", "-c", "track_activity_query_size=1048576", ] networks: - lemmyinternal # adding the external facing network to allow direct db access for devs - lemmyexternalproxy ports: # use a different port so it doesnt conflict with potential postgres db running on the host - "5433:5432" environment: - POSTGRES_USER=<strong-user> - POSTGRES_PASSWORD=<strong-password> - POSTGRES_DB=lemmy volumes: - /mnt/user/appdata/lemmy-postgres:/var/lib/postgresql/data restart: always logging: *default-logging
Any chance you can post your config, internal nginx conf, postgresql.conf, and the swag conf? I’m trying to do the same thing and I’ve been running into various errors. And I’ve yet to find a good unraid guide for lemmy. Would appreciate!
Added internal nginx and external proxy configs to a reply. I didn’t make any changes to the postgres config.
Hope it helps