Install the server
The File server runs in Docker, on a NAS, a small server or a Raspberry Pi.
The server software isn't publicly available yet. These steps are for people who have been given access to the release and its setup files. For access, e-mail archive@metron-apps.eu.
What you need
- A computer with Docker and Docker Compose, on 64-bit Intel/AMD or ARM. 2 GB of memory is enough, and more helps with large imports.
- Disk space for your PDFs, plus room for the database.
- An iPhone with iOS 26 or later for the app. Any modern browser works for the website.
- To reach the archive from outside your home: your own domain name, with ports 80 and 443 open to the server.
1. Choose how you reach it
| Profile | For |
|---|---|
lan | Only on your home network, over plain HTTP on port 8080. Never forward this port on your router. |
public | From anywhere, over HTTPS on your own domain, with a free certificate that renews by itself. |
2. Back up your documents
If you already have a folder of PDFs, make a backup or snapshot first. The first import renames files whose names don't fit the title rules.
3. Put the files in place
Create a folder for the server, with the data folders inside it, and put the setup files in a deploy folder next to them: compose.yaml, Caddyfile, Caddyfile.lan and .env.example.
mkdir -p data/pgdata data/inbox
cd deploy
cp .env.example .env
4. Fill in the settings
Open .env and fill in at least these. Use full paths.
ARCHIVE_PATH=/volume1/archive # your PDFs
DATA_PATH=/volume1/docker/archive # database and uploads
PUID=1026 # owner of the archive folder: id <user>
PGID=100
POSTGRES_PASSWORD= # a long random password
JWT_SECRET= # openssl rand -base64 48
ADMIN_USERNAME= # your first account
ADMIN_PASSWORD= # at least 10 characters
COMPOSE_PROFILES=lan # or public
IMAGE=ghcr.io/metron-analytics/archiveapp-server
IMAGE_TAG= # the release you were given
For the public profile, also fill in PUBLIC_DOMAIN and ACME_EMAIL, and point your domain's A record to the server.
5. Start it
Sign in to the registry once with the token you were given, then start the server. On a Synology NAS, put sudo before each command.
docker login ghcr.io
docker compose pull
docker compose up -d --no-build
docker compose logs -f worker
The worker reads your PDFs. Files with text go quickly; scanned pages without text take longer, because the server recognises the text. Press Ctrl+C to stop watching.
6. Check it
Open this on your phone, with your own address. It should answer {"ok":true} and a version.
http://<server address>:8080/api/health
https://<your domain>/api/health
7. Sign in
In the app, enter the address and the admin account from .env. Then remove ADMIN_PASSWORD from .env and run docker compose up -d --no-build again. Create accounts for other people in the website, under Admin. The user guide explains the rest.
With the lan profile, give the server a fixed address in your router, so the address in the app keeps working.
Updating
Set the new release in IMAGE_TAG and run:
docker compose pull
docker compose up -d --no-build
The database updates itself when the server starts. Going back to an older release isn't always possible, so make a backup first.
Backups
Back up the archive folder and the data folder. The PDFs are in the archive folder; notes, reminders, tags and accounts are only in the database.
Push notifications
Push notifications need a key from Apple that belongs to the app, so they don't work on your own server yet. The app sets its own reminders on the iPhone instead.