this post was submitted on 24 Jun 2023
3 points (80.0% liked)

Selfhosted

40042 readers
800 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

Been trying to work out how to do this but it seems be way out of my league.

Does anybody have a guide or instructions?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 1 year ago (4 children)

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


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

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!

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

Added internal nginx and external proxy configs to a reply. I didn't make any changes to the postgres config.

Hope it helps

load more comments (2 replies)