xnote — это легкая система ведения заметок для частных лиц. Она предоставляет множество функций управления данными и призвана освободить людей от информационной перегрузки.
Эта практика представляет собой личную тестовую среду, а версия операционной системы — centos7.6.
hostname | IP-адрес | Версия операционной системы | Докер-версия |
---|---|---|---|
dokcer | 192.168.3.166 | centos 7.6 | 2 20.10.17 |
1. Среда развертывания для этой практики — это персональная тестовая среда, будьте осторожны в производственной среде; 2. Используйте облегченную систему заметок Xnote от Docker.
Проверьте, нормально ли работает служба Docker, и убедитесь, что Docker работает нормально.
[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-03-21 18:42:13 CST; 3min 53s ago
Docs: https://docs.docker.com
Main PID: 43305 (dockerd)
Tasks: 82
Memory: 103.6M
CGroup: /system.slice/docker.service
Проверьте версию Докера
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701
Проверьте версию Docker Compose, чтобы убедиться, что она 2.0 или выше.
[root@jeven ~]# docker compose version
Docker Compose version v2.6.0
Извлеките изображение Xnote из облачного хранилища изображений Huawei.
[root@jeven xnote]# docker pull swr.cn-north-4.myhuaweicloud.com/jeven/xnote
Using default tag: latest
latest: Pulling from jeven/xnote
Digest: sha256:10a511df294788bcb8fa9f2c98bdd3a66b48ef65222347d55c1af030e131dbdf
Status: Image is up to date for swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest
swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest
Создать каталог развертывания
mkdir -p /data/xnote/data && cd /data/xnote
авторизация каталога
chmod -R 777 /data/xnote/
Отредактируйте файл boot.properties.,Основные изменения
db_driver = sqlite
часть,Определить тип базы данных,Здесь используется база данных sqlite.
vim boot.properties
# Это конфигурация системы по умолчанию, не редактируйте ее.
# В элементах конфигурации для разделения модулей и слов используется знак подчеркивания (_). Не используйте (.), за исключением последнего (.type).
# Примечание о числах
# Перенос kb/mb/gb/tb/pb равен 1024, Перенос к/м 1000
# Например: 1kb = 1024, 1k = 1000
# Корневой каталог хранилища данных
data = ./data
# Номер порта HTTP-сервиса
port = 1234
# Корневой каталог сервера, по умолчанию пуст (корневой путь)
server_home =
# Минимальное количество потоков
min_threads = 15
min_threads.type = int
# Включить ли режим отладки
debug = false
debug.type = bool
# Следует ли автоматически открывать браузер после запуска (возможность запуска на рабочем столе)
open_browser = false
open_browser.type = bool
# Воспроизводить ли голосовые подсказки после запуска
ringtone = false
ringtone.type = bool
# Нужно ли принудительно перенаправлять на https
force_https = false
force_https.type = bool
# Нужно ли быстро перезагружать (используется в режиме разработки)
fast_reload = false
fast_reload.type = bool
# TODO Порог памяти для перезапуска -1 означает отсутствие перезапуска
reload_mem_threshold = -1
reload_mem_threshold.type = int
# Переключение задач по расписанию
cron_enabled = true
cron_enabled.type = bool
# Включить ли WEBDAV
webdav = false
webdav.type = bool
# Управление базой данных {leveldb, leveldbpy, sqlite, mysql}
db_driver = sqlite
# Драйвер кэша {memory, db, redis}
db_driver_cache = memory
# Включить ли резервное копирование базы данных
db_backup = true
db_backup.type = bool
# Включить ли журнал отладки базы данных
db_log_debug = false
db_log_debug.type = bool
# Срок действия резервной копии базы данных (дни)
db_backup_expire_days = 5
db_backup_expire_days.type = int
# Включить ли отладку базы данных
db_debug = false
db_debug.type = bool
# Анализ производительности table_proxy (временно)
db_profile_table_proxy = false
db_profile_table_proxy.type = bool
# Максимальная длина системного журнала
db_sys_log_max_size = 10000
db_sys_log_max_size.type = int
# конфигурация кэша leveldb
block_cache_size = 16777216 # 16M
block_cache_size.type = int
# Конфигурация буфера записи Leveldb (размер MemTable)
write_buffer_size = 4194304 # 4M
write_buffer_size.type = int
# Максимальное количество файлов, открываемых leveldb
max_open_files = 1000
max_open_files.type = int
# конфигурация lmdb
lmdb_map_size = 1GB
lmdb_map_size.type = int
# Конфигурация синхронизации «главный-подчиненный»
# leader: главный узел
# follower: подчиненный узел
node_role = leader
# Идентификатор узла
node_id = my_node_id
# Создавать ли индекс синхронизации файлов
build_fs_sync_index = false
build_fs_sync_index.type = bool
# Включить ли binlog
binlog = false
binlog.type = bool
# максимальное значение бинлога
binlog_max_size = 1M
binlog_max_size.type = int
# Синхронизировать ли файлы
sync_files_from_leader = false
sync_files_from_leader.type = bool
# Синхронизировать ли базу данных
sync_db_from_leader = false
sync_db_from_leader.type = bool
# Синхронизированное время опроса
sync_interval_seconds = 3
sync_interval_seconds.type = int
# Конфигурация ноутбука, максимальная глубина ноутбука
max_book_depth = 2
max_book_depth.type = int
# Режим журнала SQLite по умолчанию установлен на DELETE. Изменение его на WAL может улучшить производительность параллелизма, но совместимость относительно плохая.
sqlite_journal_mode = DELETE
# Конфигурация mysql (пока не стабильна, находится в стадии тестирования)
mysql_database = xnote
mysql_host =
mysql_user =
mysql_password =
mysql_cloud_type =
mysql_pool_size = 10
mysql_pool_size.type = int
mysql_port = 3306
mysql_port.type = int
# Конфигурация разрешений
auth_max_session_size = 20 # Максимальное количество сеансов на пользователя
auth_max_session_size.type = int
# Конфигурация пользовательского интерфейса
ui_show_footer = true
ui_show_footer.type = bool
Отредактируйте файл docker-compose.yml.
version: "3"
services:
server:
image: swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest
container_name: xnote
volumes:
- /data/xnote/data:/xnote/data
- /data/xnote/boot.properties:/config/boot/boot.sae.properties
ports:
- 5238:1234
[root@jeven xnote]# docker compose up -d
[+] Running 2/2
⠿ Network xnote_default Created 0.1s
⠿ Container xnote Started 1.7s
Проверьте состояние контейнера Xnote, чтобы убедиться, что контейнер Xnote запускается нормально.
[root@jeven xnote]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
xnote "python sentinel.py …" server running 0.0.0.0:5238->1234/tcp, :::5238->1234/tcp
Проверьте журнал работы контейнера Xnote, чтобы убедиться, что служба Xnote работает нормально.
docker compose logs
Адрес доступа: http://192.168.3.166:5238, замените IP-адрес на IP-адрес вашего собственного сервера и войдите на начальную страницу Xnote. Если к нему нет доступа, проверьте, настроен ли брандмауэр сервера, разрешен ли порт группы безопасности облачного сервера и т. д.
Пароль учетной записи по умолчанию — admin/123456 и введите домашнюю страницу Xnote.
Домашняя страница — Управление блокнотами — Создайте новый блокнот и введите имя блокнота.
Нажмите «Создать заметку» и отредактируйте заголовок заметки.
Отредактируйте содержимое заметки и сохраните ее.
Посмотреть эффект заметки
Xnote — это легкая система ведения заметок, которую можно быстро развернуть с помощью Docker. У него простая и эффективная страница, подходящая для начинающих. По моему первоначальному опыту я обнаружил, что страница Xnote работает плавно, без задержек и очень высокая скорость отклика. Он также предоставляет хорошую функцию классификации заметок, которая облегчает нам организацию и поиск заметок. Кроме того, Xnote также поддерживает заметки с уценкой, что очень полезно для записи технического контента. Если вам нужна простая и практичная система ведения заметок, вы можете попробовать Xnote.