Deployment guide

Blinko: Self-Hosted AI Notes with Semantic Search on VPS

Deploy on a VPS Cloud →

Tutorial

Blinko: Self-Hosted AI Notes with Semantic Search on VPS

Self-hosting6 min read5 steps

Blinko is an open-source, AI-first note-taking app (GPL-3.0, 11 k+ stars) designed for developers and knowledge workers. Unlike Notion or Obsidian Cloud, your notes live on your own server — no subscription, no involuntary sync with third parties. The card-based interface, built-in semantic search and RAG (Retrieval-Augmented Generation) engine make Blinko a particularly powerful tool for capturing and finding knowledge, especially for developers who want full control over their data.

Contents· Why host your notes on your own VPS?1/8
  1. 01Why host your notes on your own VPS?
  2. 02What Blinko brings to a ServOrbit VPS
  3. 03Access without a domain: SSH tunnel or free subdomain
  4. 04Getting started with Blinko on ServOrbit
  5. 05Connecting AI search and going further
  6. 06Blinko vs Memos vs Obsidian: which app for which use case?
  7. 07Automating capture with Blinko's REST API
  8. 08Migrating from another note-taking app

Why host your notes on your own VPS?

Cloud note-taking tools centralise your ideas on their servers and may analyse them to improve their product or train their models. With Blinko, everything is stored on your own VPS: your notes, attachments and capture history never leave your machine unless you explicitly choose to share them. You keep full control over your data — including sensitive thoughts, client notes or unpublished research.

What Blinko brings to a ServOrbit VPS

  • Card-based capture — each note is an atomic card, optimised for quick capture and retrieval rather than long-form writing. Type an idea, press Enter, find it again in seconds.
  • Built-in semantic search and RAG — connect a local Ollama model or any OpenAI-compatible endpoint to query your notes in natural language: "what did I write about rate limits last week?"
  • Full-text + vector search — Blinko combines classic keyword search with vector similarity to find a note even when you don't remember the exact words.
  • Tags and filters — organise your cards by tag, type (note, task, bookmark) and filter the timeline with one click to retrieve any context.
  • Progressive Web App — accessible from any device without installing an app; the interface is optimised for quick mobile capture.
  • Multi-user support — invite team members, each with their own private note space on a shared instance.
  • REST API — automate card creation from scripts, CI pipelines, bots or any HTTP client.
  • GPL-3.0 — no telemetry, no mandatory cloud account, no vendor lock-in.

Access without a domain: SSH tunnel or free subdomain

Blinko works without a domain name. The app publishes its port on localhost only (127.0.0.1), meaning external access requires either an SSH tunnel or a domain with a reverse proxy. For the tunnel: ssh -L 1111:127.0.0.1:<port> root@<vps-ip> (the actual port is shown in your client area, not necessarily 1111), then open http://localhost:1111. For permanent access from your devices, attach one of your domains from your ServOrbit dashboard — nginx proxies the container over HTTPS with automatic certificate renewal — or use the free {app}.{dns_slug}.servorbit-dns.com subdomain included with every VPS.

Getting started with Blinko on ServOrbit

  1. Create your VPS and deploy Blinko

    In your ServOrbit dashboard, go to Marketplace → Collaboration and Productivity → Blinko, and click Deploy. Select Ubuntu 24.04 and confirm. Docker pulls the blinkospace/blinko:1.8.8 and postgres:14-alpine images, runs migrations and starts both containers automatically.

  2. Create your admin account

    Open the address shown in your dashboard. Without a domain, first open an SSH tunnel: ssh -L 1111:127.0.0.1:<port> root@<your-vps-ip> then navigate to http://localhost:1111. Click Sign up — the very first account created automatically becomes the administrator of the instance.

  3. Start capturing notes

    Type an idea in the input box at the top of the page and press Enter. Add tags with #tagname directly in the text. The search bar searches full-text across your entire history.

  4. Connect an AI model (optional)

    In Settings → AI, enter an OpenAI-compatible endpoint URL and a model name. To keep everything on your server, deploy Ollama from the Marketplace (AI and Machine Learning category) on the same VPS, then point Blinko to http://localhost:<ollama-port>/v1. Blinko indexes your notes as vectors and the search bar understands natural-language questions.

  5. Back up your data

    All your notes and attachments live in two Docker volumes: blinko-db (PostgreSQL) and blinko-uploads (files). For a database dump: docker exec blinko-db-1 sh -c 'pg_dump -U blinko blinko' > backup.sql. Copy this file and the blinko-uploads folder via SFTP for a complete backup. Restore by importing the dump into a fresh PostgreSQL container.

Connecting AI search and going further

Blinko's power lies in its RAG engine: once a model is connected, you can ask questions across your entire note history in natural language. For example: "summarise my notes on project X" or "what did I decide about the API architecture?" — Blinko finds the relevant cards and synthesises an answer. Everything stays on your VPS. For developers who automate their workflow, Blinko's REST API lets you create cards from any tool: a deployment script that logs releases, a Slack bot that archives decisions, or a cron job that captures yesterday's metrics.

Blinko vs Memos vs Obsidian: which app for which use case?

Three apps often come up in the same breath: Blinko, [Memos](/blog/self-host-memos-vps) and Obsidian. They cover different needs. Memos excels at microblogging flows — fleeting ideas, daily logs — but its search remains text-only. Obsidian shines for large structured libraries (folders, bidirectional links, graph), but its cloud sync is paid and the install is local. Blinko sits in the middle: capture as fast as Memos, with semantic search that answers natural-language questions over your history, and a fully self-hosted Docker architecture. [SiYuan](/blog/self-host-siyuan-vps) is another option if you prefer a full block editor over a capture-first interface.

Automating capture with Blinko's REST API

  • Log CI deployments — call the Blinko API from your GitHub Actions pipeline to create a card on every release: curl -X POST https://your-blinko/api/v1/note/upsert -H 'Authorization: Bearer <token>' -d '{"content": "Release v1.2.3 deployed"}'.
  • Archive Slack decisions — a Slack webhook can create a Blinko card every time a message is ⭐ starred in a project channel.
  • Daily metrics cron — a daily script that reads your metrics (traffic, errors, revenue) and sends them to Blinko builds a searchable historical log.
  • Pull-request bot — a script that scans yesterday's closed GitHub PRs and creates one card per important PR — title, link, labels — generates a navigable changelog queryable in natural language.
  • Import from Notion — export your Notion pages to Markdown and use a script that splits them into atomic cards via the API to migrate without data loss.

Migrating from another note-taking app

Migrating to Blinko is straightforward: the REST API accepts any Markdown string as card content. If you are leaving Notion, export to Markdown (Settings → Export → Markdown and CSV), then split each file into cards via a Python or Node.js script calling POST /api/v1/note/upsert. If you are leaving Obsidian, .md files are already plain Markdown — a find + curl loop is enough. For Memos, its JSON export API is directly consumable. Attachments transfer via POST /api/v1/file/upload. Once your data is in Blinko, trigger vector re-indexing from Settings → AI so semantic search covers your entire imported history from the first evening.

Deploy Blinko on your VPS

ServOrbit provisions an Ubuntu 24.04 VPS and launches Blinko with its PostgreSQL database in two Docker containers within minutes — data under your control, AI search included.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab