FedResDa Pod is a Solid Pod deployment for querying FEDerated RESearch DAta.
- Docker with Compose plugin (
docker compose) - A hostname and DNS record pointing to the server (for public deployments)
- Host storage path for persistent data (
HOST_DATA_DIR)
Download and start from a release artifact:
wget https://github.com/SetMeld/fedresda-node/releases/latest/download/fedresda-node-deploy-latest.tar.gz
tar -xzf fedresda-node-deploy-latest.tar.gz
cd fedresda-node-deploy
./deploy.sh init
# edit config.env
./deploy.sh upOr build the package from source:
npm install
npm run build
npm run deploy:packageThis creates build/fedresda-node-deploy-<version>.tar.gz.
Required keys validated by deploy.sh:
BASE_URL(public app URL, for examplehttps://pod.example.org)HOST_DATA_DIR(persistent host directory)NODE_HOST_PORTTRUST_PROXYTRIPLESTORE_MODE(bundledorexternal)PROXY_MODE(nginx,external, ornone)TLS_MODE(none,custom, orletsencrypt)
Mode-specific keys:
TRIPLESTORE_MODE=external-> setEXTERNAL_TRIPLESTORE_URLTLS_MODE=custom-> setCUSTOM_CERT_FULLCHAINandCUSTOM_CERT_PRIVKEYTLS_MODE=letsencrypt-> setSSL_EMAILPROXY_MODE=nginx-> optionalNGINX_CLIENT_MAX_BODY_SIZE(default1g, e.g.2g)
Set TRUST_PROXY to match your network path so Express correctly uses forwarded headers:
- unset/empty: default behavior (do not trust forwarded headers)
trueor1: trust proxyfalseor0: explicitly do not trust- numeric value: trust that many proxy hops
When proxying (Nginx/F5/etc.), ensure these headers are passed:
X-Forwarded-ForX-Forwarded-Proto
If PROXY_MODE=external, disable bundled Nginx and configure your own proxy similarly.
./deploy.sh status
./deploy.sh logs
./deploy.sh restart
./deploy.sh down
./deploy.sh renew-certsrenew-certs is only valid with PROXY_MODE=nginx and TLS_MODE=letsencrypt.
Upgrade in place so config.env stays where it is:
# from the server, while in the existing deploy directory
cd fedresda-node-deploy
cp config.env config.env.backup
cd ..
wget https://github.com/SetMeld/fedresda-node/releases/latest/download/fedresda-node-deploy-latest.tar.gz
tar -xzf fedresda-node-deploy-latest.tar.gz --strip-components=1 -C fedresda-node-deploy
cd fedresda-node-deploy
./deploy.sh upNotes:
deploy.sh upnow auto-adds any missing config keys fromconfig.env.exampleduring upgrades.- Keep
HOST_DATA_DIRunchanged so existing pod data remains available. - If needed, restore your backup with
cp config.env.backup config.env, extract a previous release tarball, and run./deploy.sh up.
- Open your pod URL (or
http://localhost:3000/in local dev). - Sign up and create your pod/account.
- Set an SSH key in the UI if you need Git-based integration workflows.
In local development, data is stored under data/, including:
data/.internal/integration-gitdata/.internal/integration-codedata/.internal/integration-metadata/.internal/authorized_keys
Example push target in dev:
git remote add origin ssh://git@localhost:2229/my_repo_name.git
git push -u origin mainserver(@fedresda/server): Community Solid Server integration and API layerui(@fedresda/ui): React/Expo UI apptypes(@fedresda/types): shared generated/schema types
npm install
npm run devnpm run dev/npm run dev:server/npm run dev:uinpm run build/npm run build:types/npm run build:server/npm run build:uinpm run graphnpm run deploy:packagenpm run version:getnpm run version:set <version>npm run version:bump <major|minor|patch|prerelease>
Pushes to main run .github/workflows/release-deploy-package.yml and publish:
fedresda-node-deploy-latest.tar.gzfedresda-node-deploy-<version>.tar.gz
For a specific release:
wget https://github.com/SetMeld/fedresda-node/releases/download/<tag>/fedresda-node-deploy-<version>.tar.gznode-app(Community Solid Server)- optional
triplestore(bundled Blazegraph) - optional
nginx certbot(invoked by script for Let's Encrypt issue/renew)
MIT