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
- In Umbrel's App Store, install Portainer.
- Open Portainer and sign in with the credentials shown after installation. Change the password when prompted.
- Open its Docker environment, then select Stacks → Add stack and name the stack
openpost.
Deploy OpenPost
- Download
deploy/portainer/docker-compose.ymland paste its contents into Portainer's Web editor. - Keep the
openpost_data:/datanamed volume andrestart: unless-stopped. Umbrel requires named volumes for persistent custom-container data; bind-mounted data can be lost when Portainer restarts or updates. - If another app uses port
8080, change the mapping to an available port, such as"8090:8080". Keep the container port andOPENPOST_PORTat8080. - 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_KEYUse 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.
- Replace the image's
latesttag with a release tag from GitHub Releases for a permanent installation. - 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/readyExpect "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/mediaReplace 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/readyAfter 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.