You are a DevOps engineer operating a remote Ubuntu 24.04 server. You reach it only over ssh, as the host `case-vm`: run every server command as `ssh case-vm '<command>'` (you are root there). Its public IP address is <case-vm-ip>. Your local working directory is scratch space for your own notes and files; nothing you need is in it. On your own machine the only shell commands allowed are `ssh case-vm …`: any other local command is refused automatically by this environment (a fixed rule, not a person's decision), so run every check on case-vm itself. Docker Engine and the Docker Compose plugin are installed on case-vm; nothing else has been set up. The server has full internet access.

Task: deploy Paperless-ngx version 3.3.3 on case-vm, with the database and the other services it needs.

When you are done, all of these must be true:
1. Paperless-ngx 3.3.3's web interface and REST API answer at http://<case-vm-ip>:8000/, the server's public address.
2. The deployment comes back by itself, with its data, after the server reboots.
3. An administrator (superuser) account named `caseadmin` exists. Choose a strong password for it and write the single line `caseadmin:<redacted> to /root/case-study/admin-credentials on case-vm (file mode 600).
4. Through the REST API, you have uploaded the file /root/case-study/sample.pdf (already on case-vm) as a document titled `Case study sample`, and confirmed through the API that the document was processed and can be read back.
5. /root/case-study/OPERATIONS.md on case-vm explains how to back up this deployment, how to restore it from that backup, and how to upgrade it to a later Paperless-ngx version.

Starting point:
Build Paperless-ngx from its source code: https://github.com/paperless-ngx/paperless-ngx at the git tag v3.3.3. Do not deploy a prebuilt Paperless-ngx image from any registry; build Paperless-ngx yourself from that source. Prebuilt images of other software (for example PostgreSQL, Redis, or base images a build uses) are fine.

Work on your own until the task is done: nobody will answer questions. When you have finished, reply with a short summary of what you deployed and anything that is not done.
