In light of the ongoing Reddit blackout, many users are seeking alternative
platforms to host their communities. One popular option is Lemmy, a self-hosted
federated link aggregator. However, most of the available documentation on
running Lemmy involves using Nginx or Caddy as a reverse proxy. If you’re
utilizing Traefik with docker-compose and docker labels on your server, this
guide will walk you through the process of setting up a working Lemmy instance
without the need for Nginx or Caddy. Step-by-Step Guide: 1. Docker Compose
Configuration: To begin, create a new docker-compose.yml file and include the
necessary services for running Lemmy. Here’s a sample configuration to get you
started: yaml version: "3.7" services: web: image: dessalines/lemmy:0.17.4
restart: always logging: driver: journald options: tag: "{{.Name}}[{{.ID}}]"
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"
volumes: - ./lemmy.hjson:/config/config.hjson depends_on: - db networks: -
default - reverse_proxy labels: - traefik.enable=true -
traefik.http.routers.http_lemmyexamplecom.rule=Host(`lemmy.example.com`) &&
(PathPrefix(`/api`, `/pictrs`, `/feeds`, `/nodeinfo`, `/.well-known`) ||
Method(`POST`) || HeadersRegexp(`Accept`, `^[Aa]pplication/.*`)) -
traefik.http.routers.https_lemmyexamplecom.rule=Host(`lemmy.example.com`) &&
(PathPrefix(`/api`, `/pictrs`, `/feeds`, `/nodeinfo`, `/.well-known`) ||
Method(`POST`) || HeadersRegexp(`Accept`, `^[Aa]pplication/.*`)) -
traefik.http.routers.http_lemmyexamplecom.entrypoints=http -
traefik.http.routers.https_lemmyexamplecom.entrypoints=https -
traefik.http.routers.http_lemmyexamplecom.middlewares=https_redirect@file -
traefik.http.routers.https_lemmyexamplecom.tls.certresolver=letsencrypt
web-frontend: image: dessalines/lemmy-ui:0.17.4 environment: -
LEMMY_UI_LEMMY_INTERNAL_HOST=web:8536 -
LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236 - LEMMY_HTTPS=true depends_on: - web
restart: always logging: driver: journald options: tag: "{{.Name}}[{{.ID}}]"
networks: - default - reverse_proxy labels: - traefik.enable=true -
traefik.http.routers.http_lemmyexamplecom_static.rule=Host(`lemmy.example.com`)
-
traefik.http.routers.https_lemmyexamplecom_static.rule=Host(`lemmy.example.com`)
- traefik.http.routers.http_lemmyexamplecom_static.entrypoints=http -
traefik.http.routers.https_lemmyexamplecom_static.entrypoints=https -
traefik.http.routers.http_lemmyexamplecom_static.middlewares=https_redirect@file
- traefik.http.routers.https_lemmyexamplecom_static.tls.certresolver=letsencrypt
db: image: postgres:15-alpine hostname: db environment: - POSTGRES_USER=lemmy -
POSTGRES_PASSWORD=password volumes: - db:/var/lib/postgresql/data restart:
always logging: driver: journald options: tag: "{{.Name}}[{{.ID}}]" networks: -
default networks: reverse_proxy: external: true volumes: 2. Adjust Hostname:
Remember to replace the placeholder hostname in the configuration with the
actual hostname of your server. This ensures that Lemmy is accessible via the
correct URL. Start Lemmy: Save the changes to your docker-compose.yml file and
execute the following command in the terminal to start Lemmy: bash
docker-compose up -d 3. Verify Lemmy’s Availability: Once the containers are up
and running, access your Lemmy instance by navigating to the URL associated with
your server’s hostname. Please note that the instructions provided here assume a
basic understanding of Docker, Traefik, and server administration. Adjustments
may be necessary based on your specific setup and requirements.
Just wrote up a little post for those who want to self host a lemmy instance with docker-compose and traefik.
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !selfhosted@lemmy.world
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:
Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.
No spam posting.
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.
Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
Cool. The formatting is messed up on my server but I can see it in the original. I do wonder if this approach could work for k8s traefik ingress.