An API you can curl, or open in a browser, to receive Bluesky data as markdown!
11
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove CI Docker publishing, simplify to build-from-source

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

jack 8d048d0e 708960a8

+12 -55
-21
.tangled/workflows/docker.yml
··· 1 - when: 2 - - event: ["push"] 3 - branch: ["main"] 4 - 5 - engine: "nixery" 6 - 7 - dependencies: 8 - nixpkgs: 9 - - kaniko 10 - 11 - steps: 12 - - name: Build and push to Docker Hub 13 - command: | 14 - mkdir -p /kaniko/.docker 15 - AUTH=$(printf '%s:%s' "$DOCKER_USERNAME" "$DOCKER_TOKEN" | base64 -w0) 16 - printf '{"auths":{"https://index.docker.io/v1/":{"auth":"%s"}}}' "$AUTH" > /kaniko/.docker/config.json 17 - 18 - executor \ 19 - --dockerfile=/tangled/workspace/Dockerfile \ 20 - --destination=docker.io/j4ckxyz/bsky-md:latest \ 21 - --context=dir:///tangled/workspace
+12 -33
README.md
··· 59 59 60 60 Run your own instance on any machine — works on Mac, Linux, and Windows. Great paired with a [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) to make it publicly accessible without opening ports. 61 61 62 - ### Quick start (one-liner) 63 - 64 62 ```bash 65 - docker run -d -p 3010:3010 --restart unless-stopped j4ckxyz/bsky-md:latest 63 + git clone https://tangled.org/j4ck.xyz/bsky-md 64 + cd bsky-md 65 + docker compose up -d 66 66 ``` 67 67 68 68 Your instance is now running at **http://localhost:3010**. 69 69 70 - ### Docker Compose (recommended) 71 - 72 - Compose makes it easy to configure the port and rate limits. 73 - 74 - 1. Download the compose file: 75 - ```bash 76 - curl -O https://tangled.org/j4ck.xyz/bsky-md/raw/main/docker-compose.yml 77 - ``` 78 - 2. (Optional) Edit `docker-compose.yml` to adjust settings — see the table below. 79 - 3. Start it: 80 - ```bash 81 - docker compose up -d 82 - ``` 83 - 4. Stop it: 84 - ```bash 85 - docker compose down 86 - ``` 87 - 88 70 ### Configuration 89 71 90 - Edit these values directly in `docker-compose.yml`, or pass them as environment variables: 72 + Edit these values in `docker-compose.yml` before starting: 91 73 92 74 | Variable | Default | Description | 93 75 |---|---|---| 94 - | `PORT` | `3010` | Host port to expose (e.g. `PORT=8080 docker compose up -d`) | 76 + | `PORT` | `3010` | Host port to expose | 95 77 | `RATE_LIMIT_MAX` | `10` | Max requests per IP per window | 96 - | `RATE_LIMIT_WINDOW_MS` | `60000` | Window size in milliseconds (default: 1 minute) | 78 + | `RATE_LIMIT_WINDOW_MS` | `60000` | Window size in milliseconds (default: 1 min) | 97 79 98 - **Personal use?** Set `RATE_LIMIT_MAX=100` or remove the limit entirely. 99 - 100 - **Public instance?** Keep the defaults or lower `RATE_LIMIT_MAX` to protect Bluesky's API. 80 + **Personal use?** Set `RATE_LIMIT_MAX=100` or higher. 81 + **Public instance?** Keep the defaults to protect Bluesky's API. 101 82 102 83 ### Updating 103 84 104 85 ```bash 105 - docker compose pull && docker compose up -d 86 + git pull && docker compose up -d --build 106 87 ``` 107 88 108 - ### Building from source 89 + ### Stopping 109 90 110 91 ```bash 111 - git clone https://tangled.org/j4ck.xyz/bsky-md 112 - cd bsky-md 113 - docker compose up --build -d 92 + docker compose down 114 93 ``` 115 94 116 95 ## Stack 117 96 118 - Next.js 16 · TypeScript · `@atproto/api` · Deployed on Vercel · Docker: `j4ckxyz/bsky-md` 97 + Next.js 16 · TypeScript · `@atproto/api` · Deployed on Vercel
-1
docker-compose.yml
··· 1 1 services: 2 2 bsky-md: 3 - image: j4ckxyz/bsky-md:latest 4 3 build: . 5 4 ports: 6 5 - "${PORT:-3010}:3010"
og-image-card.png

This is a binary file and will not be displayed.