Docs
Installation

Installation

Clone GitLab main and configure a source-based Docker Compose deployment.

Get the source

Install Git, Docker, and Docker Compose V2, then clone the main branch:

git clone --branch main --single-branch https://gitlab.vetoedkkb.com/short-links/web.git wr.do
cd wr.do
cp .env.example .env

Keep an existing .env when updating. Host Node.js and pnpm are not required for Docker Compose; the Dockerfile installs the build dependencies.

Configure .env

Set separate random POSTGRES_PASSWORD and AUTH_SECRET values. Run openssl rand -hex 32 twice to generate them. Keep secrets out of Git and do not use the example values as passwords.

VariableDefault or configurationPurpose
APP_PORT3100Application port on both the host and container.
POSTGRES_PASSWORDRequired random valuePassword for the Compose PostgreSQL database.
AUTH_SECRETRequired independent random valueAuthentication secret.
NEXT_PUBLIC_APP_URLhttp://localhost:3100Public application URL embedded at build time.
AUTH_URLhttp://localhost:3100Authentication callback URL; match the application URL.
NEXT_PUBLIC_APP_NAMEWR.DOApplication name.
NEXT_PUBLIC_SUPPORT_EMAILYour support emailContact address.

Default Compose sets DATABASE_URL to its internal PostgreSQL service. Do not put secrets into variables beginning with NEXT_PUBLIC_, as they are exposed in the browser bundle.

Optional services

Configure only the services you use. Password login does not require an external OAuth provider.

ServiceVariables or settingsGuide
Google OAuthGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETAuthentication
GitHub OAuthGITHUB_ID, GITHUB_SECRETAuthentication
LinuxDO OAuthLinuxDo_CLIENT_ID, LinuxDo_CLIENT_SECRETLinuxDO Connect
Outgoing emailRESEND_API_KEY or BREVO_API_KEY, EMAIL_FROM, EMAIL_FROM_NAMEEmail
Incoming emailCloudflare Worker and NEXT_PUBLIC_EMAIL_R2_DOMAINEmail Worker
Screenshot serviceSCREENSHOTONE_BASE_URLQuick Start
DNS and storageProvider configuration in administrationCloudflare, Storage
AnalyticsNEXT_PUBLIC_GOOGLE_ID or NEXT_PUBLIC_UMAMI_SCRIPT and NEXT_PUBLIC_UMAMI_WEBSITE_IDYour analytics provider

Disable unconfigured login providers in administration. Changes to public configuration require rebuilding the image.

Run the project

docker compose build
docker compose up -d
docker compose ps -a

Open http://localhost:3100. migrate ending with Exited (0) means the database migrations succeeded. See the deployment guide for access, logs, backups, and updates.

Community tutorials may describe older versions or different deployment methods: