Coder Social home page Coder Social logo

mindoc-org / mindoc Goto Github PK

View Code? Open in Web Editor NEW
7.0K 271.0 1.9K 89.86 MB

Golang实现的基于beego框架的接口在线文档管理系统

Home Page: https://mindoc.com.cn/docs/mindochelp

License: Apache License 2.0

Go 95.86% Smarty 2.35% Shell 0.02% PHP 0.06% HTML 0.02% Dockerfile 0.03% Batchfile 0.01% Less 1.66% Python 0.01%
mindoc golang beego smartwiki go document

mindoc's Introduction

MinDoc 简介

Build Status Build status

MinDoc 是一款针对IT团队开发的简单好用的文档管理系统。

MinDoc 的前身是 SmartWiki 文档系统。SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统。因 PHP 的部署对普通用户来说太复杂,所以改用 Golang 开发。可以方便用户部署和实用。

开发缘起是公司IT部门需要一款简单实用的项目接口文档管理和分享的系统。其功能和界面源于 kancloud 。

可以用来储存日常接口文档,数据库字典,手册说明等文档。内置项目管理,用户管理,权限管理等功能,能够满足大部分中小团队的文档管理需求。

演示站点&文档:

开发&维护&使用 悉知


安装与使用

如果你的服务器上没有安装golang程序请手动设置一个环境变量如下:键名为 ZONEINFO,值为MinDoc跟目录下的/lib/time/zoneinfo.zip 。

更多信息请查看手册: MinDoc 使用手册

对于没有Golang使用经验的用户,可以从 https://github.com/mindoc-org/mindoc/releases 这里下载编译完的程序。

如果有Golang开发经验,建议通过编译安装,要求golang版本不小于1.15.1(需支持CGOgo modimport _ "time/tzdata")(推荐Go版本为1.18.1)。

注意: CentOS7上GLibC版本低,常规编译版本不能使用。需要自行源码编译,或使用使用musl编译版本。

常规编译

# 克隆源码
git clone https://github.com/mindoc-org/mindoc.git
# go包安装
go mod tidy -v
# 编译(sqlite需要CGO支持)
go build -ldflags "-w" -o mindoc main.go
# 数据库初始化(此步骤执行之前,需配置`conf/app.conf`)
./mindoc install
# 执行
./mindoc
# 开发阶段运行
bee run

MinDoc 如果使用MySQL储存数据,则编码必须是utf8mb4_general_ci。请在安装前,把数据库配置填充到项目目录下的 conf/app.conf 中。

如果使用 SQLite 数据库,则直接在配置文件中配置数据库路径即可.

如果conf目录下不存在 app.conf 请重命名 app.conf.exampleapp.conf

默认程序会自动初始化一个超级管理员用户:admin 密码:123456 。请登录后重新设置密码。

Linux系统中不依赖gLibC的编译方式

安装 musl-gcc

wget -c http://musl.libc.org/releases/musl-1.2.2.tar.gz
tar -xvf musl-1.2.2.tar.gz
cd musl-1.2.2
./configure
make
sudo make install

使用 musl-gcc 编译 mindoc

go mod tidy -v
export GOARCH=amd64
export GOOS=linux
# 设置使用musl-gcc
export CC=/usr/local/musl/bin/musl-gcc
# 设置版本
export TRAVIS_TAG=temp-musl-v`date +%y%m%d`
go build -v -o mindoc_linux_musl_amd64 -ldflags="-linkmode external -extldflags '-static' -w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=`go version`'"
# 验证
./mindoc_linux_musl_amd64 version

Windows 上后台运行

使用 mindoc-daemon

#邮件配置-示例
#是否启用邮件
enable_mail=true
#smtp服务器的账号
smtp_user_name[email protected]
#smtp服务器的地址
smtp_host=smtp.ym.163.com
#密码
smtp_password=1q2w3e__ABC
#端口号
smtp_port=25
#邮件发送人的地址
form_user_name[email protected]
#邮件有效期30分钟
mail_expired=30

使用Docker部署

如果是Docker用户,可参考项目内置的Dockerfile文件自行编译镜像(编译命令见Dockerfile文件底部注释,仅供参考)。

在启动镜像时需要提供如下的常用环境变量(全部支持的环境变量请参考: conf/app.conf.example):

DB_ADAPTER                  指定DB类型(默认为sqlite)
MYSQL_PORT_3306_TCP_ADDR    MySQL地址
MYSQL_PORT_3306_TCP_PORT    MySQL端口号
MYSQL_INSTANCE_NAME         MySQL数据库名称
MYSQL_USERNAME              MySQL账号
MYSQL_PASSWORD              MySQL密码
HTTP_PORT                   程序监听的端口号
MINDOC_ENABLE_EXPORT        开启导出(默认为false)

举个栗子-当前(公开)镜像(信息页面: https://cr.console.aliyun.com/images/cn-hangzhou/mindoc-org/mindoc/detail , 需要登录阿里云账号才可访问列表)

Windows
set MINDOC=//d/mindoc
docker run -it --name=mindoc --restart=always -v "%MINDOC%/conf":"/mindoc/conf" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
Linux、Mac
export MINDOC=/home/ubuntu/mindoc-docker
docker run -it --name=mindoc --restart=always -v "${MINDOC}/conf":"/mindoc/conf" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
举个栗子-更多环境变量示例(镜像已过期,仅供参考,请以当前镜像为准)
docker run -p 8181:8181 --name mindoc -e DB_ADAPTER=mysql -e MYSQL_PORT_3306_TCP_ADDR=10.xxx.xxx.xxx -e MYSQL_PORT_3306_TCP_PORT=3306 -e MYSQL_INSTANCE_NAME=mindoc -e MYSQL_USERNAME=root -e MYSQL_PASSWORD=123456 -e httpport=8181 -d daocloud.io/lifei6671/mindoc:latest

dockerfile内容参考

docker-compose 一键安装

  1. 修改配置文件 修改docker-compose.yml中的配置信息,主要修改volumes节点,将宿主机的两个目录映射到容器内。 environment节点,配置自己的环境变量。

  2. 一键完成所有环境搭建

    docker-compose up -d

  3. 浏览器访问

    http://localhost:8181/

    整个部署完成了

  4. 常用命令参考

    • 启动

      docker-compose up -d

    • 停止

      docker-compose stop

    • 重启

      docker-compose restart

    • 停止删除容器,释放所有资源

      docker-compose down

    • 删除并重新创建

      docker-compose -f docker-compose.yml down && docker-compose up -d

      更多 docker-compose 的使用相关的内容 请查看官网文档或百度

项目截图

创建项目

创建项目

项目列表

项目列表

项目概述

项目概述

项目成员

项目成员

项目设置

项目设置

基于Editor.md开发的Markdown编辑器

基于Editor.md开发的Markdown编辑器

基于wangEditor开发的富文本编辑器

基于wangEditor开发的富文本编辑器

项目预览

项目预览

超级管理员后台

超级管理员后台

使用的技术(TODO: 最新技术栈整理中,使用的第三方库升级中)

主要功能

  • 项目管理,可以对项目进行编辑更改,成员添加等。
  • 文档管理,添加和删除文档等。
  • 评论管理,可以管理文档评论和自己发布的评论。
  • 用户管理,添加和禁用用户,个人资料更改等。
  • 用户权限管理 , 实现用户角色的变更。
  • 项目加密,可以设置项目公开状态,私有项目需要通过Token访问。
  • 站点配置,可开启匿名访问、验证码等。

参与开发

我们欢迎您在 MinDoc 项目的 GitHub 上报告 issue 或者 pull request。

如果您还不熟悉GitHub的Fork and Pull开发模式,您可以阅读GitHub的文档(https://help.github.com/articles/using-pull-requests) 获得更多的信息。

关于作者lifei6671

一个不纯粹的PHPer,一个不自由的 gopher 。

部署补充

  • 若内网部署,draw.io无法使用外网,则需要用tomcat运行war包,见(https://github.com/jgraph/drawio) 从release下载,之后修改markdown.js的TODO行对应的链接即可

  • 为了护眼,简单增加了编辑界面的主题切换,见editormd.js和markdown_edit_template.tpl

  • (需重新编译项)为了对已删除文档/文档引用图片删除文字后,对悬空无引用的图片/附件进行清理,增加了清理接口,需重新编译

    • 编译后除二进制文件外还需更新三个文件: conf/lang/en-us.ini,zh-cn.ini; attach_list.tpl
    • 若不想重新编译,也可通过database/clean.py,手动执行对无引用图片/附件的文件清理和数据库记录双向清理。
  • 若采用nginx二级部署,以yourpath/为例,需修改

    • conf/app.conf修改:baseurl="/yourpath"

    • static/js/kancloud.js文件中url: "/comment/xxxxx => url: "/yourpath" + "/comment/xxxxx, 共两处

    • nginx端口代理示例:

    增加
    location  /yourpath/ {
         rewrite ^/yourpath/(.*) /$1  break;
         proxy_pass http://127.0.0.1:8181;
    }
    

    注意使用的是127.0.0.1,根据自身选择替换,如果nginx是docker部署,则还需要在docker中托管运行mindoc,具体参考如下配置:

    • docker-compose代理示例(docker-nginx代理运行mindoc)
    version: '3'
    services:
      mynginx:
      image: nginx:latest
      ports:
        - "8880:80"
      command: 
        - bash
        - -c
        - |
            service nginx start
            cd /src/mindoc/ && ./mindoc
      volumes:
        - ..:/src
        - ./nginx:/etc/nginx/conf.d
    

    目录结构

    onefolder
    |
      - docker
      |
        - docker-compose.yml
        - nginx
        |
          - mynginx.conf
      
      - mindoc
      |
        - database/
        - conf/
        - ...
    

mindoc's People

Contributors

augists avatar dandycheung avatar dependabot[bot] avatar ehlxr avatar fifsky avatar go-go-farther avatar gsw945 avatar haimait avatar harryhan1989 avatar hz-bin avatar ifengkou avatar igo9go avatar jh244212647 avatar lawyzheng avatar lifei6671 avatar liyang1009 avatar meadlai avatar qufeng33 avatar roberchen avatar saozimian avatar seanly avatar shiqstone avatar sylingd avatar wenj91 avatar xiangshenb avatar xieyg7919 avatar xzfff avatar ydf avatar zhaogaolong avatar zhuizhubf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mindoc's Issues

导出pdf中的图片资源问题

用wkhtmltopdf分页导出pdf功能很强大,但是文档中的图片没有导出。临时页面html文件在服务器cache目录下无法引用/uploads/目录下上传的图片。
wkhtmltopdf的命令中,如果把分页文件放在/uploads/目录下的临时文件夹,再加上 http://127.0.0.1:8181 前缀,应该可以访问上传的图片,不过导出时经过服务器请求静态页面。

win7下安装不成功

C:\Users\huangzuqiang\Desktop\godoc>.\godoc_windows_amd64.exe
MinDoc version => 0.1.2
build time => Fri May 5 12:00:02 UTC 2017
start directory => .\godoc_windows_amd64.exe
go version go1.8.1 linux/amd64
[ORM]2017/05/08 16:39:43 register db Ping default, open /usr/local/go\lib\time
\zoneinfo.zip: The system cannot find the path specified.
must have one register DataBase alias named default

build 过程出错

go get -d ./...

输出如下
vendor/github.com/garyburd/redigo/redis/pool.go:28:2: use of internal package not allowed

针对V0.2 关于mindoc一点建议

1、后台管理-项目管理
可以增加添加项目,不然还要跑到个人项目管理去添加。感觉使用上不方便
2、超级管理员在仪表盘可以看所有文章的列表或者标题以及附件内容,而不是只是显示数目
3、在私有项目分配权限的时候添加用户应该采用列表选择或者分组选择,而不是手动输入用户名
4、添加用户分组功能

文章的保存与发布

对这两个功能有点不明白:
文章修改的内容必须保存并且发布之后,才会在阅读那边看到,为何不做成点发布以后,就直接自动保存+发布,这样可以省去一次操作。又或者干脆两个功能合并在一起,保存发布一次完成?

beego:runtime error: invalid memory address or nil pointer dereference

beego:runtime error: invalid memory address or nil pointer dereference
Request Method: GET
Request URL: /
RemoteAddr: 61.149.254.18
Stack

/home/travis/.gimme/versions/go1.8.linux.amd64/src/runtime/asm_amd64.s:514
/home/travis/.gimme/versions/go1.8.linux.amd64/src/runtime/panic.go:489
/home/travis/.gimme/versions/go1.8.linux.amd64/src/runtime/panic.go:63
/home/travis/.gimme/versions/go1.8.linux.amd64/src/runtime/signal_unix.go:290
/home/travis/gopath/src/github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/controller.go:578
/home/travis/gopath/src/github.com/lifei6671/godoc/controllers/base.go:30
/home/travis/gopath/src/github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/router.go:775
/home/travis/.gimme/versions/go1.8.linux.amd64/src/net/http/server.go:2568
/home/travis/.gimme/versions/go1.8.linux.amd64/src/net/http/server.go:1825
/home/travis/.gimme/versions/go1.8.linux.amd64/src/runtime/asm_amd64.s:2197

beego 1.8.0 (beego framework)

golang version: go1.8

只有导出为何不增加导入office和PDF文档呢。

很多东西都已经做了office文件,一个个复制粘贴之后进去排版。比较费力,尤其有图片的。更麻烦,一个个放抠出来,在排版。为何不做个添加OFFice导入功能呢?PDF应该可以啊
还有个就是多部门未必每个人都可以参与进来,他们只要查阅,单独开个窗口不需要登录都可以查看公开项目。
项目转让出去超级管理员应该可以控制所有项目才对。同事用户不能删除的BUG。项目转让超级管理无法对项目控制了。

分享url显示localhost:8181

mindoc放在nginx后面,分享出来的网址会包含localhost:8181
还有编辑项目时候的“标识”也是同样问题

pdf导出配置说明有点简单

不大明白 应该怎么去配置 这个wkhtmltopdf的参数; 我已经将wkhtmltox 解压到了linux的一个目录 ;然后呢;该如何去配置 ; 要注意什么;

不支持多人编辑

不能像项目分组一样公开的项目,项目组成员(身份为管理员的)都可以编辑同一个文档

go get error

godoc/vendor/github.com/astaxie/beego/toolbox
godoc/vendor/github.com/bradfitz/gomemcache/memcache
godoc/vendor/github.com/astaxie/beego/session
godoc/vendor/github.com/go-sql-driver/mysql
godoc/vendor/github.com/garyburd/redigo/internal
godoc/vendor/github.com/garyburd/redigo/redis
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/config
godoc/vendor/github.com/astaxie/beego/context
godoc/vendor/github.com/astaxie/beego/session/memcache
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/utils
godoc/vendor/github.com/astaxie/beego/session/redis
godoc/vendor/github.com/astaxie/beego
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/grace
godoc/vendor/github.com/astaxie/beego/session/mysql
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/session
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/logs
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/toolbox
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/context
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/orm
github.com/lifei6671/godoc/vendor/golang.org/x/image/math/fixed
github.com/lifei6671/godoc/vendor/github.com/golang/freetype/raster
github.com/lifei6671/godoc/vendor/golang.org/x/image/font
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego
github.com/lifei6671/godoc/vendor/github.com/golang/freetype/truetype
github.com/lifei6671/godoc/vendor/github.com/boombuler/barcode
github.com/lifei6671/godoc/vendor/github.com/boombuler/barcode/utils
github.com/lifei6671/godoc/vendor/github.com/boombuler/barcode/qr
github.com/lifei6671/godoc/vendor/github.com/golang/freetype
github.com/lifei6671/godoc/vendor/github.com/lifei6671/gocaptcha
github.com/lifei6671/godoc/vendor/github.com/nfnt/resize
github.com/lifei6671/godoc/utils/wkhtmltopdf
github.com/lifei6671/godoc/conf
github.com/lifei6671/godoc/graphics
github.com/lifei6671/godoc/utils
github.com/lifei6671/godoc/models
github.com/lifei6671/godoc/commands
github.com/lifei6671/godoc/controllers
github.com/lifei6671/godoc/routers
godoc

godoc

./main.go:29: cannot use controllers.ErrorController literal (type controllers.ErrorController) as type "godoc/vendor/github.com/astaxie/beego".ControllerInterface in argument to "godoc/vendor/github.com/astaxie/beego".ErrorController:
controllers.ErrorController does not implement "godoc/vendor/github.com/astaxie/beego".ControllerInterface (wrong type for Init method)
have Init(
"github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/context".Context, string, string, interface {})
want Init(
"godoc/vendor/github.com/astaxie/beego/context".Context, string, string, interface {})

文件导出导入问题

这个导出PDF经常出问题,是否开放导入功能呢。pdf文档office文档呢?文档搜索也没加亮,这个不好

本地跑不起来

2017/05/23 10:11:39 SUCCESS ▶ 0016 './godoc' is running...
./godoc flag redefined: graceful
panic: ./godoc flag redefined: graceful

goroutine 1 [running]:
flag.(*FlagSet).Var(0xc0420381e0, 0xdfa6e0, 0xe54f55, 0xb0c8d0, 0x8, 0xb21c18, 0x21)
C:/Go/src/flag/flag.go:793 +0x427
flag.BoolVar(0xe54f55, 0xb0c8d0, 0x8, 0x0, 0xb21c18, 0x21)
C:/Go/src/flag/flag.go:572 +0x79
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/grace.init.1()
C:/dev/golang/src/github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/grace/grace.go:93 +0x67
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/grace.init()
C:/dev/golang/src/github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/grace/server.go:307 +0x90
github.com/lifei6671/godoc/vendor/github.com/astaxie/beego.init()
C:/dev/golang/src/github.com/lifei6671/godoc/vendor/github.com/astaxie/beego/tree.go:581 +0x8e
github.com/lifei6671/godoc/conf.init()
C:/dev/golang/src/github.com/lifei6671/godoc/conf/mail.go:38 +0x50
main.init()
C:/dev/golang/src/godoc/main.go:35 +0x6e

建议增强

做的很不错啊

  1. 右侧添加类似目录功能。类似 teakki.com ,要不宽屏看文档时太宽不好看
  2. 左侧添加子文档,和上一级首字离的太远了

数据库结构升级

目前升级数据库结构使用func mysqlUpdate() ,建议以后改成migration的方式,不然这个func会越来越复杂

导出pdf异常

系统环境Linux
错误日志2017/05/24 16:13:53 [E] [document.go:781] fork/exec D:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe: no such file or directory

release 中的文件不能运行?

我尝试下载了 v0.1.1 的 godoc_linux_amd64.tar.gzgodoc_windows_amd64.zip,分别在 Linux 和 Windows 下运行都失败了。

Linux :

~ ./godoc_linux_amd64
zsh: no such file or directory: ./godoc_linux_amd64

Windows:直接运行或者使用 vbs 都直接推出,也没有任何日至打印出来。

dev分支 管理后台->配置管理 无法打开

log显示·[E] [server.go:2568] template: manager/setting.tpl:84:61: executing "manager/setting.tpl" at <eq .ENABLE_DOCUMENT_...>: error calling eq: invalid type for comparison·
模版有问题

附件问题

html编辑器下面没办法添加附件?好多东西都都要添加进去。比如音频一些软件文件啊。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.