Linux 笔记
docker 与 常用服务
docker 运行 redis
docker 运行 mysql
docker 运行 rabbitmq
docker 部署 MrDoc
docker 部署 wallabag
docker 部署 nextcloud
docker 运行 mindmaster
Docker 常见问题及解决
docker 部署 Standard Notes
ipv6 时代家庭网络的安全性思考
Linux 网络工具
frp vs ngrok vs ssh 隧道
树莓派4 搭建 DNS 服务器
tcpdump & goreplay
Deepin Linux
使用 zsh
Deepin Linux 系统优化
使用 deepin-wine 运行 酷狗音乐
intellij idea
使用 eclipse、vscode 替代 idea
idea 字体设置
nginx 常见问题
nginx 跨域问题处理
nginx 转发导致死循环
nginx 修改请求参数
Manjaro Linux
无法从睡眠唤醒问题修复
树莓派
树莓派系统复制
-
+
首页
docker 部署 Standard Notes
开源笔记中,Standard Notes 可能是很不错的选择了,虽然大家都说 Joplin 很不错,但我还是更喜欢前者。首先我们在 /opt 下新建一个 notes 目录,用于我们这次部署的工作目录。 ## Standard Notes 服务端部署 首先我们在 /tmp 目录下克隆后端代码,然后修改 Dockerfile 文件 ``` cd /tmp git clone --single-branch --branch master https://github.com/standardnotes/syncing-server.git cd /tmp/syncing-server vim Dockerfile ``` 在 `RUN gem install bundler && bundle install` 之前添加 `RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/` 接着执行 `docker build -t std-server .` 命令来构建服务端镜像,之后,我们在 /tmp 下克隆 web 项目,并修改 Dockerfile ``` cd /tmp git clone --single-branch --branch main https://github.com/standardnotes/web.git cd web git submodule update --init --force --remote vim Dockerfile ``` 将 `FROM ruby:2.7.1-alpine ` 改为 `FROM ruby:2.6.5-alpine` 将 `RUN yarn install --pure-lockfile` 改为 `RUN yarn install --pure-lockfile --ignore-engines` 并在 `RUN yarn install --pure-lockfile --ignore-engines` 之前添加: ``` RUN npm config set registry https://registry.npm.taobao.org RUN npm config set sass-binary-site https://npm.taobao.org/mirrors/node-sass RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ ``` 同样的,执行 `docker build -t std-web .` 来构建镜像。 ## 创建配置文件 `mkdir /opt/notes && cp /tmp/syncing-server/.env.sample /opt/notes/.env.server` 然后修改 .env.server 里面的配置信息,并将 `RAILS_ENV` 的值改为 `production` 否则会老是要求你登录,具体看:[https://github.com/standardnotes/syncing-server/issues/143](https://github.com/standardnotes/syncing-server/issues/143) 同样的 `cp /tmp/web/.env.sample /opt/notes/.env.web` 然后修改下里面的配置信息。`RAILS_ENV` 的值最好也改为 `production` ## 启动 docker 实例 ``` sudo docker run -d -p 3000:3000 --env-file=/opt/notes/.env.server --name std-server --link mariadb:mariadb --link redis:redis std-server sudo docker run -d -p 3001:3001 --name std-web --env-file=/opt/notes/.env.web std-web ``` ## 插件与主题 ``` cd /opt/notes git clone https://github.com/iganeshk/standardnotes-extensions.git cd standardnotes-extensions ``` 然后,我们创建一个配置文件 `vim /opt/notes/standardnotes-extensions/.env` 内容如下: ``` # Sample ENV setup Variables (YAML) # Copy this file and update as needed. # # $ cp env.sample .env # # Do not include this new file in source control # Github Credentials # Generate your token here: https://github.com/settings/tokens # No additional permission required, this is just to avoid github api rate limits # domain: https://your.domain/third/extensions github: username: xxx token: xxx ``` 这里,your.domain 替换为你的实际域名,xxx 替换为你 github 的用户名和 token 即可。现在我们编译它 ``` pip3 install -r requirements.txt python3 build_repo.py ``` ## nginx 配置 ``` server { listen 80; listen [::]:80; server_name note.kpromise.top; charset uft-8; location / { proxy_pass http://localhost:3001/; proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; gzip off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /server { proxy_pass http://localhost:3000/; proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; gzip off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location ^~ /third/extensions { autoindex off; alias /opt/notes/standardnotes-extensions/public; # CORS HEADERS if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; # # Custom headers and headers various browsers *should* be OK with but aren't # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; # # Tell client that this pre-flight info is valid for 20 days # add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } if ($request_method = 'POST') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; } } } ```
十三
2021年6月1日 15:36
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码