Skip to content
This repository was archived by the owner on Sep 10, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Dockerfile to Migrate Twitter Data to Bluesky using
# https://github.com/marcomaroni-github/twitter-to-bluesky

# Sample Docker run
# docker run -v /path/to/twitter-data:/twitter-data \
# -v /path/to/.env:/twitter-to-bluesky/.env \
# -e BLUESKY_USERNAME=your_username \
# -e BLUESKY_PASSWORD=your_password \
# -e TWITTER_HANDLES=your_handles \
# twitter-bsky-migraton

FROM library/node:lts-bookworm

# Required environment variables
ENV BLUESKY_USERNAME=isaaclevin.com
ENV BLUESKY_PASSWORD=ihte-3ist-knvc-jq72
ENV TWITTER_HANDLES=isaacrlevin

# Add optional environment variables
ENV SIMULATE=1
ENV MIN_DATE=
ENV MAX_DATE=
ENV DISABLE_IMPORT_REPLY=
ENV API_DELAY=
ENV IGNORE_VIDEO_ERRORS=
ENV VIDEO_UPLOAD_RETRIES=

VOLUME /twitter-data

RUN npm install

COPY /scripts/check_env_and_files.sh /scripts/check_env_and_files.sh
RUN chmod +x /scripts/check_env_and_files.sh

CMD ["bash", "/scripts/check_env_and_files.sh"]
25 changes: 25 additions & 0 deletions sample-docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
version: '3.8'

services:
twitter-bsky-migration:
container_name: twitter-bsky-migration
image: twitter-to-bluesky
# build:
# context: .
# dockerfile: Dockerfile
volumes:
- /path/to/twitter-data:/twitter-data
# Optional
# - ./.env:./.env
environment:
BLUESKY_USERNAME: ${BLUESKY_USERNAME}
BLUESKY_PASSWORD: ${BLUESKY_PASSWORD}
TWITTER_HANDLES: ${TWITTER_HANDLES}
#Optional
# SIMULATE: ${SIMULATE}
# MIN_DATE: ${MIN_DATE}
# MAX_DATE: ${MAX_DATE}
# DISABLE_IMPORT_REPLY: ${DISABLE_IMPORT_REPLY}
# API_DELAY: ${API_DELAY}
# IGNORE_VIDEO_ERRORS: ${IGNORE_VIDEO_ERRORS}
# VIDEO_UPLOAD_RETRIES: ${VIDEO_UPLOAD_RETRIES}
24 changes: 24 additions & 0 deletions scripts/check_env_and_files.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

# Load environment variables from .env file if it exists in the current directory
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
fi

# Check required environment variables
REQUIRED_VARS=("BLUESKY_USERNAME" "BLUESKY_PASSWORD" "TWITTER_HANDLES")
for VAR in "${REQUIRED_VARS[@]}"; do
if [ -z "${!VAR}" ]; then
echo "Error: $VAR is not set."
exit 1
fi
done

# Check if /twitter-data directory is not empty
if [ -z "$(ls -A /twitter-data)" ]; then
echo "Error: /twitter-data is empty."
exit 1
fi

# Run the npm script
npm run start -- --archive-folder /twitter-data