Documize


Introduction

This guide installs Documize Community on a fresh Ubuntu 20.04/22.04/24.04 server, sets up PostgreSQL correctly, and runs Documize as a systemd service.
It uses the current Documize distribution method (single Linux binary), avoids the buggy config-file path, and relies on flags/environment variables.


Assumptions & requirements

  • Ubuntu (amd64) with sudo access and Internet.
  • Documize will listen on port 8080 (you can later put it behind Traefik/Nginx).
  • Database user: docuser, Database name: documize.
  • Replace the placeholders:
    • YourPasswordHere → a strong DB password you choose.
    • YourSaltHere → a random 32–64 hex chars string (see Step 7).

1) Update system & install helpers

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget jq ca-certificates postgresql postgresql-contrib

Enable PostgreSQL:

sudo systemctl enable --now postgresql
sudo systemctl status postgresql --no-pager

Create PostgreSQL role, database

sudo -u postgres psql <<'SQL'
-- Create app user (set your own strong password)
DO $$
BEGIN
   IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = 'docuser') THEN
      CREATE USER docuser WITH ENCRYPTED PASSWORD 'YourPasswordHere';
   END IF;
END
$$;

-- (Re)create database with UTF-8 and owned by docuser
DROP DATABASE IF EXISTS documize;
CREATE DATABASE documize
  OWNER docuser
  TEMPLATE template0
  ENCODING 'UTF8';

-- Ensure the public schema is correctly owned and writable
ALTER SCHEMA public OWNER TO docuser;
GRANT ALL ON SCHEMA public TO docuser;
GRANT CREATE, USAGE ON SCHEMA public TO docuser;
SQL

Quick connectivity check:

pg_isready -d "host=localhost port=5432 dbname=documize user=docuser"

3) Create a system user and folders for Documize

sudo useradd -r -s /usr/sbin/nologin -d /opt/documize documize || true
sudo mkdir -p /opt/documize /var/lib/documize /etc/documize
sudo chown -R documize:documize /opt/documize /var/lib/documize

4) Download the latest Documize Community binary (Linux amd64)

Use GitHub “latest” (auto-picks the newest Linux binary):

DL_URL="$(curl -s https://api.github.com/repos/documize/community/releases/latest \
  | jq -r '.assets[] | select(.name | test("linux-amd64$")) | .browser_download_url')"

echo "Downloading: $DL_URL"
sudo curl -L "$DL_URL" -o /opt/documize/documize
sudo chmod 0755 /opt/documize/documize
sudo chown documize:documize /opt/documize/documize

5) (Optional) Open the firewall for 8080 (UFW)

sudo ufw allow 8080/tcp
sudo ufw reload

6) One-off smoke test (no config file; flags + env)

First, generate a salt (or use your own):

openssl rand -hex 32

Then run Documize just once in the foreground:

sudo -u documize env \
  DOCUMIZEDBTYPE=postgresql \
  DOCUMIZEDB='host=localhost port=5432 dbname=documize user=docuser password=YourPasswordHere sslmode=disable' \
  DOCUMIZESALT='YourSaltHere' \
  /opt/documize/documize -port 8080

Open: http://server-ip:8080/setup Confirm the page loads. Ctrl+C to stop when you’re done checking.


Create an env file for the service:

sudo tee /etc/documize/env >/dev/null <<'EOF'
DOCUMIZEDBTYPE=postgresql
DOCUMIZEDB=host=localhost port=5432 dbname=documize user=docuser password=YourPasswordHere sslmode=disable
DOCUMIZESALT=YourSaltHere
EOF
sudo chmod 0640 /etc/documize/env
sudo chown root:documize /etc/documize/env

Create the systemd unit:

sudo tee /etc/systemd/system/documize.service >/dev/null <<'EOF'
[Unit]
Description=Documize Community
After=network.target postgresql.service
Wants=postgresql.service

[Service]
User=documize
Group=documize
WorkingDirectory=/opt/documize
EnvironmentFile=/etc/documize/env
ExecStart=/opt/documize/documize -port 8080
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now documize
sudo systemctl status documize --no-pager

8) Complete the setup wizard

Open: http://<server-ip>:8080/setup Fill in organization/admin details → Complete setup. From now on you’ll use the normal login URL (the setup route is one-time).



9) Useful operations

# service control
sudo systemctl stop documize
sudo systemctl start documize
sudo systemctl restart documize
sudo systemctl status documize --no-pager
journalctl -u documize -f   # live logs