Getting Started

Installation

Installation

docu.nexus runs as one Docker stack: Postgres, Redis, and the app. One command installs all three.

Prerequisites

  • A Linux host with Docker and the Compose plugin (v2). Check with docker compose version.
  • curl.
  • About 2 GB of disk for the image and its data. 2 vCPU and 4 GB RAM is comfortable for a small team.

You do not need git, a repository, a source tree, or a build toolchain. The installer downloads a compiled image.

Install

curl -fsSL https://docu.nexus/install.sh | sh

It asks one question — the URL people will use to reach this instance — and then:

  1. Creates ./docu.nexus/ and downloads the compose file into it.
  2. Writes .env, generating a database password and a session secret for you.
  3. Downloads the application image, checks it against its published SHA256, and loads it into Docker.
  4. Starts Postgres, Redis, and the app, and waits for the app to answer.

There is no Docker registry in that path and no docker login. The image is a plain file over HTTPS, so an air-gapped install is the same download done by hand — fetch the .tar.gz and its .sha256 from https://docu.nexus/dl/, docker load -i it, and run the installer with APP_IMAGE set to the tag it restored.

Database migrations run inside the container before the app starts listening, so when the installer says it is running, the schema is ready.

To install without being prompted, set the URL up front:

curl -fsSL https://docu.nexus/install.sh \
  | APP_URL=https://docs.example.com sh
VariableEffectDefault
APP_URLPublic URL of the instance. Skips the prompt.http://localhost:3000
DOCUNEXUS_DIRWhere to install../docu.nexus
DOCUNEXUS_VERSIONInstall a specific version instead of the current release.the current release
APP_IMAGEUse an image already loaded on this machine. Downloads nothing.unset

Create the first account

Open the URL the installer printed. The setup screen asks for the name, email, and password you want for the first administrator.

That first account is an instance administrator. Everyone else can be added afterwards from Admin, or provisioned through OAuth or LDAP.

What got installed

Everything lives in the directory the installer created:

docu.nexus/
├── docker-compose.yml   # the stack definition; replaced on upgrade
└── .env                 # your configuration and secrets (chmod 600)

Your data is not in that directory. It lives in Docker named volumes, which survive docker compose down:

VolumeHolds
docunexus_postgres_dataevery page, space, user, and comment
docunexus_app_storageuploaded files and images
docunexus_redis_datathe job queue
docunexus_db_backupsdumps written by the backup script

Everyday commands

Run these from the install directory.

docker compose ps            # what is running
docker compose logs -f app   # follow the application log
docker compose stop          # stop, keeping data
docker compose start         # start again

Upgrade

The same command, run again from inside the install directory. Your configuration and data are kept; the compose file is refreshed and the newer image is pulled.

cd docu.nexus
curl -fsSL https://docu.nexus/install.sh | sh

From anywhere else, name the directory rather than changing into it:

curl -fsSL https://docu.nexus/install.sh | DOCUNEXUS_DIR=/path/to/docu.nexus sh

If your compose file had been edited, the previous copy is kept beside it as docker-compose.yml.bak rather than being overwritten silently.

See Upgrading for how migrations run and how to roll back.

Before other people use it

The installer gets you running. It does not make you production-ready. Two things it leaves to you:

  • TLS. The app speaks plain HTTP and expects a reverse proxy in front. Real-time collaboration also needs a WebSocket route, which is easy to miss — without it, editing silently stops being collaborative. See Production Deployment.
  • Backups. Nothing is scheduled for you. See Backup and Restore.

Troubleshooting

SymptomCause
cannot talk to the Docker daemonDocker is not running, or your user is not in the docker group.
could not pull … and it is not present locallyNo network route to the registry, or a tag that does not exist. The message lists what to check in order.
It never finishes waitingThe app is probably still migrating. Run docker compose logs -f app in the install directory.
Port already in useSomething else holds 3000 or 3001. Set HOST_PORT and HOST_COLLAB_PORT in .env, then re-run.

More in Troubleshooting.

Configuration

.env holds only what the installer needed to set. Every variable the application reads, with defaults, is in the Configuration Reference.

Edit .env, then apply the change from the install directory:

docker compose up -d