群晖Docker安装Benotes自托管笔记和书签网络应用程序

介绍

  • 一个开源的自托管笔记和书签网络应用程序。支持网页版和移动端,优点是自动截图生成简介。

  • URL 会自动保存图像、标题和描述

  • 支持 Markdown 和 RTF 编辑器

  • 可以作为 PWA 安装在移动设备(和桌面)上

  • 通过此应用程序共享内容(如果作为 PWA 安装并受浏览器支持)

  • 集合可以通过公共可用 URL 共享

  • 链接可以立即粘贴为新帖子

  • 由于它使用了轻量级的 Lumen 框架和得到良好支持的 PHP 语言,几乎可以托管在任何地方

  • 无论是否使用持久存储层(支持文件系统和 S3),都可以使用。

  • 也可以通过 Docker 或 Heroku 托管

  • 通过每日备份保护您的数据

安装教程

docker-compose方式安装

  1. 在群晖套件中心安装Git Server套件

  2. 打开群晖的SSH功能,使用终端软件进行连接,并切换到root状态下。

  3. 进入群晖的docker文件夹(你想将容器数据存储到哪就进哪个文件夹)

    cd /volume1/docker
    Bash
  4. 对群晖docker文件夹设置读写权限为everyone(容器数据文件存放在哪就设置哪个文件夹)

    chmod -R 777 /volume1/docker
    Bash
  5. 可怜项目文件到本地

    git clone https://github.com/fr0tt/benotes.git
    Bash
  6. 进入benotes文件夹

    cd benotes
    Bash
  7. 克隆docker-compose模板文件到本地

    git clone https://github.com/fr0tt/benotes_docker-compose
    Bash
  8. 将storage文件夹复制到benotes_docker-compose文件夹内

    #如果你的安装路径不同,就自行替换你的文件夹路径,不要傻傻的照抄。
    cp -r storage /volume1/docker/benotes/benotes_docker-compose
    Bash
  9. 进入文件夹benotes_docker-compose

    cd benotes_docker-compose
    Bash
  10. 创建postgres文件夹,用于存储数据库文件。

    mkdir postgres
    Bash
  11. 将.env.example文件更名为.env
    (如果要修改容器端口就编辑此文件)

    cp .env.example .env
    Bash
  12. 修改docker-compose.yml模板文件

    vi docker-compose.yml
    Undefined
  13. 按字母 i 键进入编辑模式,修改成下面的配置文件,粘贴到终端,按Esc键退出编辑模式,输入 :wq 退出并保存。

    version: "3.6"
    services:
      app:
        container_name: benotes_app
        image: fr0tt/benotes:latest
        restart: unless-stopped
        environment:
          DB_CONNECTION: ${DB_CONNECTION}
        ports:
          - ${APP_PORT}:80
        volumes:
          - .env:/var/www/.env
          #- ./data/storage/app/public/thumbnails:/var/www/storage/app/public/thumbnails
          #- ./data/storage/backup:/var/www/storage/backup
          #- ./data/storage/logs:/var/www/storage/logs
          # or instead one named volume to rule them all:   
          - /volume1/docker/benotes/benotes_docker-compose/storage:/var/www/storage     #将前面的路径换成你的文件夹路径
          # this is optional (either way):
          #- ./data/nginx/logs/:/var/lib/nginx/logs/
        networks:
          - benotes
    
      db:
        container_name: benotes_db
        image: postgres:15.2-alpine
        restart: unless-stopped
        environment:
          POSTGRES_DATABASE: ${DB_DATABASE}
          POSTGRES_USER: ${DB_USERNAME}
          POSTGRES_PASSWORD: ${DB_PASSWORD}
        ports:
          - ${DB_PORT}
        volumes:
          - /volume1/docker/benotes/benotes_docker-compose/postgres:/var/lib/postgresql/data     #将前面的路径换成你的文件夹路径
        networks:
          - benotes
      #
      # If you wish to use MySQL instead remove the lines above, uncomment the following
      # and change DB_PORT in your .env file to 3306
      #
      # db:
      #   container_name: benotes_db
      #   image: mysql:5.7
      #   restart: unless-stopped
      #   environment:
      #     MYSQL_DATABASE: ${DB_DATABASE}
      #     MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      #     MYSQL_USER: ${DB_USERNAME}
      #     MYSQL_PASSWORD: ${DB_PASSWORD}
      #   ports:
      #     - ${DB_PORT}
      #   volumes:
      #     - benotes_mysql:/var/lib/mysql
      #   networks:
      #     - benotes
    
    networks:
      benotes:
        driver: bridge
    
    volumes:
      benotes_postgres:
        driver: "local"
      # benotes_mysql:
      #   driver: "local"
      benotes_storage:
        driver: "local"
    
    YAML
  14. 对拉取下来的项目文件夹授权访问权限
    (演示直接将存放benotes的整个文件夹进行授权,任何人都可以读写。你也可以设置个详细的。)

    chmod -R 777 /volume1/docker
    Bash
  15. 执行命令,启动docker-compose文件,拉取镜像并创建容器。

    docker-compose up -d
    Undefined
  16. 查看正在运行的容器

    docker-compose ps
    Undefined
  17. 到此,只有benotes文件夹内的benotes_docker-compose文件夹有用,其余的无用处。
    其余文件也没多少兆,没必要删除。

初始化容器

  1. 复制下面的命令粘贴到终端内

    docker-compose exec --user application app sh
    SQL
  2. 执行初始化安装命令

    php artisan install
    Undefined
  3. 根据提示进行输入,如果询问就输入y确认。

    root@nas:/volume1/docker/benotes_docker-compose# docker-compose exec --user application app sh    #进入容器交互界面
    /var/www $ php artisan install    #执行初始化安装
    Initiate installation...
    
    
     0/4 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░]   0%
    
    Application key set successfully.
    
     This will invalidate all existing tokens. Are you sure you want to override the secret key? (yes/no) [no]:
     > y    #如果有此提示就输入y,按Enter键确认。
    
    jwt-auth secret [I359TpbctI6i1vlzr2LPCnWnxBRW4yaUpeYdvfM5fOkyyfpaOoc0cy0O6m1vXZie] set successfully.
    
    
     2/4 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░]  50%
    
    **************************************
    *     Application In Production!     *
    **************************************
    
     Do you really wish to run this command? (yes/no) [no]:
     > y    #如果有此提示就输入y,按Enter键确认。
    
    Nothing to migrate.
    
    
     3/4 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░]  75%
    
    Create your Admin account:
    
     Username [Admin]:
     > S20306    #设置管理员账号
    
     Email:
     > 8*******@qq.com    #设置管理员邮箱
    
     Password:
     >    #设置密码
    
     Re-entered password:
     >    #再次输入密码
    
     4/4 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
    
    Installation complete.
    /var/www $ exit    #退出容器交互界面
    
    Bash
  4. 查看正在运行的容器

    docker-compose ps
    Undefined

访问Benotes

  1. 打开浏览器,以群晖的IP+设置的端口进行访问。
    以本机为例:http://172.16.19.6:8000
    输入设置好的账户密码进行登录

  2. 登录成功

  3. 点击右上角Create,添加一个收藏网页。

  4. 设置一个标签,输入想要保存的网页链接,点击保存。

  5. 抓取网站保存成功
    虽然获取到了文章的信息,但是图片没出来,主要是因为 jsdelivr 在国内没有备案。
    cdn.jsdelivr.net 加入科学上网的白名单,就可以了。
    (jsDelivr 是一个提供含 JavaScript 库、 jQuery 插件、 CSS 框架、字体等 Web 上经常使用静态资源的服务,采用全球 CDN 加速,确保每一个地区的使用者都能得到最好的链接速度,大陆地区使用国内 CDN 加速 jsDelivr 可将不一样的 JavaScript 或 CSS 库集合在一块儿使用, jsDelivr 提供包扣 npm 、 ESM 、 GitHub 、 WordPress 等项目的镜像服务。)

  6. 部分网站需要等一会才能显示出来,等待即可。

  7. 需要再次访问网站的时候直接点击对应的即可。

  8. 如果需要新创建分类
    点击Create a new collection--设置分类名--选择图标--保存。

  9. 点击Uncategorized--对应的收藏网页--Transfer

  10. 选择分类--Transfer即可

  11. 划到分类成功,需要等待个十秒钟到半分钟才会在里面显示。

  12. 其余的自己探索即可。

项目地址

功德+1(狗子).gif

👇👇👇