> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/related-information/community/install-scripts/proxmox-lxc-installer.md).

# Proxmox LXC installer

Deploy CrossWatch in an unprivileged Proxmox Debian 12 LXC with automated setup, persistent /config storage, and a built-in update command.

Maintainer: <https://github.com/doctorjz>

{% hint style="warning" %}
Community pages and scripts are **not maintained, reviewed, or supported by CrossWatch**.

Read them before you run them.

Fixes, updates, and support depend on the original author.
{% endhint %}

### Overview

This installer deploys CrossWatch inside an unprivileged Debian 12 LXC container on Proxmox. It automates the full setup, including package installation, application download, Python environment creation, service registration, and update support.

The result is a working CrossWatch instance that runs as a service and is accessible through the web interface on port `8787`.

### What the script does

The installer performs the following actions:

1. Creates an unprivileged Debian 12 LXC container on Proxmox
2. Applies default container resources, 2 vCPU, 1024 MB RAM, and 8 GB disk
3. Installs the required system packages for CrossWatch
4. Downloads the latest tagged CrossWatch release from GitHub
5. Creates a Python virtual environment and installs all dependencies
6. Creates the persistent config directory at `/config`
7. Links the application data path to `/config`
8. Creates a dedicated `crosswatch` service user
9. Registers CrossWatch as a `systemd` service
10. Starts the service automatically on boot
11. Adds a built in `update` command for future upgrades

### Installation

Run the following command on your Proxmox host:

```bash
bash -c "$(wget -qLO - https://raw.githubusercontent.com/doctorjz/ProxmoxVE/main/ct/crosswatch.sh)"
```

After installation completes, open CrossWatch in your browser:

```
http://<container-ip>:8787
```

### Update

To update CrossWatch later, open the container shell and run:

```bash
update
```

The update command checks for the latest tagged release, installs it, refreshes dependencies, and restarts the service.

### Default container settings

The installer uses the following defaults:

1. OS, Debian 12
2. Container type, unprivileged
3. vCPU, 2
4. Memory, 1024 MB
5. Disk, 8 GB

### Important paths

1. Application directory, `/opt/crosswatch`
2. Persistent config directory, `/config`
3. Linked data directory, `/opt/crosswatch/data`
4. Service name, `crosswatch.service`

### Notes

CrossWatch is configured to listen on port `8787`.

The installer is intended to simplify deployment on Proxmox and avoid manual setup steps inside the container.

### Source

Discussion reference: <https://github.com/cenodude/CrossWatch/discussions/218>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://wiki.crosswatch.app/related-information/community/install-scripts/proxmox-lxc-installer.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
