Installing SEO Note 2.1 on Linux

Linux gets the current build, SEO Note 2.1, in two shapes: an AppImage you run without installing anything, and a .deb that goes through your package manager and adds the menu entry. Both are x86_64. There is no Linux version of the classic 1.3.34 — that one is a Windows program.

Three builds ship from this site. SEO Note 2.1 is the current one: an Electron app (about 121 MB installer) for Windows 10/11 64-bit and Linux x64, with Markdown, the tree editor, AI talking to a model you connect — a local one or any OpenAI-compatible endpoint, a web clipper and git sync of the file. For Android 6.0 and newer there is a release-signed APK (~10 MB) of the same interface; on the phone notes live as a folder of Markdown files on the device, and passwords, sync, the clipper and AI answer there with an explicit refusal. The classic build 1.3.34 (~2.5 MB, Win32) stays on the download page for Windows 7, 8 and 32-bit PCs, where 2.1 does not install; its notes file is .seo. All three work offline with no account: pick your build, or read how 2.1 and 1.3.34 differ.

Which file

FileSizeWhat it does
SEO-Note-2.1.2.AppImage146 121 320 bytes (~139 MB) Nothing is installed. One executable file, kept wherever you like, launched by name.
seonote-electron_2.1.2_amd64.deb112 837 524 bytes (~107 MB) Installs the program, an icon and a menu entry in the Utilities section. Declared install size 366 873 KB, about 360 MB on disk.

Take the AppImage if you want to try the program or carry it between machines. Take the .deb if you intend to use it daily and want it in your application menu, and let apt resolve the libraries.

The AppImage

sha256sum SEO-Note-2.1.2.AppImage
chmod +x SEO-Note-2.1.2.AppImage
./SEO-Note-2.1.2.AppImage

The first line is optional but cheap: the download page publishes the SHA-256 of every file it offers, and the AppImage digest starts with ae73a684. The file has no executable bit when it arrives from a browser, which is why chmod +x is step two, not an emergency fix.

An AppImage mounts itself when it runs, so it needs the usual FUSE support and a desktop stack. On a minimal system — a container, a stripped image, a hand-built window setup — unpack it instead:

./SEO-Note-2.1.2.AppImage --appimage-extract

That is how we re-checked this build: unpacked, in a bare ubuntu:24.04 container with no desktop stack and no FUSE, and run from the unpacked tree under a virtual X server after installing the libraries the .deb declares. On the bare image ldd lists 26 libraries of this binary as missing — X11, GTK, NSS, ALSA and friends, every one of them something a normal Ubuntu or Fedora desktop installs anyway; after the .deb dependency list is installed, ldd reports none. The window comes up at 1200x800 and the first-run vault seeds itself, which is what we watched for. Two notes on honesty: the unpacked tree needs --no-sandbox unless its chrome-sandbox helper is made setuid root, because unpacking drops that bit; and we tested the unpacked path, not the mounted one, since the image had no FUSE — on a normal desktop the AppImage mounts itself and you type nothing of the kind. If your system genuinely lacks the libraries, the .deb is the shorter road, because the package names them and apt fetches them.

The .deb

sudo apt install ./seonote-electron_2.1.2_amd64.deb

The leading ./ matters: without it apt tries to resolve a package name from its repositories rather than the file in front of you. The package declares libgtk-3-0, libnotify4, libnss3, libxss1, libxtst6, xdg-utils, libatspi2.0-0, libuuid1, libsecret-1-0, libasound2 | libasound2t64 as dependencies — apt pulls them, and they are what an Electron desktop program needs: GTK for windows and dialogs, NSS for the certificate store, libsecret for the OS keyring, ALSA for sound. On Ubuntu 24.04 the t64 names are the live ones, and the package accepts either.

To take it off again: sudo apt remove seonote-electron. Your notes file is left where it is, because it is data, not part of the package.

What is still wrong with this .deb, read from the package

Taken from the control block of the file this server hands out, not from the source tree, so it describes what you actually download. Of the three defects the published 2.0.0 package had, the 2.1.2 package keeps one.

  • Still there: the metadata carries Homepage: https://github.com/seonote/seonote-electron. That account is not ours and is not registered by anyone we know of. Ignore it: downloads and releases live here, on the download page. Treat the field as a leftover of the build configuration rather than as an address to visit or to subscribe to.
  • Fixed in 2.1.2: libasound2 is declared. The 2.0.0 package did not list it, and Electron needs ALSA for sound, so on a minimised desktop image the program installed fine and exited at once. Now Depends carries libasound2 | libasound2t64 and apt pulls it. If you are still running the 2.0.0 file: sudo apt install libasound2 (Ubuntu 24.04 and later may call it libasound2t64).
  • Fixed in 2.1.2: Description is not empty. The 2.0.0 summary line was blank, so apt show seonote-electron printed nothing useful and some package browsers showed it the same way. Cosmetic then, fixed now.

Where the notes file goes

On first start the program creates notes.seonote in ~/.config/seonote-electron/. That single SQLite file holds the tree, the note bodies, the tags and the search index. Move it wherever suits you with File → Save as…; the path of the file you have open, plus buttons to copy it or reveal the folder, sit in File → File properties…. Copying the file to another machine — Windows or Linux — is the whole of the transfer story: nothing in it is tied to the operating system it was created on.

Two limits that are specific to Linux

  • Importing an old .seo file is Windows-only. In the running program on Linux the menu item is there but greyed out and labelled (Windows). This covers the classic SEO Note format, TreePad and KeyNote. Evernote .enex, Google Keep JSON, plain text, HTML and Markdown import are not affected. If you have a .seo archive, do that one import on a Windows machine and carry the resulting .seonote file back — the migration page walks through what arrives and what does not.
  • The AI key needs a keyring. The password for an AI endpoint is kept in the system keyring (libsecret), never in the settings file. On a desktop with GNOME Keyring or KWallet that is invisible. On a bare system with no Secret Service the program keeps the key for the running session and writes nothing to disk, so after a restart you type it again — which is the honest alternative to storing a secret in a plain file.

The general limits of 2.1 apply here too: nothing installs through the app, so a new version means downloading it here again — and the daily GitHub query the 2.0.0 file used to send is gone from this build. The Linux files carry no signature, the same as the Windows installer (only the Android APK is signed), and a few hundred MB on disk is the runtime, not your notes. If that is too much for a machine, the classic 1.3.34 build is 2.5 MB — but it is a Windows program, and we do not test it under Wine.


Next steps

Mini FAQ

Is there a repository or a Flatpak / Snap package? No. The two Linux files on the download page are an AppImage and a .deb, and both are installed by hand. There is no package repository to add and no store listing, which also means there is nothing that could update the program without asking you.

Do I need root to run SEO Note on Linux? Not for the AppImage: it is a file you make executable and run. The .deb does need sudo, because that is how any system package is installed on Debian and Ubuntu derived distributions.

Does the AppImage install a menu entry? No, it stays a file you launch. If you want the desktop entry and the icon, use the .deb. Some file managers offer to add a menu shortcut for an AppImage on their own; that is their feature, not something SEO Note writes into your system.

Can I move my notes file from a Windows machine to Linux? Yes, by copying it: the .seonote file is a SQLite database with nothing system-specific in it. Note the other direction, though: importing an old classic .seo file is implemented and tested on Windows only, so do that import on Windows first and carry the resulting file to Linux.

Why would the AppImage refuse to start on a minimal system? Because it expects a desktop stack. Our own check of this build was a bare ubuntu:24.04 container: the AppImage unpacked fine with --appimage-extract, but ldd listed 26 of its libraries as missing there, all of them parts of a normal desktop install, and there was no FUSE to mount it with. The program itself started once those libraries were present. On a stripped container or a hand-built system the .deb is the easier route, because apt pulls the libraries the package declares.