---
title: "Moving installations"
source: https://dev.pageseeder.com/guide/installation/migrating.html
description: "A guide for moving PageSeeder installations to new servers or cloned virtual machines, covering installation, database restoration, file copying, configuration updates, and domain name changes."
last_updated: 2026-08-11T16:10:50+10:00
tokens: ~1342
---

# Moving installations

Moving PageSeeder from one server to another, or cloning a virtual machine and changing the server name is a straightforward task. However, like many administration tasks, it isn’t risk-free.

To minimize the chance of problems, always have a complete backup of the running system prior to any changes. In general it is better not to upgrade PageSeeder as part of the migration. Upgrade and check the server as a separate task, either before or after the migration.

On Rocky Linux v8/v9 you can install an older version using a command like:

```shell
$ dnf install pageseeder-6.2000-1
```

or to downgrade an existing PageSeeder to a specified version:

```shell
$ dnf downgrade pageseeder-6.2000-1
```

On CentOS v7 you can install an older version using a command like:

```shell
$ yum install pageseeder-5.9607-1
```

or to downgrade an existing PageSeeder to a specified version:

```shell
$ yum downgrade pageseeder-5.9607-1
```

## Moving PageSeeder

To move a PageSeeder server, do the following:

> **Note:** If the server has been **cloned**, skip to **step 9,** but if the implementation includes a proxy server like NGINX, remember to update the name of the PageSeeder server in the [proxy configuration](/guide/installation/configuring_a_proxy.md).

**Install** PageSeeder on the [new server](/guide/installation/new_installation.md), but don’t start it. Ideally, use the same ports as the existing server and [configure a proxy](/guide/installation/configuring_a_proxy.md) if required.

**Stop** the existing PageSeeder and **perform** file system and [database backups](/guide/installation/mysql.md).

**Restore** the PageSeeder [database with create](/guide/installation/mysql.md) on the new server, ensuring you create the same `pageseeder` database account password as on the existing server.

**Copy** the following folders from the existing PageSeeder to the new PageSeeder. If using Linux `scp`, add the `-p` option to preserve file modification dates.

```text
[pageseeder]/documents
[pageseeder]/webapp/WEB-INF/config
[pageseeder]/webapp/WEB-INF/state
```

If migrating PageSeeder v5.96 or earlier, instead of `WEB-INF/state` copy the following:

```text
[pageseeder]/ps-publisher/WEB-INF/config
[pageseeder]/ps-publisher/WEB-INF/template (but not template/default)
[pageseeder]/webapp/WEB-INF/cache
[pageseeder]/webapp/WEB-INF/index
[pageseeder]/webapp/WEB-INF/template (but not template/default*)
[pageseeder]/webapp/woconfig
```

If the database password has changed, edit the `config/database.properties` file and add a `LoginPassword` property that has the new, unencrypted password. PageSeeder encrypts it upon startup and removes the property.

If the JDBC driver hasn’t been downloaded to the new server, **copy** the database driver `.jar` files (e.g. `mysql*.jar`) located in:

```text
[pageseeder]/webapp/WEB-INF/drivers
[pageseeder]/webapp/WEB-INF/lib
```

Use the same Java `-Xmx` memory options:

On Rocky Linux v8/v9, run the `setup.sh` to use the same Java `-Xmx` memory options. These are in the `/etc/systemd/system/pageseeder.service.d/override.conf` file on the existing server.

```shell
# /opt/pageseeder/bin/setup.sh --java-options=-Xmx2G
```

On Centos v7, ensure `xinetd` and `tomcat` are properly configured by running the following command and accepting default options. Ideally ,use the same Java `-Xmx` memory options. These are at the top of the `/opt/pageseeder/tomcat/bin/startup.sh` file on the existing server.

```shell
# service pageseeder config
```

**Run** the following command to ensure the new PageSeeder has access to all files:

```shell
# chown -R pageseeder:pageseeder /opt/pageseeder
```

If the server domain name has changed:

**Obtain** a product key for the new domain (you can get a [temporary product key](https://license.pageseeder.com/public/issue.html) if required) and **update** it in

```text
[pageseeder]/webapp/WEB-INF/config/global.properties
```

**Update** the *webSiteAddress* and *emailDomain* in

```text
[pageseeder]/webapp/WEB-INF/config/global.properties
```

If migrating v5.97 or earlier, these values are in `template.properties`.

**Start** PageSeeder (on Linux use `service pageseeder start`), then **update** the old domain name (**DO NOT add a new host**). To do this go to **System administration \> System configuration \> Internal hosts** (or Admin \> Hosts in version 5).

**Start** PageSeeder, if not already started (on Linux use `service pageseeder start`).

When moving a production server and changing the server domain name, do the following:

**Clear** the `xml-documents` cache in the user interface, go to **System administration \> Server status \> Caching**. *This will ensure the old domain does not appear in the `documentinfo/uri/@host` in PSML.*

**Re-index** everything, go to **System administration \> Server status \> Indexing**. *This may degrade server performance while it is running but will prime the cache and improve performance once it is finished. It is not strictly necessary unless PageSeeder has been upgraded and the release notes recommend it.*

> **Note:** Step 11 is optional for dedicated test servers where indexing large document collections might be time-consuming and not affect testing or if **the server domain name is only temporary**. If upgrading PageSeeder **do this step after upgrading**.

