Deployment guide

Host Outline on your own VPS

Deploy on a VPS Cloud →

Self-hosting8 min read

Host Outline on your own VPS

Outline is a polished collaborative knowledge base, a credible alternative to Notion or Confluence. Hosting it yourself on a VPS means keeping full control of your team's internal documentation, with no per-seat subscription and no data stored outside your perimeter.

Why self-host Outline on a VPS

Outline often stores what a company holds most strategic: internal procedures, runbooks, architecture decisions, onboarding. On the SaaS version, you pay per seat and your content lives on third-party infrastructure. By installing it on your own VPS, you set the rules yourself: SSO authentication via your provider, PostgreSQL database backups according to your policy, unlimited retention and an unbilled number of users. Outline stays lightweight for reading but relies on a precise stack (PostgreSQL for documents, Redis for sessions and real-time websockets, S3-compatible storage for attachments). A dedicated VPS lets you size each of these components and deploy the whole stack with a single docker-compose.yml file.

What you gain concretely

  • Unlimited users with no per-seat billing, unlike SaaS offerings.
  • SSO integrated with your enterprise identity (Google Workspace, OIDC, Azure AD) under your control.
  • High-performance full-text search served directly by your PostgreSQL, with no external dependency.
  • Attachments and exports stored on your own S3 bucket or self-hosted MinIO.
  • Real-time collaborative editing thanks to Redis, with no data passing through a third party.
  • Controlled backups and restoration: a single pg_dump is enough to archive the entire documentation database.

Hardware and software prerequisites

Outline is comfortable with 2 vCPU and 4 GB of RAM for a team of 20 to 50 people: PostgreSQL and Redis consume little at idle, but real-time editing and search scale up occasionally. Count on 20 GB of disk for the database and logs, more if you store attachments locally rather than on S3. On the software side: Docker Engine and the docker compose v2 plugin, a domain name pointed to the VPS IP (for example wiki.yourcompany.com), and an SMTP account for invitation emails. Outline mandatorily requires an authentication provider: prepare the OAuth credentials (Google, Slack or an OIDC server) before starting, because there is no login with a simple password.

Deploy Outline step by step

01

Prepare the VPS and Docker

Update the system with apt update && apt upgrade -y, install Docker via the official script, then verify with docker compose version. Create an /opt/outline folder that will host your configuration.

02

Generate the secrets and the environment file

Outline requires two keys: generate them with openssl rand -hex 32 for SECRET_KEY and UTILS_SECRET. In the .env, fill in the DATABASE_URL, REDIS_URL, URL=https://wiki.yourcompany.com variables and the OAuth credentials of your provider.

03

Define the PostgreSQL, Redis and Outline stack

In docker-compose.yml, declare three services: postgres (image postgres:15 with a persistent volume), redis (image redis:7) and outline (image outlinewiki/outline:latest). Link Outline to both backends via the environment variables and expose port 3000 internally only.

04

Initialize the database

Run the migrations before the first startup with docker compose run --rm outline yarn db:migrate --env=production-ssl-disabled. This command creates the documentation schema in PostgreSQL; without it, Outline will refuse to start.

05

Place a reverse proxy with SSL

Put Caddy or Traefik in front of the outline service. With Caddy, a line wiki.yourcompany.com { reverse_proxy outline:3000 } automatically generates and renews the Let's Encrypt certificate. Be sure to forward the WebSocket headers for real-time editing.

06

Start and create the first workspace

Launch the stack with docker compose up -d, then open https://wiki.yourcompany.com. Log in via your OAuth provider: the first authenticated account becomes administrator of the workspace.

Enable S3 storage rather than local for attachments: point AWS_S3_UPLOAD_BUCKET_URL to a self-hosted MinIO on the same VPS. You thus decouple the file volume from the PostgreSQL database, which makes pg_dump fast and lightweight, and lets you scale without bloating the application container.

Launch your knowledge base in minutes

The ServOrbit Cloud VPS gives you the power, Docker preinstalled and a dedicated IP to deploy Outline and its PostgreSQL/Redis stack without friction. You keep control of your data, your SSO and your backups.

Need help?

Browse our help center and FAQ, or write to our team — support in French, English and Arabic.