← Worship Assist

Host a Library

Run Worship Assist on your own cloud storage instead of a shared server.

Worship Assist can run on your own cloud storage instead of a shared server. You create a private storage bucket, hand the app one access key, and the app does the rest — you build your song library inside the app and share it with your team by link. Nothing is public; you own the storage and the content.

The app speaks the S3 API, so it works with Amazon S3 and Backblaze B2 (and other S3-compatible stores). This guide covers S3 and B2 in full.

This is the source for the published setup page the app links to: https://pmarch502.github.io/good-faith-studio/worship-assist/host/

Get Worship Assist for Mac

Worship Assist runs on the Mac just as fully as on an iPhone or iPad — same songs, same features, and a big screen makes the timeline and mixer far easier to work with. Plenty of people practise on a Mac and never host anything.

It's also the answer if you are setting up your team's library: building a song means picking audio files and converting them, which the phone and tablet app doesn't do, so that part happens here.

Download for Mac

Free · macOS 10.15 or later · 28 MB

Installing it

  1. Click Download for Mac above. The file saves to your Downloads folder.
  2. Double-click Worship-Assist.dmg. A window opens showing the Worship Assist icon next to your Applications folder.
  3. Drag the Worship Assist icon onto the Applications folder, then close that window. (Don't run the app from there — that window is just the installer, and you can throw the .dmg away afterwards.)
  4. Open your Applications folder and double-click Worship Assist. It opens straight away: Apple has checked and approved this app, so you won't get a "damaged" or "unidentified developer" warning.
  5. You'll land on a screen called Connect a library. That's expected — the app starts empty and fills up with your own team's music. What you do next depends on why you came:
    • Someone sent you a library link? Paste it in and choose Connect. That's you finished — start playing. The rest of this page is setup you don't need.
    • Creating the library for your team? Choose Host a library and carry on below.

The big picture

  1. Create a private bucket — on Amazon S3 or Backblaze B2.
  2. Create one access key for that bucket (full access).
  3. In the app: Connect a library → Host a library, enter your bucket + key, and Connect. You're now the host.
  4. Add your songs in the appAdd songs → Publish. You never upload files by hand; the app converts and stores them for you.
  5. Share your library — the app gives you two links from that one key. Send the User link to your team.

Only steps 1–2 happen outside the app, and only once.

One key, two links — how access works

You make a single access key. When you enter it in the app, the app produces two shareable links from it:

Both links point at the same bucket with the same key. The difference is enforced by the app — a User link simply doesn't show the publish/manage tools.

Treat the links like passwords. The access key is carried inside the link (lightly scrambled, not encrypted), so anyone you send a link to effectively holds the key. Share links only within your team. This is the right level of protection for a trusted group; it isn't meant for posting a link publicly. Two good habits:

What the app will ask for

When you connect, the app asks for these (you get them from the provider setup below):

FieldWhat it is
ProviderAmazon S3 or Backblaze B2 (pick from the list)
Regionyour bucket's region code — the app builds the endpoint from it
Bucketyour bucket name
Access key IDthe public half of your key
Secret access keythe private half — shown once, so save it
Library name (optional)a friendly label, e.g. "Grace Worship"
Folder / prefix (optional)leave blank unless you want the library under a subfolder

Amazon S3

1. Create the bucket

  1. S3 console → Create bucket.
  2. Bucket name: globally unique (e.g. grace-worship-library).
  3. Region: pick one near your team and note its code (e.g. us-east-2).
  4. Block Public Access: leave ON (fully blocked). The app uses your key, not public access.
  5. Create.

2. Turn on versioning (your safety net)

Bucket → PropertiesBucket VersioningEditEnableSave. Now every overwrite and delete is recoverable.

3. Create one access key

  1. IAM console → UsersCreate user (e.g. worship-app, no console sign-in needed).
  2. PermissionsAttach policies directlyCreate inline policyJSON, and paste the policy below (replace grace-worship-library with your bucket name).
  3. Finish creating the user, then open it → Security credentialsCreate access keyApplication running outside AWScopy the Access key ID and secret now (the secret is shown only once).
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListTheLibrary",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::grace-worship-library"
    },
    {
      "Sid": "ReadWriteObjects",
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::grace-worship-library/*"
    }
  ]
}

(Using a prefix? Change the second Resource to arn:aws:s3:::grace-worship-library/your-prefix/*.)

4. Values for the app

FieldValue
ProviderAmazon S3
Regionyour bucket's region (e.g. us-east-2)
Bucketyour bucket name
Access key ID / Secretfrom step 3

Backblaze B2

B2 exposes an S3-compatible API, so the same app works. The differences: B2's console, and it keeps file versions by default (no versioning switch to flip).

1. Create the bucket

  1. B2 console → BucketsCreate a Bucket.
  2. Bucket unique name (e.g. grace-worship-library).
  3. Files in Bucket are: Private.
  4. Create.

2. Find the endpoint + region

On the bucket's page, B2 shows an Endpoint like s3.us-west-004.backblazeb2.com. The region is the middle segment — here, us-west-004. That's what the app wants.

3. Create one application key

  1. App KeysAdd a New Application Key.
  2. Name it (e.g. worship-app).
  3. Allow access to Bucket: restrict it to your bucket.
  4. Type of Access: Read and Write (this includes delete).
  5. Create — B2 shows the keyID and applicationKey once. Copy both.

4. Values for the app

FieldValue
ProviderBackblaze B2
Regionthe endpoint's middle segment (e.g. us-west-004)
Bucketyour bucket name
Access key IDthe B2 keyID
Secret access keythe B2 applicationKey
B2's free tier includes 10 GB of storage — enough to try a few songs, not a full library.

In the app (once you have the values)

Connect as host

  1. Open Worship Assist. On Connect a library, tap Host a library.
  2. Pick your Provider, then enter Region, Bucket, Access key ID, Secret (the app fills in the endpoint).
  3. Your Host and User links appear. Tap Connect to this library — you're now hosting.

Add your songs

Use Add songs → Publish in the app (host only, on a computer). Pick your stems; the app converts and uploads them into your bucket. You never touch storage folders by hand.

Invite your team

On the Host a library screen, copy the User link and send it to your team (text, email, group chat). Each person pastes it into their own Connect a library screen — and they're in, with the play and arranging tools but not publishing. Keep the Host link for yourself or a co-host.

Other S3-compatible providers

The app works with any S3-compatible object store. In the app, choose Other (S3-compatible) and supply the endpoint + region yourself. The setup pattern is always the same: a private bucket + one full-access key scoped to it.

ProviderEndpoint patternRegion example
Cloudflare R2<account-id>.r2.cloudflarestorage.comauto
Wasabis3.<region>.wasabisys.comus-east-1
DigitalOcean Spaces<region>.digitaloceanspaces.comnyc3
MinIO (self-hosted)your server hostoften us-east-1

(Amazon S3 and Backblaze B2 are the two we've set up and tested.)

Checklist