Astro Bridge Troubleshooting
Issues connecting UniSync to an Astro site via the Bridge API.
For initial setup instructions, see the Astro CMS guide.
Bridge API Not Reachable
Symptoms: UniSync shows "Connection refused" or "Cannot connect to Astro Bridge" when testing the environment or publishing content. Timeout errors after several seconds.
Cause: The Bridge API process is not running, the URL or port is wrong, or a firewall is blocking the connection.
Resolution:
- Verify the Bridge API is running on the target server:bash
# Check if the process is running ps aux | grep bridge # Check if the port is listening curl http://localhost:YOUR_PORT/health - Check the URL in UniSync: Go to the publish environment settings and verify:
- The URL includes the correct protocol (
http://orhttps://). - The port number matches what the Bridge API is listening on.
- There is no trailing slash.
- If the Bridge is on a remote server, use the server's public IP or domain, not
localhost.
- The URL includes the correct protocol (
- Check firewall rules: Ensure the port is open:bash
# Linux (ufw) sudo ufw status # Check if port is accessible from outside curl http://YOUR_SERVER_IP:YOUR_PORT/health - Check the Bridge API logs for startup errors. Common issues:
- Port already in use by another process.
- Missing configuration file.
- Permission denied on the listening port (ports below 1024 require root).
Authentication Failures
Symptoms: Bridge API responds but returns 401 Unauthorized or 403 Forbidden. The connection test fails with an authentication error.
Cause: The API key configured in UniSync does not match the key the Bridge API expects.
Resolution:
- Check the API key in UniSync's publish environment settings.
- Compare it with the key configured in the Bridge API's environment or config file.
- Keys must match exactly -- watch for:
- Leading or trailing whitespace (copy-paste issues).
- Different keys for different environments (staging vs production).
- If you have lost the key, generate a new one in the Bridge API configuration and update it in UniSync.
- Test authentication directly:bash
curl -H "Authorization: Bearer YOUR_API_KEY" \ http://YOUR_BRIDGE_URL/health
File Write Permissions
Symptoms: Bridge API returns 500 Internal Server Error or a message about permission denied. The API is reachable and authentication succeeds.
Cause: The Bridge API process does not have write permissions to the Astro project's content directory.
Resolution:
- Check the content directory path in the Bridge API configuration. It should point to the
src/content/directory (or equivalent) in your Astro project. - Verify permissions:bashThe user running the Bridge API process must have write access.
ls -la /path/to/astro-project/src/content/ - Fix permissions:bash
# Make the Bridge API user the owner chown -R bridgeuser:bridgeuser /path/to/astro-project/src/content/ # Or grant group write access chmod -R g+w /path/to/astro-project/src/content/ - Check SELinux or AppArmor: On systems with mandatory access controls, you may need to add an exception for the content directory.
- Check Bridge API logs for the exact file path that failed -- it may reveal a misconfigured content directory path.
Build Trigger Failures
Symptoms: Content is written to the Astro project successfully, but the site does not rebuild. New posts are not visible on the live site.
Cause: The build trigger (webhook, CI/CD pipeline, or local build command) is not configured or is failing.
Resolution:
- Check if builds are configured: The Bridge API can optionally trigger a build after writing content. Verify this is enabled in the Bridge configuration.
- Check build command: If the Bridge runs a local build:bashFix any build errors before expecting automated builds to work.
# Test the build manually cd /path/to/astro-project npm run build - Webhook-based builds (Netlify, Vercel, etc.):
- Verify the webhook URL is correct in the Bridge configuration.
- Check the hosting provider's deploy logs for errors.
- Test the webhook:bash
curl -X POST https://api.netlify.com/build_hooks/YOUR_HOOK_ID
- CI/CD pipeline: Check the pipeline logs (GitHub Actions, GitLab CI, etc.) for build failures.
- Rate limits: Some hosting providers limit the number of builds per hour. If you are publishing many posts rapidly, builds may be queued or dropped.
Content Not Appearing After Publish
Symptoms: The Bridge API reports success, the build completes, but the new content is not visible on the live site.
Cause: Build cache, CDN cache, or content schema mismatch.
Resolution:
- Clear the build cache:bash
cd /path/to/astro-project rm -rf .astro/ # Astro build cache rm -rf dist/ # Previous build output npm run build - Clear CDN cache: If you use Cloudflare, Netlify, or another CDN:
- Purge the cache from the CDN dashboard.
- Or wait for the TTL to expire (can be minutes to hours depending on config).
- Check content schema: Astro content collections validate frontmatter against a schema. If the published content has missing or incorrect fields, Astro silently excludes it.
- Check
src/content/config.tsfor the expected schema. - Verify the Bridge API is generating frontmatter that matches.
- Run
npm run buildlocally and look for content collection warnings.
- Check
- Check the file was written correctly:bash
# List recently modified files ls -lt /path/to/astro-project/src/content/blog/ | head -5 # Inspect the frontmatter head -20 /path/to/astro-project/src/content/blog/your-new-post.md - Draft status: If the content has
draft: truein its frontmatter, Astro excludes it from production builds by default. Check the Bridge API's default frontmatter settings.
Diagnostic Checklist
- [ ] Bridge API process is running
- [ ] Bridge URL and port are correct in UniSync environment settings
- [ ] API key matches between UniSync and Bridge configuration
- [ ] Firewall allows traffic on the Bridge port
- [ ] Bridge API health endpoint responds:
curl http://BRIDGE_URL/health - [ ] Content directory exists and is writable by the Bridge process
- [ ] Build trigger is configured and working
- [ ] Content schema matches Astro collection config
- [ ] CDN/build cache has been cleared after troubleshooting