Installation
Clone GitLab main and configure a source-based Docker Compose deployment.
English
简体中文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 .envKeep 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.
| Variable | Default or configuration | Purpose |
|---|---|---|
| APP_PORT | 3100 | Application port on both the host and container. |
| POSTGRES_PASSWORD | Required random value | Password for the Compose PostgreSQL database. |
| AUTH_SECRET | Required independent random value | Authentication secret. |
| NEXT_PUBLIC_APP_URL | http://localhost:3100 | Public application URL embedded at build time. |
| AUTH_URL | http://localhost:3100 | Authentication callback URL; match the application URL. |
| NEXT_PUBLIC_APP_NAME | WR.DO | Application name. |
| NEXT_PUBLIC_SUPPORT_EMAIL | Your support email | Contact 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.
| Service | Variables or settings | Guide |
|---|---|---|
| Google OAuth | GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Authentication |
| GitHub OAuth | GITHUB_ID, GITHUB_SECRET | Authentication |
| LinuxDO OAuth | LinuxDo_CLIENT_ID, LinuxDo_CLIENT_SECRET | LinuxDO Connect |
| Outgoing email | RESEND_API_KEY or BREVO_API_KEY, EMAIL_FROM, EMAIL_FROM_NAME | |
| Incoming email | Cloudflare Worker and NEXT_PUBLIC_EMAIL_R2_DOMAIN | Email Worker |
| Screenshot service | SCREENSHOTONE_BASE_URL | Quick Start |
| DNS and storage | Provider configuration in administration | Cloudflare, Storage |
| Analytics | NEXT_PUBLIC_GOOGLE_ID or NEXT_PUBLIC_UMAMI_SCRIPT and NEXT_PUBLIC_UMAMI_WEBSITE_ID | Your 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 -aOpen 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: