Skip to content
OpenPostDocs
OpenPostDocs

Install on umbrelOS

Run OpenPost on umbrelOS through Portainer, check the local installation, and set up public access before connecting social accounts.

Run OpenPost as a Portainer stack on umbrelOS. Umbrel recommends Portainer for custom Docker containers, and OpenPost supplies a Compose file with SQLite and local media storage. The image supports x86_64 and ARM64 devices.

This installation is managed in Portainer and does not appear on the Umbrel home screen.

What you need

  • An umbrelOS device with access to its App Store.
  • An available port. The supplied Compose file uses 8080.
  • Two independent deployment secrets. Keep them in your private environment settings and retain the same values for upgrades and restores.
  • A public HTTPS address before you connect social accounts. You can check the installation locally first.

Install Portainer

  1. In Umbrel's App Store, install Portainer.
  2. Open Portainer and sign in with the credentials shown after installation. Change the password when prompted.
  3. Open its Docker environment, then select Stacks → Add stack and name the stack openpost.

Deploy OpenPost

  1. Download deploy/portainer/docker-compose.yml and paste its contents into Portainer's Web editor.
  2. Keep the openpost_data:/data named volume and restart: unless-stopped. Umbrel requires named volumes for persistent custom-container data; bind-mounted data can be lost when Portainer restarts or updates.
  3. If another app uses port 8080, change the mapping to an available port, such as "8090:8080". Keep the container port and OPENPOST_PORT at 8080.
  4. Under Environment variables, enter these values. Replace the two secret placeholders with the values you generated:
OPENPOST_APP_URL=http://umbrel.local:8080
OPENPOST_PUBLIC_URL=http://umbrel.local:8080
OPENPOST_MEDIA_URL=http://umbrel.local:8080/media
OPENPOST_JWT_SECRET=YOUR_GENERATED_JWT_SECRET
OPENPOST_ENCRYPTION_KEY=YOUR_GENERATED_ENCRYPTION_KEY

Use your chosen host port in all three URLs. If umbrel.local does not resolve on your computer, use the device's local IP address instead, both in the URLs and when opening the app. Leave OPENPOST_DISABLE_REGISTRATIONS unset or false until you create the first account.

  1. Replace the image's latest tag with a release tag from GitHub Releases for a permanent installation.
  2. Select Deploy the stack.

Check the local installation

Open http://umbrel.local:8080, using your chosen host and port. Create the first account, which becomes the instance administrator, then create a workspace.

Check readiness from your computer:

curl -fsS http://umbrel.local:8080/api/v1/ready

Expect "status":"ready" and "database":"ok". If the check fails, inspect the OpenPost container's logs in Portainer and confirm that the port is available. SQLite and media are stored in the stack's openpost_data named volume.

Before connecting social accounts

Set up a public HTTPS reverse proxy or tunnel that forwards requests to OpenPost's published port on your Umbrel. Forward the whole app, including /api/v1/ and /media/. Provider callbacks and media URLs must be reachable from outside your network.

In the existing Portainer stack, replace the three local URL values with your public address:

OPENPOST_APP_URL=https://post.example.com
OPENPOST_PUBLIC_URL=https://post.example.com
OPENPOST_MEDIA_URL=https://post.example.com/media

Replace post.example.com with your domain. Update the stack while keeping the same named volume and both secrets, then check readiness through HTTPS:

curl -fsS https://post.example.com/api/v1/ready

After it reports ready, configure social integrations, connect an account, and publish a test post. Set OPENPOST_DISABLE_REGISTRATIONS=true and update the stack if public signup should close. Existing accounts can still sign in.

Upgrade and back up

Stop OpenPost before backing up its named volume so the SQLite copy is consistent. Back up the volume, Compose definition, environment values, and image tag together, then start it again. Keep the backup private and off the device. Follow the maintenance guide for restore checks.

Before upgrading, make a backup, change the image tag in the existing stack, and redeploy without removing its volume. Check readiness, sign in, and open a saved post with media. Database migrations can require restoring a matching backup when rolling back.

Umbrel warns that uninstalling Portainer removes its custom containers and their data. Keep a tested backup before removing Portainer.

On this page