Cloudron packaging for NewsDiff.
The app source lives in the newsdiff/ git submodule. This repo only contains deployment files.
cloudron-newsdiff/
├── newsdiff/ # git submodule — rmdes/newsdiff (app source)
├── Dockerfile # cloudron/base:5.0.0, builds from newsdiff/ submodule
├── CloudronManifest.json
├── start.sh # entrypoint: maps Cloudron env vars, runs migrations, starts processes
├── nginx.conf # reverse proxy: ActivityPub paths → Botkit, everything else → SvelteKit
└── env.sh.template # user-editable credentials (copied to localstorage on first run)
# 1. Clone with submodule
git clone --recurse-submodules https://github.com/rmdes/cloudron-newsdiff.git
cd cloudron-newsdiff
# 2. Build the Docker image (pushes to your configured registry)
cloudron build
# 3. Install on Cloudron
cloudron install --image <registry>/<image>:<tag> --location <subdomain.yourdomain.com># 1. Build new image from current submodule
cloudron build
# 2. Find the app ID if you don't have it
cloudron list
# 3. Update the running app
cloudron update --app <app-id> --image <registry>/<image>:<tag># 1. Pull latest commits from the app repo into the submodule
git submodule update --remote newsdiff
# 2. Commit the pinned submodule bump
git add newsdiff
git commit -m "chore: update newsdiff to latest"
git push
# 3. Rebuild and redeploy
cloudron build
cloudron update --app <app-id> --image <registry>/<image>:<tag>git submodule status
# shows the pinned commit SHA and whether it's ahead/behindOn every container start, start.sh:
- Creates required directories under
/app/data/and/run/ - Copies
env.sh.templateto/app/data/config/env.shon first run (localstorage) - Sources
/app/data/config/env.shfor user-supplied credentials (Bluesky, bot identity) - Maps Cloudron addon env vars (
CLOUDRON_POSTGRESQL_*,CLOUDRON_REDIS_*, etc.) to app vars - Runs DB migrations via
node --import tsx/esm src/lib/server/db/migrate.ts - Starts nginx (port 8000, public), Botkit (port 8001), and SvelteKit (port 3000)
- Uses
wait -n— if any process exits, the container stops
| Addon | Env vars injected | Used for |
|---|---|---|
postgresql |
CLOUDRON_POSTGRESQL_* |
Database |
redis |
CLOUDRON_REDIS_* |
BullMQ job queue |
localstorage |
CLOUDRON_DATA_DIR |
Bot profile config + uploaded images |
oidc |
CLOUDRON_OIDC_* |
Protects /feeds and /bot/profile |
After install, edit /app/data/config/env.sh via the Cloudron file manager:
export BLUESKY_HANDLE="yourhandle.bsky.social"
export BLUESKY_PASSWORD="xxxx-xxxx-xxxx-xxxx"
export BOT_USERNAME="bot"
export BOT_NAME="NewsDiff Bot"Restart the app for changes to take effect.