Markup
Markup is a fast, keyboard-first markdown workspace with live preview, graph view, whiteboards, mind maps, and PostgreSQL-powered cloud sync.
Configuration
version: "3.8"
services:
db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- markup-postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: markup
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: markup
healthcheck:
test: ["CMD-SHELL", "pg_isready -U markup -d markup"]
interval: 10s
timeout: 5s
retries: 5
markup:
image: ghcr.io/pphilfre/markup:main
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: ${DATABASE_URL}
NEXT_PUBLIC_DB_PROVIDER: postgres
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL}
# WorkOS AuthKit (optional): required only for user accounts and cloud sync.
# Placeholders keep the app running; replace them with real credentials
# from https://dashboard.workos.com to enable sign-in.
WORKOS_CLIENT_ID: ${WORKOS_CLIENT_ID}
WORKOS_API_KEY: ${WORKOS_API_KEY}
WORKOS_COOKIE_PASSWORD: ${WORKOS_COOKIE_PASSWORD}
NEXT_PUBLIC_WORKOS_REDIRECT_URI: ${NEXT_PUBLIC_WORKOS_REDIRECT_URI}
NODE_ENV: production
volumes:
markup-postgres-data:[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
cookie_password = "${password:32}"
[config]
env = [
"POSTGRES_PASSWORD=${postgres_password}",
"DATABASE_URL=postgresql://markup:${postgres_password}@db:5432/markup",
"NEXT_PUBLIC_SITE_URL=https://${main_domain}",
"# WorkOS AuthKit is optional: it powers user accounts and cloud sync.",
"# The app works without it (local, in-browser storage). To enable sign-in,",
"# create an app at https://dashboard.workos.com, set the redirect URI below",
"# in the WorkOS dashboard, and replace the placeholder credentials.",
"WORKOS_CLIENT_ID=client_id_change_me",
"WORKOS_API_KEY=sk_change_me",
"WORKOS_COOKIE_PASSWORD=${cookie_password}",
"NEXT_PUBLIC_WORKOS_REDIRECT_URI=https://${main_domain}/callback",
]
mounts = []
[[config.domains]]
serviceName = "markup"
port = 3000
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIGRiOlxuICAgIGltYWdlOiBwb3N0Z3JlczoxNi1hbHBpbmVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIG1hcmt1cC1wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgIGVudmlyb25tZW50OlxuICAgICAgUE9TVEdSRVNfVVNFUjogbWFya3VwXG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIFBPU1RHUkVTX0RCOiBtYXJrdXBcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgbWFya3VwIC1kIG1hcmt1cFwiXVxuICAgICAgaW50ZXJ2YWw6IDEwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDVcblxuICBtYXJrdXA6XG4gICAgaW1hZ2U6IGdoY3IuaW8vcHBoaWxmcmUvbWFya3VwOm1haW5cbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIERBVEFCQVNFX1VSTDogJHtEQVRBQkFTRV9VUkx9XG4gICAgICBORVhUX1BVQkxJQ19EQl9QUk9WSURFUjogcG9zdGdyZXNcbiAgICAgIE5FWFRfUFVCTElDX1NJVEVfVVJMOiAke05FWFRfUFVCTElDX1NJVEVfVVJMfVxuICAgICAgIyBXb3JrT1MgQXV0aEtpdCAob3B0aW9uYWwpOiByZXF1aXJlZCBvbmx5IGZvciB1c2VyIGFjY291bnRzIGFuZCBjbG91ZCBzeW5jLlxuICAgICAgIyBQbGFjZWhvbGRlcnMga2VlcCB0aGUgYXBwIHJ1bm5pbmc7IHJlcGxhY2UgdGhlbSB3aXRoIHJlYWwgY3JlZGVudGlhbHNcbiAgICAgICMgZnJvbSBodHRwczovL2Rhc2hib2FyZC53b3Jrb3MuY29tIHRvIGVuYWJsZSBzaWduLWluLlxuICAgICAgV09SS09TX0NMSUVOVF9JRDogJHtXT1JLT1NfQ0xJRU5UX0lEfVxuICAgICAgV09SS09TX0FQSV9LRVk6ICR7V09SS09TX0FQSV9LRVl9XG4gICAgICBXT1JLT1NfQ09PS0lFX1BBU1NXT1JEOiAke1dPUktPU19DT09LSUVfUEFTU1dPUkR9XG4gICAgICBORVhUX1BVQkxJQ19XT1JLT1NfUkVESVJFQ1RfVVJJOiAke05FWFRfUFVCTElDX1dPUktPU19SRURJUkVDVF9VUkl9XG4gICAgICBOT0RFX0VOVjogcHJvZHVjdGlvblxuXG52b2x1bWVzOlxuICBtYXJrdXAtcG9zdGdyZXMtZGF0YTpcbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuY29va2llX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtwb3N0Z3Jlc19wYXNzd29yZH1cIixcbiAgXCJEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovL21hcmt1cDoke3Bvc3RncmVzX3Bhc3N3b3JkfUBkYjo1NDMyL21hcmt1cFwiLFxuICBcIk5FWFRfUFVCTElDX1NJVEVfVVJMPWh0dHBzOi8vJHttYWluX2RvbWFpbn1cIixcbiAgXCIjIFdvcmtPUyBBdXRoS2l0IGlzIG9wdGlvbmFsOiBpdCBwb3dlcnMgdXNlciBhY2NvdW50cyBhbmQgY2xvdWQgc3luYy5cIixcbiAgXCIjIFRoZSBhcHAgd29ya3Mgd2l0aG91dCBpdCAobG9jYWwsIGluLWJyb3dzZXIgc3RvcmFnZSkuIFRvIGVuYWJsZSBzaWduLWluLFwiLFxuICBcIiMgY3JlYXRlIGFuIGFwcCBhdCBodHRwczovL2Rhc2hib2FyZC53b3Jrb3MuY29tLCBzZXQgdGhlIHJlZGlyZWN0IFVSSSBiZWxvd1wiLFxuICBcIiMgaW4gdGhlIFdvcmtPUyBkYXNoYm9hcmQsIGFuZCByZXBsYWNlIHRoZSBwbGFjZWhvbGRlciBjcmVkZW50aWFscy5cIixcbiAgXCJXT1JLT1NfQ0xJRU5UX0lEPWNsaWVudF9pZF9jaGFuZ2VfbWVcIixcbiAgXCJXT1JLT1NfQVBJX0tFWT1za19jaGFuZ2VfbWVcIixcbiAgXCJXT1JLT1NfQ09PS0lFX1BBU1NXT1JEPSR7Y29va2llX3Bhc3N3b3JkfVwiLFxuICBcIk5FWFRfUFVCTElDX1dPUktPU19SRURJUkVDVF9VUkk9aHR0cHM6Ly8ke21haW5fZG9tYWlufS9jYWxsYmFja1wiLFxuXVxubW91bnRzID0gW11cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwibWFya3VwXCJcbnBvcnQgPSAzMDAwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG4iCn0=Links
Tags
markdown, notes, editor, self-hosted
Version: main