Video tutorial coming soon.
Deploy Memos on Ubuntu — a lightweight self-hosted note-taking app with a Twitter-like feed, Markdown support, tags, and per-note public/private control.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/memos/memos-ubuntu.sh
chmod +x memos-ubuntu.sh
sudo bash memos-ubuntu.sh
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/memos/memos-ubuntu.sh
chmod +x memos-ubuntu.sh
Script deploys Memos as a single Docker container with SQLite as the embedded database — no separate database container needed.
sudo bash memos-ubuntu.sh
Open your browser and navigate to port 5230. Register your admin account on first visit — the first user created becomes the admin.
http://<your-server-ip>:5230
Type a memo in the text box and press Ctrl+Enter to save. Use #hashtags to organize, and toggle visibility between public and private per memo.
| Port | Purpose |
|---|---|
| 5230 | Web UI |
Memos is a lightweight, open-source self-hosted note-taking application with a Twitter-like feed interface. Instead of the traditional folder-tree structure of most note apps, Memos presents notes as a reverse-chronological stream — you type a thought, tag it, and capture it instantly. It supports full Markdown rendering, file attachments, code blocks, and per-note visibility toggling (public notes can be shared as a personal micro-blog). The REST API allows integration with mobile shortcuts and automation tools for frictionless capture from any device.
Most note apps impose structure before you can capture a thought. Memos removes friction — open the page, type, press Ctrl+Enter, done. The chronological feed makes it ideal as a personal 'digital brain dump' or work diary. Because it is self-hosted, your notes never leave your server, and the REST API means you can capture notes from your phone, terminal, or automation scripts without opening a browser.
Memos listens on port 5230 by default. This port should be proxied through Nginx or Traefik with HTTPS and not exposed directly. If you only use Memos privately, you can restrict access to your IP only at the firewall level. No additional ports are needed — SQLite runs embedded with no external database port.
Standard Notes offers end-to-end encryption and a polished cross-platform app but lacks the feed-style interface. Obsidian is better for long-form linked notes and knowledge graphs but is local-first and not self-hosted. Joplin supports synchronization and has good mobile apps. Silverbullet is a newer self-hosted option with more wiki-like features. BookStack and Docmost are better if you need structured team documentation rather than personal quick capture.
Skip Memos if you need structured team documentation with hierarchy and permissions — use BookStack or Docmost instead. If end-to-end encryption of your notes is critical, Standard Notes is more appropriate. Memos also has limited offline support — if you need notes available without internet on mobile, Obsidian with local sync is better. For note-taking that needs sharing with non-technical users, Notion or Confluence might be more accessible.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Yes — Memos supports multiple user accounts. Each user has their own memo feed and private notes. Admins can see all memos in the system admin panel. However, Memos is not a collaborative wiki — users cannot edit each other's notes. If you need team collaboration on shared documents, use BookStack or Docmost instead. Memos works best as individual personal note spaces on a shared server.
Use the Memos REST API with an iOS Shortcut or Android Tasker task. Get your API token from Settings → My Account → Access Tokens. Then create a shortcut that posts to `https://your-memos-url/api/v1/memo` with your token in the Authorization header and your note content in the JSON body. Several community-built iOS Shortcuts for Memos are shared on the Memos GitHub discussions page.
Yes — each memo has a visibility toggle: Private (only you can see it), Protected (logged-in users can see it), or Public (anyone with the URL can see it, even without logging in). Public memos appear on your public profile page at `https://your-memos-url/u/your-username`. This makes Memos suitable as a personal micro-blog alongside its use as a private note repository.
Memos uses hashtags for organization. Type `#work` or `#idea` anywhere in a memo to tag it. Tags appear in the left sidebar and clicking one filters the feed to only show memos with that tag. You can use nested tags like `#project/website` for more granular organization. The search function also searches through memo content, so full-text search works as an alternative to browsing by tag.
Yes — Memos renders full Markdown including headers, bold, italic, lists, code blocks with syntax highlighting, tables, blockquotes, and links. It also supports KaTeX for math equations (wrap in `$...$` for inline or `$$...$$` for block). Images embedded with the standard Markdown image syntax also render inline. The editor shows a live preview as you type.
Backup: `docker cp memos:/var/opt/memos/memos_prod.db ./memos_backup_$(date +%Y%m%d).db`. Also backup the assets volume: `docker run --rm -v memos_assets:/data -v $(pwd):/backup alpine tar czf /backup/memos_assets.tar.gz /data`. Restore: stop the container, copy the backup file back to the volume path, and restart. Test restores in a staging environment before you need them in an emergency.
Memos does not have a built-in bulk import UI, but it has a REST API that accepts plain text and Markdown. You can write a script to read your existing notes (from Obsidian vault files, Notion exports, etc.) and POST them one by one to the Memos API. Community members have shared import scripts on GitHub. For a single-user migration, manually pasting important notes is often practical for smaller collections.
Run `docker compose pull && docker compose up -d` in your Memos directory. The SQLite database and uploaded files are stored in named Docker volumes and are not affected by image updates. Check the Memos GitHub releases page before updating — major version upgrades sometimes include database migration steps that must be followed in order.