feat: add Rote template

- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
This commit is contained in:
Rabithua
2025-11-25 20:03:46 +08:00
parent 1c16dee5a0
commit ac07aa2ed8
4 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
services:
rote-backend:
image: rabithua/rote-backend:${IMAGE_TAG:-latest}
pull_policy: always
environment:
POSTGRESQL_URL: postgresql://rote:${POSTGRES_PASSWORD}@rote-postgres:5432/rote
depends_on:
rote-postgres:
condition: service_healthy
restart: unless-stopped
command:
[
"sh",
"-c",
"sleep 15 && bun run dist/scripts/runMigrations.js && bun run dist/server.js",
]
rote-frontend:
image: rabithua/rote-frontend:${IMAGE_TAG:-latest}
pull_policy: always
depends_on:
- rote-backend
environment:
# VITE_API_BASE must point to an address that reaches rote-backend (reverse-proxy domain or host IP:port)
VITE_API_BASE: ${VITE_API_BASE}
restart: unless-stopped
rote-postgres:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: rote
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: rote
volumes:
- rote-postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U rote -d rote"]
interval: 5s
timeout: 3s
retries: 10
start_period: 30s
volumes:
rote-postgres-data: {}

BIN
blueprints/rote/rote.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -0,0 +1,23 @@
[variables]
frontend_domain = "${domain}"
backend_domain = "${domain}"
postgres_password = "${password:32}"
image_tag = "latest"
[config]
[[config.domains]]
serviceName = "rote-frontend"
port = 80
host = "${frontend_domain}"
[[config.domains]]
serviceName = "rote-backend"
port = 3000
host = "${backend_domain}"
[config.env]
POSTGRES_PASSWORD = "${postgres_password}"
IMAGE_TAG = "${image_tag}"
VITE_API_BASE = "https://${backend_domain}"
[[config.mounts]]

View File

@@ -4761,6 +4761,19 @@
"chat"
]
},
{
"id": "rote",
"name": "Rote",
"version": "latest",
"description": "Rote is an open-source multi-platform personal note system featuring an open API, full data ownership, and effortless Docker deployment.",
"logo": "rote.png",
"links": {
"github": "https://github.com/Rabithua/Rote",
"website": "https://rote.ink",
"docs": "https://github.com/Rabithua/Rote/tree/main/doc/userguide"
},
"tags": ["notes", "productivity", "postgres", "bun"]
},
{
"id": "roundcube",
"name": "Roundcube",