Как запустить Trilium Notes Server на Android через Termux
Несколько лет я пытался организовать удобную систему заметок в Obsidian.
Сначала всё нравилось: markdown, плагины, локальные файлы. Но со временем появилась другая проблема — я начал тратить больше времени на настройку системы, чем на сами заметки.
Плагины конфликтовали между собой, структура постоянно менялась, а вопрос синхронизации между устройствами так и не удалось решить «идеально».
Официальный Obsidian Sync платный, а варианты через Git, Syncthing или облака всё равно требовали дополнительных костылей.
В какой‑то момент я решил посмотреть в сторону self‑hosted решений и наткнулся на Trilium Notes.
Почему именно Trilium
Trilium Notes — это self‑hosted система заметок с древовидной структурой, встроенным сервером и веб‑интерфейсом.
Что мне в нём понравилось:
древовидная структура заметок;
работа через браузер;
быстрый поиск;
relations / attributes;
локальное хранение данных;
возможность полностью держать всё у себя;
нормальная работа с большими базами заметок.
Главный минус — на Android нет полноценного официального мобильного решения.
В итоге уже около года я использую Trilium Server прямо внутри Termux на телефоне.
Что понадобится
Для установки потребуется:
Android‑смартфон;
стабильный интернет;
около 3–5 ГБ свободного места;
немного терпения.
У меня установка работает на Android 15 и ARM64-процессоре.
Подключение по SSH
Для удобства я подключаюсь к телефону по SSH с компьютера.
Сначала устанавливаем openssh внутри Termux:
pkg install opensshЗапускаем SSH-сервер:
sshdПосле этого можно подключиться с ПК:
ssh u0_a349@192.168.1.73 -p 8022Порт настроен у меня на 8022, в вашем же случает это будет стандартный 22
Также у меня установлен fish shell.
Если будет интересно — позже отдельно напишу про настройку удобного окружения внутри Termux.
Обновляем Termux
Первое, с чем я столкнулся — проблемы при обновлении пакетов.
apt updateВ какой-то момент apt начал ловить таймауты:
❯ apt update
Get:1 https://mirrors.ravidwivedi.in/termux/termux-main stable InRelease [14.0 kB]
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [547 kB]
Ign:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [547 kB]
Ign:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [547 kB]
Ign:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [547 kB]
Err:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Connection timed out [IP: 82.180.144.238 443]
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [681 kB]
Err:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Connection timed out [IP: 82.180.144.238 443]
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [1749 kB]
Err:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages
Connection timed out [IP: 82.180.144.238 443]
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
W: Failed to fetch https://mirrors.ravidwivedi.in/termux/termux-main/dists/stable/main/binary-aarch64/Packages Connection timed out [IP: 82.180.144.238 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.
u0_a349@localhost ~По понятным некоторым причинам обновление не удалось, но после шаманской магии со сменой ip, обновление всё же прошло нормально.
❯ apt update
Get:1 https://mirrors.ravidwivedi.in/termux/termux-main stable InRelease [14.0 kB]
Get:2 https://mirrors.ravidwivedi.in/termux/termux-main stable/main aarch64 Packages [548 kB]
Fetched 562 kB in 18s (30.6 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
87 packages can be upgraded. Run 'apt list --upgradable' to see them.Дальше просто обновим систему:
apt upgradeАвтозапуск сервисов в Termux
Во время обновления Termux предлагает установить termux-services.
Это полезно, если вы хотите автоматически запускать:
sshd;ssh-agent;другие сервисы.
Установка:
pkg install termux-servicesАвтозапуск SSH:
sv-enable sshdУстанавливаем Linux внутри Android
Для запуска Trilium удобнее использовать полноценное Linux‑окружение через proot-distro.
Устанавливаем:
apt install proot-distroСписок доступных дистрибутивов:
proot-distro listЯ тестировал Ubuntu и Debian.
Но периодически сталкивался с проблемами и нестабильной работой.
Лучше всего у меня заработал Manjaro.
Установка:
proot-distro install manjaroВход в систему:
proot-distro login manjaroПроверяем сертификаты Первым делом проверяем сертификаты.
Без этого могут не работать:
curl;GitHub;
установка пакетов;
HTTPS‑запросы.
Устанавливаем пакет:
pacman -S ca-certificatesПроверяем наличие сертификатов:
ls -la /etc/ssl/certs/ca-certificates.crtЕсли возникают ошибки — переустанавливаем пакет:
pacman -S ca-certificates --overwrite '*'Иногда команда может зависнуть без вывода — это нормально.
После этого обновляем trust store:
update-ca-trustПроверяем работу HTTPS:
curl -I https://github.comУстанавливаем зависимости
Для сборки некоторых нативных модулей потребуется:
pacman -S git base-develУстановка Node.js через NVM
Устанавливаем nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bashПосле установки нам любезно указывают что нужно добавить переменные окружения:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completionПроверяем:
nvm -vУстанавливаем Node.js:
nvm install 22После установки проверяем версию:
node -vУстанавливаем pnpm
Trilium использует pnpm.
Устанавливаем:
npm install -g pnpmУстановка Trilium Server
Нам нужна ARM64-сборка TriliumNotes-Server.
Находим её тут.
Скачиваем:
curl -OL https://github.com/TriliumNext/Trilium/releases/download/v0.103.0/TriliumNotes-Server-v0.103.0-linux-arm64.tar.xz
Распаковываем:
tar -xf TriliumNotes-Server-v0.103.0-linux-arm64.tar.xzПереходим в папку:
cd TriliumNotes-Server-0.103.0-linux-arm64/Запускаем сервер:
./trilium.shПервый запуск
После запуска Trilium начинает поднимать локальный сервер.
Обычно интерфейс доступен по адресу:
http://127.0.0.1:8080Если открывать с другого устройства в локальной сети:
http://IP\_ТЕЛЕФОНА:8080Синхронизация с другим сервером такая же как и на других клиентах.
Где хранятся данные
Все заметки хранятся локально внутри контейнера.
Перед экспериментами с обновлениями рекомендую сразу сделать резервную копию папки с данными.
Подводные камни
Android может выгружать Termux
Если система агрессивно экономит батарею — сервер будет останавливаться в фоне.
Нужно:
отключить оптимизацию батареи;
разрешить работу в фоне;
исключить Termux из энергосбережения.
ARM64 обязателен
Нужна именно ARM64-сборка Trilium.
Обычная x64-версия работать не будет.
Первый запуск может быть долгим
Особенно на слабых устройствах.
Итоги
Честно говоря, пока нет официального и нативного приложение для android, это лучшее что я пробовал.
Полностью готовый , синхронизированный сервер:


Плюсы:
сервер всегда под рукой;
всё хранится локально;
удобно для личной базы знаний.
Минусы:
Android всё ещё не лучшая серверная платформа;
систему приходится периодически «подкручивать»;
нет полноценного мобильного клиента.
Стоит ли так делать?
Как домашний self‑hosting эксперимент — однозначно да.
Если у вас уже есть сервер, просто включите синхронизацию и тогда, даже когда у вас по какой‑то причине нет интернета, вы можете делать заметки.
Как production‑решение для критически важных данных — скорее нет.
Но как способ получить полностью свой сервер заметок буквально в кармане — опыт получился очень интересный.
Это мой первый опыт написания на Habr, ожидаю конструктивной критики и предложений.