• 0 Posts
  • 7 Comments
Joined 1 year ago
cake
Cake day: June 8th, 2023

help-circle

  • I disagree. Reading content online is inherently different from listening to someone speaking out loud. Internet discourse must be different in order for us to better understand each other. Tone and emotion do not come off well in text posts so we adjust our way of communicating accordingly.

    I don’t know why I bother though, you clearly have a problem with a large portion of society that has done nothing to harm you. The average person is not out to get you. Your anger at the middle class is exactly what the super rich want.



  • The thing I struggled with the most was adapting the provided docker-compose.yml for my Caddy setup.

    I am using caddy-docker-proxy, which I absolutely love but their documentation is not the greatest for matchers.

    If anyone else wants a super basic Lemmy instance running on Caddy with their domain on Cloudflare here is a docker-compose.yml

    Please make sure you update your lemmy.hjson hostname field to match the domain you used in the docker-compose.yml for the caddy labels

    If you’re not using Cloudflare you can replace build: . (and not use the Dockerfile I provided below) in the caddy service with image: lucaslorentz/caddy-docker-proxy:ci-alpine (and remove the caddy.acme_dns label) and I believe it will fall back to Let’sEncrypt

    version: "3.9"
    
    services:
      caddy:
        container_name: caddy
        build: .
        depends_on:
          - lemmy-ui
          - pictrs
        ports:
          - 80:80
          - 443:443
        environment:
          CADDY_INGRESS_NETWORKS: caddy
        networks:
          - caddy
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /opt/docker/caddy/data:/data
          - /opt/docker/caddy/config:/config
        labels:
          caddy.log.format: console
          caddy.acme_dns: cloudflare YOUR_CLOUDFLARE_API_TOKEN
        restart: unless-stopped
      lemmy:
        container_name: lemmy
        image: dessalines/lemmy:0.17.3
        depends_on:
          - postgres
          - pictrs
        environment:
          RUST_LOG: "warn,lemmy_server=info,lemmy_api=info,lemmy_api_common=info,lemmy_api_crud=info,lemmy_apub=info,lemmy_db_schema=info,lemmy_db_views=info,lemmy_db_views_actor=info,lemmy_db_views_moderator=info,lemmy_routes=info,lemmy_utils=info,lemmy_websocket=info"
        networks:
          - caddy
        volumes:
          - /opt/docker/lemmy/lemmy.hjson:/config/config.hjson:ro
        labels:
          caddy: "your.domain.com"
          caddy.@lemmy: path_regexp ^/(api|pictrs|feeds|nodeinfo|\.well-known)/.*$
          caddy.@post: method POST
          caddy.@accept: header Accept application/*
          caddy.reverse_proxy_1: "@lemmy {{upstreams 8536}}"
          caddy.reverse_proxy_2: "@post {{upstreams 8536}}"
          caddy.reverse_proxy_3: "@accept {{upstreams 8536}}"
        restart: unless-stopped
      lemmy-ui:
        container_name: lemmy-ui
        image: dessalines/lemmy-ui:0.17.3
        depends_on:
          - lemmy
        environment:
          LEMMY_UI_LEMMY_INTERNAL_HOST: lemmy:8536
          LEMMY_UI_LEMMY_EXTERNAL_HOST: localhost:1234
          LEMMY_HTTPS: true
        networks:
          - caddy
        labels:
          caddy: "your.domain.com"
          caddy.reverse_proxy: "{{upstreams 1234}}"
        restart: unless-stopped
      pictrs:
        container_name: pictrs
        image: asonix/pictrs:0.3.1
        environment:
          PICTRS__API_KEY: API_KEY
        user: 991:991
        volumes:
          - /opt/docker/pictrs:/mnt
        networks:
          - caddy
      postgres:
        container_name: postgres
        image: postgres:15-alpine
        environment:
          POSTGRES_DB: lemmy
          POSTGRES_USER: lemmy
          POSTGRES_PASSWORD: password
        volumes:
          - /opt/docker/postgres:/var/lib/postgresql/data
        networks:
          - caddy
        restart: unless-stopped
    
    networks:
      caddy:
        external: true
    

    Here is the Dockerfile used for the caddy container:

    ARG CADDY_VERSION=2.6.4
    
    FROM caddy:${CADDY_VERSION}-builder AS builder
    
    RUN xcaddy build \
        --with github.com/lucaslorentz/caddy-docker-proxy/v2@v2.8.4 \
        --with github.com/caddy-dns/cloudflare
    
    FROM caddy:${CADDY_VERSION}-alpine
    
    RUN apk add --no-cache tzdata
    
    COPY --from=builder /usr/bin/caddy /usr/bin/caddy
    
    CMD ["caddy", "docker-proxy"]