3. Start Rote with the latest stable image
June 3, 2026 · View on GitHub
English | 中文
Demo | Website | iOS APP | Explore | Rabithua
Open API, more than one way to record 🤩, supports Self-Hosted, take control of your own data, come and go freely, no data hostage 🙅🏻
Preview

Core Features
- Stay Restrained: Everything for an elegant note-taking experience and restrained interaction
- Low Mental Burden: Less pressure and simpler, more intuitive recording experience, even deployment experience
- Open Interface: Open API interface, supports recording or getting data in any scenario
- Unbounded Freedom: Complete control over your data, free to export data
- Self-Hosted Deployment: One-click deployment using Docker or Dokploy
- Separated Architecture: Frontend and backend use separated architecture design, deploy only the services you need
- Markdown Articles: Standalone Article support, can be referenced by notes, offering a pure writing and reading experience
- AI Memory: Optional AI chat over your own notes and articles, with semantic search, related notes, streamed responses, and source references
- Admin-Controlled AI: AI, vector storage, automatic indexing, and public semantic discovery are disabled by default and must be explicitly enabled by an administrator
- iOS Client: More elegant App client
Quick Start
Method 1: Using Docker Hub Image
Copy docker-compose.yml to your server with Docker and Docker Compose installed
Note: If you use a reverse proxy, VITE_API_BASE should be your backend address after the reverse proxy
Rote now uses
pgvector/pgvector:pg17-trixieby default. It behaves like PostgreSQL 17 and additionally supports the optional AI vector extension. Plainpostgres:17is only a temporary compatibility path and may not be supported by future Rote versions.
latestis the stable image. If you are reading the develop branch documentation or testing unreleased AI Memory features, useIMAGE_TAG=develop.
# 1. Create a .env file beside docker-compose.yml
cat > .env <<'EOF'
VITE_API_BASE=http://YOUR_SERVER_IP:18000
POSTGRES_PASSWORD=change_this_password
EOF
# 2. Replace YOUR_SERVER_IP and change_this_password before first start.
# Use a strong URL-safe password. Avoid characters such as @ : / # % in POSTGRES_PASSWORD.
# Keep this password unchanged after the database volume has been initialized.
# 3. Start Rote with the latest stable image
docker compose up -d
Optional .env values:
# Use a specific version
IMAGE_TAG=v1.0.0
# Use the develop branch image for testing unreleased features
IMAGE_TAG=develop
# Use plain PostgreSQL without pgvector.
# Compatibility-only; future Rote versions may require pgvector-capable PostgreSQL.
POSTGRES_IMAGE=postgres:17
After the containers are running:
- Open
http://<your-ip-address>:18001. - Complete the setup page and create the first administrator account.
- Sign in and configure site settings from the Admin dashboard.
- Optional: if your image tag includes AI Memory support, open
Admin -> AI Settingsto configure chat and embedding providers, enable pgvector, and backfill existing notes/articles.
Method 2: Using Dokploy (Recommended)
Dokploy is an open-source Docker deployment platform that provides a visual interface for application deployment and management. If you have Dokploy installed, you can deploy Rote with one click using the template.
- Access Dokploy: Open your Dokploy management interface
- Select Template: Find and select the Rote template from the application template list
- Deploy Application: Click the deploy button, Dokploy will automatically pull the images and start all services
- Configure Domain (Optional): By default, the deployment uses Dokploy's auto-generated domain. If you need to configure a custom domain for your Rote, remember to set VITE_API_BASE in the environment variables to your domain address (e.g., http://your-domain.com or https://your-domain.com)
iOS App: Connect to Self-Hosted Backend
The iOS app can connect to your self-hosted backend.
- On the login page, tap the welcome text at the top multiple times to open the config dialog.
- Set
API Baseto your public backend URL (or reverse-proxy URL). - Continue with the normal login flow.
AI Memory
AI Memory is optional and disabled by default. It is available in the develop image and will be available in stable images after the next release that includes AI Memory. Administrators can enable it from Admin -> AI Settings after configuring chat and embedding providers. Rote supports OpenAI-compatible providers, including OpenAI, OpenRouter, Ollama / LM Studio, DeepSeek, SiliconFlow, DashScope / Qwen, Zhipu GLM, Moonshot / Kimi, Volcengine Ark, Tencent Hunyuan, Baidu Qianfan, and custom OpenAI-compatible endpoints.
Only authenticated, email-verified users can use AI features. AI conversations stay in the current browser session and are not persisted to the database. Notes and articles are indexed only when AI vector storage and automatic indexing are enabled by an administrator.
Detailed Instructions
For more deployment options and configuration instructions, please check the documentation in the doc/ directory:
- Self-Hosted Deployment Guide - Complete deployment and configuration guide
- API Documentation - API interface usage guide
- API Key Guide - How to use API Key
- AI Vector Migration Guide - Upgrade an existing self-hosted database to AI Memory and pgvector support (Chinese)
Video Tutorials (Bilibili)
Community Projects
- Raycast Extension - Raycast extension for Rote, developed by @aBER0724
- Rerote - Data conversion tool that transforms data from other platforms (currently Memos) into Rote format
- Rotefeeder - Deno-based RSS/Atom feeder that periodically forwards feed items to Rote via OpenKey
- Rote Toolkit - A TypeScript-based enhancement toolkit for Rote, featuring a powerful CLI and a Model Context Protocol (MCP) server for AI integration
- Rote Skill - A reusable skill for AI agents to work with Rote through rote-toolkit