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 131 lines 3.7 kB view raw view rendered
1# tweets-2-bsky 2 3A powerful tool to crosspost Tweets to Bluesky, supporting threads, videos, and high-quality images. 4 5## Troubleshooting 6 7### Update Failures / Git Conflicts 8If `./update.sh` fails with "Pulling is not possible because you have unmerged files" or similar git errors: 9 101. Reset your local repository to match the remote (Warning: this discards local changes to tracked files): 11 ```bash 12 git reset --hard origin/master 13 ``` 142. Run the update script again: 15 ```bash 16 ./update.sh 17 ``` 18 19### PM2 interpreter mismatch 20If PM2 logs show command/runtime errors after an update (for example stale interpreter paths): 21 22Common error signature: 23 24```text 25TypeError: require() async module ".../dist/index.js" is unsupported. use "await import()" instead. 26``` 27 281. Run the repair script: 29 ```bash 30 chmod +x repair_pm2.sh 31 ./repair_pm2.sh 32 ``` 332. If needed, manually recreate PM2 with Bun as the process command: 34 ```bash 35 pm2 delete tweets-2-bsky || true 36 pm2 delete twitter-mirror || true 37 pm2 start "$HOME/.bun/bin/bun" --name tweets-2-bsky --cwd "$PWD" -- dist/index.js 38 pm2 save 39 ``` 403. Old crash lines remain in PM2 logs until log rotation/flush. Clear them if needed: 41 ```bash 42 pm2 flush 43 ``` 44 45### `bun: command not found` 46If Bun is missing on a source install host: 47 481. Run either installer/updater once (they auto-install and auto-upgrade Bun to latest stable): 49 ```bash 50 ./install.sh --no-start 51 # or 52 ./update.sh --no-restart 53 ``` 54 55### Native module load failure (`ERR_DLOPEN_FAILED`) 56If startup fails while loading native dependencies: 57 581. Reinstall/rebuild native dependencies with Bun: 59 ```bash 60 bun run rebuild:native 61 ``` 622. Rebuild and start: 63 ```bash 64 bun run build 65 bun run start 66 ``` 67 68### Dashboard appears unstyled / plain text UI 69If the app loads but looks mostly unstyled: 70 711. Rebuild web assets: 72 ```bash 73 bun run build 74 ``` 752. Restart server: 76 ```bash 77 bun run start 78 ``` 793. Hard refresh browser cache (`Cmd+Shift+R` on macOS). 80 81### CLI command not recognized 82When using Bun scripts, pass CLI args after `--`: 83 84```bash 85bun run cli -- status 86``` 87 88### Scheduler appears stuck on one account 89If a single source account hangs for a long time (media fetch/processing), scheduled checks now skip that account after a timeout and continue with the next one. 90 91- Default timeout: `480000` ms (8 minutes) 92- Override with env var: `SCHEDULED_ACCOUNT_TIMEOUT_MS` 93 94Examples: 95 96```bash 97# Docker 98docker run -d --name tweets-2-bsky -e SCHEDULED_ACCOUNT_TIMEOUT_MS=300000 -p 3000:3000 -v tweets2bsky_data:/app/data j4ckxyz/tweets-2-bsky:latest 99 100# Source install (.env) 101echo 'SCHEDULED_ACCOUNT_TIMEOUT_MS=300000' >> .env 102./update.sh 103``` 104 105To watch logs while debugging on Raspberry Pi: 106 107```bash 108docker logs -f tweets-2-bsky 109# or for source/PM2 110pm2 logs tweets-2-bsky 111``` 112 113### Docker: permissions writing `/app/data` 114If the container fails to write `config.json` or `database.sqlite`, ensure `/app/data` is writable by the container process. 115 116For easiest portability, use a named Docker volume: 117 118```bash 119docker volume create tweets2bsky_data 120docker run -d --name tweets-2-bsky -p 3000:3000 -v tweets2bsky_data:/app/data ghcr.io/j4ckxyz/tweets-2-bsky:latest 121``` 122 123The container stores persistent state under `TWEETS2BSKY_DATA_DIR` (default `/app/data`). If you mount a different path, set that env var to match: 124 125```bash 126docker run -d --name tweets-2-bsky -p 3000:3000 -v /host/path:/persist -e TWEETS2BSKY_DATA_DIR=/persist ghcr.io/j4ckxyz/tweets-2-bsky:latest 127``` 128 129### Docker: updating image 130In Docker mode, update by pulling a newer image and recreating the container with the same volume. 131`/api/update` / `update.sh` are source-install workflows.