<!-- Generated from the canonical OpenPost public page. Do not edit this build artifact. -->

Title: Install on CasaOS
Description: Import OpenPost as a CasaOS customized app from a ready-to-use Compose file.
Canonical: https://docs.openpo.st/self-hosting/casaos
Source: [https://docs.openpo.st/self-hosting/casaos](https://docs.openpo.st/self-hosting/casaos)

# Install on CasaOS

Import OpenPost as a CasaOS customized app with the supplied [Compose file](https://github.com/getopenpost/openpost/blob/main/deploy/casaos/docker-compose.yml). The image supports x86_64 devices. Other architectures need amd64 emulation.

## What you need

- A CasaOS device with the App Store available.
- Its local IP address. The Compose file uses `10.0.0.1` as an example.
- A public HTTPS address before you connect social accounts.

Generate two secrets and keep them private:

```sh
openssl rand -base64 32
openssl rand -base64 32
```

## Import the app

1. Download [`deploy/casaos/docker-compose.yml`](https://github.com/getopenpost/openpost/blob/main/deploy/casaos/docker-compose.yml).
2. Replace `10.0.0.1` with your CasaOS device's IP address in `OPENPOST_APP_URL`, `OPENPOST_PUBLIC_URL`, and `OPENPOST_MEDIA_URL`.
3. Replace the two `REPLACE-WITH-GENERATED-...` values with the secrets you generated.
4. In CasaOS, open the App Store, choose **"+" → Install a customized app → Import**, and paste the edited file.
5. Check the image, port `8080`, and `openpost_data` volume, then install the app.
6. Open `http://<your-device-ip>:8080` and create the first account. It becomes the instance administrator.

CasaOS stores the environment values in the imported definition instead of a separate `.env` file. Protect your edited copy because it contains both secrets.

## Before connecting providers

Replace the three local URLs with your [public HTTPS addresses](https://docs.openpo.st/self-hosting/reverse-proxy), then import the updated definition. Keep the `openpost_data` volume. Confirm readiness through the public address before connecting providers:

```sh
curl https://post.example.com/api/v1/ready
```

## Update and back up

Use a versioned image tag from [GitHub Releases](https://github.com/getopenpost/openpost/releases). Before changing it, stop OpenPost and back up the `openpost_data` volume with the edited Compose file. Import the updated definition, then check `/api/v1/ready`.

Keep backups private and off the device. A rollback may require the backup made for the previous version because database migrations are not always backward compatible. See [Maintenance](https://docs.openpo.st/self-hosting/maintenance) for the restore checklist.

## Next steps

- [Configure integrations](https://docs.openpo.st/self-hosting/integrations) for your social platforms.
- [Back up your instance](https://docs.openpo.st/self-hosting/maintenance) before relying on it for scheduled posts.
