A simple tool which lets you scrape twitter accounts and crosspost them to bluesky accounts! Comes with a CLI and a webapp for managing profiles! Works with images/videos/link embeds/threads.
11
fork

Configure Feed

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

at main 63 lines 1.5 kB view raw
1# syntax=docker/dockerfile:1.7 2 3FROM oven/bun:1-slim AS build 4 5WORKDIR /app 6 7RUN apt-get update \ 8 && apt-get install -y --no-install-recommends \ 9 python3 \ 10 make \ 11 g++ \ 12 ca-certificates \ 13 && rm -rf /var/lib/apt/lists/* 14 15COPY package.json ./ 16COPY bun.lock ./bun.lock 17COPY scripts ./scripts 18 19RUN bun install --frozen-lockfile 20 21COPY . . 22 23RUN bun run build \ 24 && bun install --frozen-lockfile --production 25 26 27FROM oven/bun:1-slim AS runtime 28 29WORKDIR /app 30 31ENV NODE_ENV=production \ 32 HOST=0.0.0.0 \ 33 PORT=3000 \ 34 TWEETS2BSKY_DATA_DIR=/app/data \ 35 SCHEDULED_ACCOUNT_TIMEOUT_MS=480000 \ 36 CHROME_BIN=/usr/bin/chromium \ 37 PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium 38 39RUN apt-get update \ 40 && apt-get install -y --no-install-recommends \ 41 chromium \ 42 ca-certificates \ 43 tini \ 44 && rm -rf /var/lib/apt/lists/* 45 46COPY --from=build /app/package.json ./package.json 47COPY --from=build /app/bun.lock ./bun.lock 48COPY --from=build /app/node_modules ./node_modules 49COPY --from=build /app/dist ./dist 50COPY --from=build /app/web/dist ./web/dist 51COPY --from=build /app/public ./public 52 53RUN mkdir -p /app/data \ 54 && ln -sf /app/data/config.json /app/config.json 55 56VOLUME ["/app/data"] 57 58EXPOSE 3000 59 60HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=5 CMD ["bun", "-e", "fetch('http://127.0.0.1:' + (process.env.PORT || 3000) + '/api/auth/bootstrap-status').then((res) => process.exit(res.ok ? 0 : 1)).catch(() => process.exit(1))"] 61 62ENTRYPOINT ["/usr/bin/tini", "--"] 63CMD ["bun", "dist/index.js"]