---
title: 'Update guide'
---

# Keeping your instance synced

Keeping your instance up-to-date with the latest features and bug fixes can enhance your instance's functionality and ensure it stays current. When updates are released, you have the option to adopt them using either one of the guides. Below is a automatic and an manual guide on updating your instance.

## Automatic update

You can also setup a scheduled workflow to automatically update your instance. This will allow you to keep your instance up to date without manual intervention.

To do this, you will need to follow the guide below...
1. If you have not already, click [here](https://github.com/movie-web/movie-web/fork) to fork the movie-web Github repository.
2. Create a [personal access token](https://docs.catalyst.zoho.com/en/tutorials/githubbot/java/generate-personal-access-token) and add to [repository's secret](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) as `PAT`
3. Paste the below file into your repository's root `/.github/workflows` directory

```yaml
# File: .github/workflows/sync.yml
name: Sync fork

on:
  schedule:
  - cron: "0 * * * *" # Run the job every hour
  push:
    branches:
    - "*"
    paths:
    - .github/workflows/sync.yml

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: gh repo sync <OWNER>/<FORK> # Replace the placeholders within the < >
      env:
        GH_TOKEN: ${{ github.token }}
    - uses: gautamkrishnar/keepalive-workflow@v1
```
::alert{type="info"}
Github action authored by [Toon](https://github.com/Toon-arch)
::

4. Replace the `<OWNER>` placeholder with the GitHub username of the account that owns the fork.
5. Replace the `<FORK>` placeholder with the repository name of your fork.
6. Commit and push the changes to your repository.

Your instance should now be automatically updated to the latest version.

## Manual update

You can manually update by executing the following commands in the root directory of the repository you have created, you would have to do this every time a push occurs to stay up-to-date:

```bash
git remote add movie-web https://github.com/movie-web/movie-web.git
git fetch movie-web
# Change `dev` to `master` if you want a stable experience
git merge movie-web/dev --allow-unrelated-histories
git push -f # Force push to your origin main branch
```

# Upgrade version

## From `3.X` to `4.X`

You will need the latest version of the proxy worker. Redeploy a new worker using [our self-hosting guide](../2.proxy/1.deploy.md).

After you have the new worker, you will need to [get the new movie-web deployment files](https://github.com/movie-web/movie-web/releases/latest). **You CANNOT use the non-PWA version**. To upgrade safely without any complications, you need to update with `movie-web.pwa.zip`, Not the non-PWA version.

In the future, you will **ALWAYS** need to go with the PWA option. You cannot downgrade to non-PWA version without facing many caching complications.
