搭建开源笔记平台:outline

折腾的意义

为什么要自己搭建一个笔记平台?没理由,就是突然想试试。有时候突然有个想法,搜了一下正好有合适的方案,就顺手试一下。

其实已经有很多成熟的笔记软件,例如Notion/OneNote,但谁不想要一个数据完全在自己服务器的笔记呢。

开始搭建

这个搭建是真的麻烦,需要一堆东西:

  • redis
  • postgresql
  • minio
  • keycloak

这种依赖多镜像的平台一般推荐docker-compose来搭建,不过我还是喜欢使用docker一个容器一个容器的启动。postgre和redis的容器其实可以复用,没必要每次都重新启动一个,使用docker-compose也可以通过环境变量传递。

docker可用源可以看:https://www.wangdu.site/course/2109.html,我现在用的是docker.mybacc.com,只需要在pull镜像的时候加上,然后重命名一下镜像就可以,源失效的太快,每次改源文件更麻烦。

另外因为证书的申请需要80/443端口,而我使用的是本地电脑没有公网的80和443端口,所以只能部署http的服务,测试会无法使用邮箱登录。

redis

docker pull docker.mybacc.com/redis:7.4.2-alpine

docker tag docker.mybacc.com/redis:7.4.2-alpine redis:7.4.2-alpine

docker rmi docker.mybacc.com/redis:7.4.2-alpine

docker run -d \--name redis \-p 6379:6379 \-v ~/docker-data/redis-data:/data \redis:7.4.2-alpine \redis-server --save 60 1 --loglevel warning --requirepass 密码

postgresql

docker pull docker.mybacc.com/postgres:15.12

docker run -d \--name postgres \-e POSTGRES_PASSWORD=密码 \-e POSTGRES_USER=用户名 \-v ~/docker-data/postgres-data:/var/lib/postgresql/data \-p 5432:5432 \postgres:15.12

minio

https://github.com/minio/minio

这是个文件服务,在outline里做图床用的。直接复制图片到网页里就能上传到minio,不过删除好像需要到minio删除,这个后面研究。

docker pull minio/minio:RELEASE.2025-03-12T18-04-18Z

docker run -d \--name minio \-p 29000:9000 \-p 29001:9001 \-e MINIO_REGION_NAME="cn-homelab-1" \-e MINIO_ROOT_USER="minio用户名" \-e MINIO_ROOT_PASSWORD="minio密码" \-v ~/docker-data/minio-data:/data \minio/minio:RELEASE.2025-03-12T18-04-18Z server /data --console-address ":9001"

创建完成后新建一个名为outline的Buckets,填个名称就行,其他的都默认。

然后设置Region(如果启动的时候给定了MINIO_REGION_NAME环境变量,这里应该有值了),名称随意,保存之后会提示需要重启,点击重启就保存成功了。这个值是后面的AWS_REGION的值

keycloak

https://github.com/keycloak/keycloak

这个是有什么用的就说来话长,反正在outline里就起个登录作用。

docker run -d \--name keycloak \-p 8080:8080 \-e KC_DB=postgres \-e KC_DB_URL=jdbc:postgresql://ip:端口/数据库名称 \-e KC_DB_USERNAME=数据库用户名 \-e KC_DB_PASSWORD=数据库密码 \-e KC_BOOTSTRAP_ADMIN_USERNAME=keycloak用户名 \-e KC_BOOTSTRAP_ADMIN_PASSWORD=keycloak密码 \keycloak/keycloak:26.1.4 start-dev
  • KC_DB: 要使用的数据库,支持的类型有: mariadb、mssql、mysql、oracle、postgres。如果使用的时候有问题,可以换官网推荐的版本
  • KC_DB_URL: 数据库链接,数据库需要自己建
  • KC_DB_USERNAME:数据库的用户名
  • KC_DB_PASSWORD:数据库的密码
  • KC_BOOTSTRAP_ADMIN_USERNAME:keycloak的用户名,自己设置
  • KC_BOOTSTRAP_ADMIN_PASSWORD:keycloak的密码,自己设置

启动的时候有个红色的提示,只是让你不要在生产环境下使用开发者模式(start-dev)。不过要是使用start启动的话会强制https,比较麻烦。当然你也可以使用steveltn/https-portal镜像来一键配置HTTPS,需要80和443端口才能申请证书.

刚启动的时候通过8080端口访问web界面会出现HTTPS required的提示,导致无法正常登录,可以通过进入到容器的shell,执行两个命令来忽略它

docker exec -it keycloak bash
/opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user 用户名
然后输入设置的密码,再执行下面这行
/opt/keycloak/bin/kcadm.sh update realms/master  -s sslRequired=NONE

接着刷新页面就可以正常登录了,然后开始创建realm,名称填outline

接着再outline下创建Clients

第三步的值需要填你outline部署的地址,可以加端口,例如下面的

Root URL: http://xxxx.example.com:3000/
Home URL: http://xxxx.example.com:3000/
Valid redirect URIs: http://xxxx.example.com:3000/*

然后复制Credentials选项卡的Client Secret内容,这个是下面要用到的OIDC_CLIENT_SECRET

接着创建一个用来登录的用户,后面就是跳转到keycloak然后用这个用户登录进去

然后设置这个用户的密码,这个Temporary的选项可以关了,开启的话用户第一次登录需要修改密码

这里还需要禁用outline下的ssl

docker exec -it keycloak bash
/opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user 用户名
然后输入设置的密码,再执行下面这行
/opt/keycloak/bin/kcadm.sh update realms/outline  -s sslRequired=NONE

outline

现在万事俱备,只需要启动outline了

docker pull outlinewiki/outline:0.82.0

docker run -d \-p 3000:3000 \--name outline \-v ~/docker-data/outline-data:/var/lib/outline/data \-e DATABASE_URL=postgres://用户名:密码@域名:端口/数据库名 \-e REDIS_URL=redis://:密码@域名:端口/0 \-e PGSSLMODE=disable \-e FORCE_HTTPS=false \-e SECRET_KEY=22a3dbd6fd96864cb125504826b153cf60a454e43a019afe4692e06f6cacd700 \-e UTILS_SECRET=11121c684ca0dc0352bf7567db9aaf9bc26c45fc34cacd5dbe883c086d7c7e00 \-e URL=http://域名:3000 \-e OIDC_CLIENT_ID=outline \-e OIDC_CLIENT_SECRET=xxxxxxxxxxxxxxx \-e OIDC_AUTH_URI=http://域名:端口/realms/outline/protocol/openid-connect/auth \-e OIDC_TOKEN_URI=http://域名:端口/realms/outline/protocol/openid-connect/token \-e OIDC_USERINFO_URI=http://域名:端口/realms/outline/protocol/openid-connect/userinfo \-e OIDC_USERNAME_CLAIM=preferred_username \-e OIDC_DISPLAY_NAME=keycloak \-e OIDC_SCOPES="openid profile email" \-e AWS_ACCESS_KEY_ID=minio用户名 \-e AWS_SECRET_ACCESS_KEY=minio密码 \-e AWS_S3_UPLOAD_BUCKET_URL=http://域名:端口 \-e AWS_S3_UPLOAD_BUCKET_NAME=outline \-e AWS_REGION=cn-homelab-1 \-e FILE_STORAGE_UPLOAD_MAX_SIZE=26214400 \-e AWS_S3_FORCE_PATH_STYLE=true \-e AWS_S3_ACL=private \outlinewiki/outline:0.82.0

环境变量的解释可以看:https://github.com/outline/outline/blob/main/.env.sample

  • DATABASE_URL: 指定postgre数据库的连接信息
  • REDIS_URL:指定redis的连接信息
  • PGSSLMODE:不用ssl连接postgre数据库
  • FORCE_HTTPS:禁用强制https
  • SECRET_KEY:不知道有什么用,可以通过openssl rand -hex 32生成
  • UTILS_SECRET: 不知道有什么用,可以通过openssl rand -hex 32生成
  • URL:outline的访问地址,就是ip加上-p映射的端口
  • OIDC_CLIENT_ID: 这个是在keycloak里设置的Clients里的Client ID
  • OIDC_CLIENT_SECRET: 这个就算Credentials里的Client Secret
  • OIDC_AUTH_URI:这个链接的构成:http://keycloak的域名:keycloak的端口/realms/keycloak的realm/protocol/openid-connect/auth
  • OIDC_TOKEN_URI:跟上面一样
  • OIDC_USERINFO_URI:跟上面一样
  • OIDC_USERNAME_CLAIM:不知道有什么用,照抄吧
  • OIDC_DISPLAY_NAME:没什么用
  • AWS_ACCESS_KEY_ID:minio用户名
  • AWS_SECRET_ACCESS_KEY:minio密码
  • AWS_S3_UPLOAD_BUCKET_URL:minio连接地址,端口是9000,不是9001(这个是web界面的地址)
  • AWS_S3_UPLOAD_BUCKET_NAME:bucket的名称
  • AWS_REGION:region
  • FILE_STORAGE_UPLOAD_MAX_SIZE:设置上传的最大大小,这个数字是25M
  • AWS_S3_FORCE_PATH_STYLE:不知道什么用
  • AWS_S3_ACL:不知道什么用

接着访问outline的端口就能跳转到keycloak的界面,输入之前创建的用户名密码就登陆成功了,复制图片到网页也能正常上传。等我体验一下再说怎么样

从这里就能看出docker-compose的优点了。

参考链接

  • keycloak官方文档: https://www.keycloak.org/guides#server
  • 搭建Outline私人Wiki私人知识库: https://luckzym.com/posts/a239536c/
  • docker基于本地存储部署outline团队知识库: https://blog.csdn.net/networken/article/details/141961843
  • outline官方文档:https://docs.getoutline.com/s/hosting/doc/hosting-outline-nipGaCRBDu

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908488.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

useDeferredValue的作用

前言 useDeferredValue是react18新增的一个用于优化性能的一个hook,它的作用是延迟获取一个值,实际开发中的常规用法与我们之前所用的防抖和节流很相似,但是也有一定的区别。本篇文章我们就逐步分析它的设计原理和用法,并且讨论它与防抖节流的区别和它自身的优势。在讨论us…

Spring AI 增加混元 embedding 向量功能

上次我们讨论了如何将自己的开源项目发布到 Maven 中央仓库,确保其能够方便地被其他开发者使用和集成。而我们的项目 spring-ai-hunyuan 已经具备了正常的聊天对话功能,包括文本聊天和图片理解等基础功能。今天,我们进一步优化和扩展了该项目,新增了一个向量化功能。如图所…

如何选择合适的数据同步软件,提升企业业务效率和数据管理能力?

数据同步软件对企业提升决策效率、优化客户体验、保障运营稳定性等诸多方面都有显著好处,可以实时洞察业务状况,及时发现问题与机会,提升风险控制能力,保障数据一致性,优化资源配置,促进团队协作。一、应用场景 通常金融、电商、医疗、制造等行业的企业会有数据同步的需求…

2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装)

2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装) @目录2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装)1. 第一种方式:yum 安装 RabbitMQ 的详细步骤:1.1 安装 RabbitMQ web 管理插件1.2 在 RabbitMQ …

20244221李留斌《python程序设计》实验报告

20244104 2024-2025-2 《Python程序设计》实验x报告 课程:《Python程序设计》 班级:2442 姓名:李留斌 学号:20244221 实验教师:王志强 实验日期:2025年3月23日 必修/选修: 公选课 一、实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练习…

【分享】Ftrans内外网文件摆渡系统:让数据传输更安全更可靠!

随着大数据时代的到来,数据的重要性日渐得到重视,数据作为数字经济时代下的基础性资源和战略性资源,是决定国家经济发展水平和竞争力的核心驱动力。以行业为维度来看,数据泄露已发生在并影响了各个行业,全球范围内,各行业发生数据泄露的数量和损失都在增加。很多企业为了…

地球无法承受 AI,是时候踩刹车了

作者:Kollibri terre Sonnenblume公有领域艺术作品,作者提供,来自公共领域元素。**前言: **如果你不想阅读完整篇,这里是本篇的作者的核心观点:人工智能(AI)虽然在技术上有巨大的潜力,但它对环境的负面影响极其严重,可能加剧当前面临的多重危机,如气候变化、资源枯竭…

VMware ESXi 8.0U3d macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动 VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版…

Gitea Enterprise 23.6.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务

Gitea Enterprise 23.6.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务Gitea Enterprise 23.6.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务 The Premier Enterprise Solution for Self-Hosted Git Service 请访问原文链接:https://sysin.org/blog/gitea/…

Autodesk Maya 2026 Multilanguage (macOS, Windows) - 三维动画和视觉特效软件

Autodesk Maya 2026 Multilanguage (macOS, Windows) - 三维动画和视觉特效软件Autodesk Maya 2026 Multilanguage (macOS, Windows) - 三维动画和视觉特效软件 三维计算机动画、建模、仿真和渲染软件 请访问原文链接:https://sysin.org/blog/autodesk-maya/ 查看最新版。原创…

Autodesk AutoCAD 2026 (macOS, Windows) - 自动计算机辅助设计软件

Autodesk AutoCAD 2026 (macOS, Windows) - 自动计算机辅助设计软件Autodesk AutoCAD 2026 (macOS, Windows) - 自动计算机辅助设计软件 计算机辅助设计 (CAD) 软件 请访问原文链接:https://sysin.org/blog/autodesk-autocad/ 查看最新版。原创作品,转载请保留出处。 作者主页…

VMware Aria Operations for Logs 8.18.3 新增功能简介

VMware Aria Operations for Logs 8.18.3 新增功能简介VMware Aria Operations for Logs 8.18.3 - 集中式日志管理 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org集中式日志管理 VMwa…