Skip to content

Sample configurations

nginx.conf

This is the configuration used in the docker compose setup.

nginx.conf
server {
    listen 80 default_server;
    access_log /dev/stdout;
    server_name localhost;

    location ~ /(actor|inbox|outbox|.well-known|followers|following) {
        auth_request /auth;
        auth_request_set $requester $upstream_http_x_cattle_grid_requester;

        rewrite /(.*) /ap/$1 break;

        proxy_pass http://cattle_grid_app;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $remote_addr;
        proxy_set_header X-Cattle-Grid-Requester $requester;
        proxy_set_header X-Original-URI $request_uri;
        proxy_set_header X-AP-Location "$scheme://$host$request_uri";
    }


    location ~ / {
        proxy_pass http://rss_app;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $remote_addr;
        proxy_set_header X-Cattle-Grid-Requester $requester;
        proxy_set_header X-Original-URI $request_uri;
    }

    location = /auth {
        internal;
        proxy_pass http://cattle_grid_app/auth/auth;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
        proxy_set_header X-Original-Method $request_method;
        proxy_set_header X-Original-Host $host;
        proxy_set_header X-Original-Port $server_port;
    }
}

docker-compose.yml

This is the docker compose file

docker-compose.yml
# SPDX-FileCopyrightText: 2023 Helge
#
# SPDX-License-Identifier: MIT

services:
  rss_app:
    image: ghcr.io/astral-sh/uv:python3.11-alpine
    volumes:
      - .:/opt
    working_dir: /opt
    environment:
      UV_PROJECT_ENVIRONMENT: "/tmp/venv"
    entrypoint: ./resources/dev/entrypoint.sh
    command: "uv run uvicorn --factory rss:create_app --port 80 --reload --host 0.0.0.0"
  rss:
    image: nginx:1.25-alpine
    volumes:
      - ./resources/dev/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - 3343:80
    depends_on:
      - rss_app
  rss_runner:
    image: ghcr.io/astral-sh/uv:python3.11-alpine
    hostname: rss_runner
    volumes:
      - .:/opt
    working_dir: /opt
    environment:
      UV_PROJECT_ENVIRONMENT: "/tmp/venv"
    entrypoint: ./resources/dev/entrypoint.sh
    depends_on:
      - rss
    command: "/bin/sh"
    profiles: ["skip"]

networks:
  default:
    external: true
    name: fediverse-pasture