feat: add Paperclip template (#943)

Co-authored-by: Rohit Mulani <289630555+rohitmulani63-ops@users.noreply.github.com>
This commit is contained in:
Rohit Mulani
2026-07-08 00:01:01 +04:00
committed by GitHub
parent e83e869bd3
commit c70cd23b7e
5 changed files with 102 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
# Paperclip
Paperclip is an open-source control plane for managing teams of AI agents, goals, budgets, tickets, and recurring work.
This Dokploy template includes:
- Paperclip web/API service using the official GHCR image
- PostgreSQL 17 database with health check
- Generated `BETTER_AUTH_SECRET`
- Generated database password
- Persistent `/paperclip` storage for instance data
- Public URL configured from the Dokploy domain
- Dokploy domain routing to Paperclip on port 3100
After deployment, check the Paperclip container logs for first-run setup or invite information.

View File

@@ -0,0 +1,44 @@
version: "3.8"
services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_USER: paperclip
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: paperclip
healthcheck:
test: ["CMD-SHELL", "pg_isready -U paperclip -d paperclip"]
interval: 10s
timeout: 5s
retries: 10
volumes:
- postgres-data:/var/lib/postgresql/data
paperclip:
image: ghcr.io/paperclipai/paperclip:latest
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
HOST: 0.0.0.0
PORT: "3100"
SERVE_UI: "true"
DATABASE_URL: ${DATABASE_URL}
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET}
PAPERCLIP_HOME: /paperclip
PAPERCLIP_INSTANCE_ID: default
PAPERCLIP_CONFIG: /paperclip/instances/default/config.json
PAPERCLIP_DEPLOYMENT_MODE: ${PAPERCLIP_DEPLOYMENT_MODE}
PAPERCLIP_DEPLOYMENT_EXPOSURE: ${PAPERCLIP_DEPLOYMENT_EXPOSURE}
PAPERCLIP_PUBLIC_URL: ${PAPERCLIP_PUBLIC_URL}
expose:
- "3100"
volumes:
- paperclip-data:/paperclip
volumes:
postgres-data: {}
paperclip-data: {}

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Paperclip logo">
<rect width="128" height="128" rx="28" fill="#111827"/>
<path d="M43 70.5 76.5 37c10.4-10.4 27.3-3 27.3 11.8 0 4.4-1.8 8.7-4.9 11.8L58.4 101.1c-13 13-34.2 3.8-34.2-14.6 0-5.5 2.2-10.7 6.1-14.6l43.9-43.9" fill="none" stroke="#f8fafc" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M46.6 78.8 83.3 42.1c4.8-4.8 12.9-1.4 12.9 5.4 0 2-.8 4-2.2 5.4L55.2 91.7c-6.3 6.3-17.2 1.9-17.2-7 0-2.6 1-5.1 2.9-7l36.4-36.4" fill="none" stroke="#38bdf8" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 646 B

View File

@@ -0,0 +1,20 @@
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
better_auth_secret = "${password:64}"
[config]
env = [
"POSTGRES_PASSWORD=${postgres_password}",
"DATABASE_URL=postgres://paperclip:${postgres_password}@postgres:5432/paperclip",
"BETTER_AUTH_SECRET=${better_auth_secret}",
"PAPERCLIP_DEPLOYMENT_MODE=authenticated",
"PAPERCLIP_DEPLOYMENT_EXPOSURE=private",
"PAPERCLIP_PUBLIC_URL=https://${main_domain}"
]
mounts = []
[[config.domains]]
serviceName = "paperclip"
port = 3100
host = "${main_domain}"

View File

@@ -5129,6 +5129,24 @@
"open-source"
]
},
{
"id": "paperclip",
"name": "Paperclip",
"version": "latest",
"description": "Paperclip is an open-source control plane for managing teams of AI agents, goals, budgets, tickets, and recurring work.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/paperclipai/paperclip",
"website": "https://paperclip.ing/",
"docs": "https://docs.paperclip.ing/"
},
"tags": [
"ai",
"agents",
"automation",
"self-hosted"
]
},
{
"id": "parseable",
"name": "Parseable",