跳转至内容

源码仓库

4 主题 4 帖子

优化建站源码,或Docker,也或者Github推荐!

此版块可通过开放社交网络使用标识符 源码库@www.cnp.cc 关注

  • 0 赞同
    1 帖子
    1 浏览
    L
    Shiori - 简洁高效的开源书签管理器 Shiori 是一款使用 Go 语言开发的简单书签管理工具,作为 Pocket 的开源替代品,支持网页离线归档、全文搜索、多数据库等功能,是知识管理和网页收藏的理想选择。 推荐理由 单二进制文件:单个可执行文件,无需依赖,部署简单 离线网页归档:自动保存网页可读内容和离线归档,防止链接失效 多数据库支持:支持 SQLite3、PostgreSQL、MariaDB、MySQL 多种数据库 双模式使用:既可作为命令行工具,也可作为 Web 应用使用 数据导入导出:支持从 Pocket 导入,支持 Netscape 书签格式导入导出 仓库信息 GitHub 地址:https://github.com/go-shiori/shiori 文档:https://github.com/go-shiori/shiori/blob/master/docs/index.md Stars:11,500+ 协议:MIT 技术栈:Go / JavaScript / TypeScript / Vue 核心功能 基础书签管理:添加、编辑、删除、搜索书签 离线网页归档:自动保存网页内容和截图 阅读模式:提取网页正文,去除广告干扰 全文搜索:快速搜索书签标题、内容、标签 标签管理:灵活的标签分类系统 浏览器扩展:支持 Firefox 和 Chrome 扩展 多数据库:SQLite、PostgreSQL、MySQL、MariaDB 数据迁移:支持从 Pocket 导入书签 Docker 部署(推荐) 方式一:Docker 一键启动 # 基础启动 docker run -d --name shiori -p 8080:8080 -v $(pwd)/shiori-data:/shiori ghcr.io/go-shiori/shiori:latest # 带环境变量启动 docker run -d \ --name shiori \ -p 8080:8080 \ -e SHIORI_DIR=/shiori \ -e SHIORI_DB=sqlite \ -v $(pwd)/shiori-data:/shiori \ --restart unless-stopped \ ghcr.io/go-shiori/shiori:latest 方式二:Docker Compose 部署 # 创建 docker-compose.yml version: '3' services: shiori: image: ghcr.io/go-shiori/shiori:latest container_name: shiori restart: unless-stopped ports: - "8080:8080" environment: - SHIORI_DIR=/shiori - SHIORI_DB=sqlite volumes: - ./shiori-data:/shiori # 启动服务 docker-compose up -d 部署完成后访问 http://localhost:8080,默认账号:shiori / 密码:gopher 使用 PostgreSQL 数据库(可选) # 使用 PostgreSQL 作为后端数据库 docker run -d \ --name shiori \ -p 8080:8080 \ -e SHIORI_DIR=/shiori \ -e SHIORI_DB=postgresql \ -e SHIORI_PG_USER=shiori \ -e SHIORI_PG_PASS=password \ -e SHIORI_PG_NAME=shiori \ -e SHIORI_PG_HOST=postgres \ -e SHIORI_PG_PORT=5432 \ -v $(pwd)/shiori-data:/shiori \ --restart unless-stopped \ ghcr.io/go-shiori/shiori:latest 二进制文件安装 # 下载对应平台的二进制文件 # 从 GitHub Releases 页面下载:https://github.com/go-shiori/shiori/releases # Linux/macOS 示例 wget https://github.com/go-shiori/shiori/releases/download/v1.8.0/shiori_Linux_x86_64.tar.gz tar -xzf shiori_Linux_x86_64.tar.gz chmod +x shiori ./shiori server 命令行使用 # 添加书签 shiori add https://example.com # 搜索书签 shiori search keyword # 打印书签内容 shiori print 1 # 删除书签 shiori delete 1 # 启动 Web 服务 shiori server 适用场景 个人知识管理、网页收藏归档、稍后阅读工具、资料整理、书签备份、离线阅读、Pocket 替代品 对比传统工具 功能 Shiori Pocket Raindrop 开源免费 MIT 免费版有限制 免费版有限制 自托管 离线归档 全文搜索 单文件部署 多数据库
  • 0 赞同
    1 帖子
    10 浏览
    L
    一、项目简介 GooseForum 是一个现代化的技术交流社区平台,采用 Go + Vue 3 + TailwindCSS 技术栈开发。项目保持简单部署,同时通过服务端 payload 驱动 SPA 体验,并保留 no-js HTML 渲染用于 SEO 和降级访问。 GitHub 地址:https://github.com/leancodebox/GooseForum 在线体验:https://gooseforum.online/ 开源协议:MIT License 二、核心特性 2.1 用户体系 用户注册/登录 — 支持邮箱激活 权限管理 — 基于角色的权限控制 用户中心 — 个人资料管理、头像上传 积分系统 — 签到、发帖、回复奖励 管理后台 — 完整的后台管理功能 2.2 内容管理 文章发布 — Markdown 编辑器+预览 评论系统 — 多级评论回复 文章分类 — 灵活的分类管理 实时通知 — WebSocket 驱动通知 聊天系统 — 实时消息 2.3 技术特性 单文件部署 — 编译后单个可执行文件 SQLite/MySQL 支持 — 默认 SQLite,可选 MySQL 自动备份 — 定时数据库备份 响应式设计 — 完美支持移动端 品牌定制 — 支持自定义 Logo/文字/图片 Payload 驱动 SPA — 服务端输出页面 payload,前端提供平滑站内切换 SEO 友好 — 轻量 no-js GoHTML 渲染,兼顾搜索引擎和降级访问 三、快速开始 3.1 方式一:下载预编译版本(推荐) 从 GitHub Releases 下载预编译版本 解压并启动: # 解压 tar -zxvf GooseForum_Linux_x86_64.tar.gz # 赋予权限 chmod +x ./GooseForum # 启动服务 ./GooseForum serve 访问 http://localhost:5234 提示:首次启动后,第一个注册的账号将自动成为管理员 3.2 使用 GoReleaser 构建 # 安装 GoReleaser go install github.com/goreleaser/goreleaser@latest # 构建所有平台 goreleaser build --snapshot --clean # 构建当前平台 goreleaser build --snapshot --clean --single-target 3.3 方式二:从源码构建 环境要求: Go 1.24+ Node.js 18+ pnpm 构建步骤: # 克隆项目 git clone https://github.com/leancodebox/GooseForum.git cd GooseForum # 构建前端 cd resource && pnpm install && pnpm build && cd .. # 构建后端 go mod tidy go build -ldflags="-w -s" . # 启动服务 ./GooseForum serve 3.4 开发模式 # 后端热重载 air # 主站和管理后台前端 cd resource && pnpm dev 四、配置说明 GooseForum 启动时自动创建 config.toml: [app] env = "production" # local 或 production [server] port = 5234 # 服务端口 url = "http://localhost" # 站点 URL [db.default] connection = "sqlite" # 数据库类型 (sqlite/mysql) path = "./storage/database/sqlite.db" 详细配置说明:配置文档 五、技术架构 5.1 后端技术栈 Go 1.24+ — 主要开发语言 Gin — Web 框架 GORM — ORM 框架 SQLite/MySQL — 数据库支持 JWT — 身份认证 Cobra — 命令行工具 5.2 前端技术栈 Vue 3 — 主站和管理后台 UI 框架 TypeScript — 前端类型支持 Payload SPA Runtime — 通过 X-Goose-Page JSON payload 实现站内导航 TailwindCSS 4 — CSS 框架 GoHTML — 轻量 no-js/SEO 模板 Vite — 构建工具 5.3 管理后台技术栈 Vue 3 + TypeScript — 管理后台应用 TailwindCSS 4 — 独立样式和设计变量 Reka UI / VueUse — 可访问性基础组件和交互工具 Unovis — 图表和统计可视化 SortableJS / vuedraggable — 运营列表拖拽排序 六、项目结构 GooseForum/ ├── app/ # 后端代码 │ ├── bundles/ # 工具包(JWT、缓存、事件) │ ├── console/ # CLI 命令 │ ├── http/ # 控制器、中间件、路由 │ ├── models/ # GORM 模型 │ └── service/ # 业务服务 ├── resource/ # 前端资源 │ ├── src/ │ │ ├── site/ # 主站 Vue 应用 │ │ ├── admin/ # 管理后台 Vue 应用 │ │ ├── runtime/ # 共享 payload 运行时 │ │ ├── styles/ # 主站样式 │ │ └── types/ # 共享前端类型 │ ├── static/ # 静态资源 │ └── templates/ # no-js/SEO GoHTML 模板 ├── docs/ # 文档 ├── main.go # 程序入口 └── config.toml # 配置文件 七、管理功能 7.1 命令行管理 # 设置管理员 ./GooseForum set-user-admin <用户ID> # 设置用户邮箱 ./GooseForum set-user-email <用户ID> <邮箱> # 重置用户密码 ./GooseForum set-user-password <用户ID> <密码> 7.2 管理后台功能 用户管理 — 搜索、筛选、封禁、删除用户 站点设置 — 基本信息、品牌设置、Footer、邮件、安全、发帖设置 分类管理 — 创建、编辑、删除分类 赞助商管理 — 赞助商等级和用户赞助记录 仪表盘 — 流量统计、每日数据 7.3 数据备份 自动定时备份 SQLite 数据库 可配置备份频率和保留数量 备份文件存储在 ./storage/databasebackup/ 目录 八、部署建议 8.1 生产环境部署 使用反向代理(Nginx/Apache) 配置 HTTPS 证书 设置定时备份 监控日志文件 8.2 Docker 部署 FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY GooseForum . CMD ["./GooseForum", "serve"] 九、相关文档 配置文档 — 详细的配置选项说明 Resource 前端设计 Resource UI 规范 文章置顶方案 Resource 管理后台现状
  • 0 赞同
    1 帖子
    4 浏览
    L
    一、项目简介 MeTube 是一款自托管的 Web UI 工具,基于强大的 yt-dlp 引擎,支持从 YouTube 及数十个其他网站下载视频、音频、字幕和缩略图。 核心能力: 通过浏览器界面下载视频、音频、字幕和缩略图 下载播放列表和频道,支持自定义输出和下载选项 订阅频道和播放列表,定期检查新内容并自动排队下载 GitHub 地址:https://github.com/alexta69/metube 开源协议:AGPL-3.0 Docker 镜像:ghcr.io/alexta69/metube 二、快速部署 2.1 使用 Docker 运行 docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube 2.2 使用 Docker Compose 运行 services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads 部署完成后,访问 http://your-server-ip:8081 即可打开 MeTube 的 Web 界面。 三、环境变量配置 所有配置项均可通过 Docker 命令行的 -e 参数或 docker-compose 的 environment: 字段设置。 3.1 下载行为 环境变量 说明 默认值 MAX_CONCURRENT_DOWNLOADS 最大同时下载数 3 DELETE_FILE_ON_TRASHCAN 在 UI 中删除时同时删除服务器文件 false DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT 播放列表最大下载项数 0(无限制) SUBSCRIPTION_DEFAULT_CHECK_INTERVAL 订阅自动检查间隔(分钟) 60 SUBSCRIPTION_SCAN_PLAYLIST_END 每次订阅检查最大获取条目数 50 SUBSCRIPTION_MAX_SEEN_IDS 每个订阅存储的视频 ID 上限 50000 CLEAR_COMPLETED_AFTER 完成后自动清除的秒数 0(禁用) 3.2 存储与目录 环境变量 说明 默认值 DOWNLOAD_DIR 视频下载目录 /downloads AUDIO_DOWNLOAD_DIR 音频专用下载目录 同 DOWNLOAD_DIR CUSTOM_DIRS 启用自定义下载子目录 true CREATE_CUSTOM_DIRS 自动创建不存在的目录 true STATE_DIR 状态文件存储目录 /downloads/.metube TEMP_DIR 临时下载文件目录 /downloads 提示:将 TEMP_DIR 设置为 SSD 或 RAM 文件系统(如 tmpfs)可提升性能,但使用 RAM 文件系统可能导致下载无法恢复。 3.3 文件命名与 yt-dlp 环境变量 说明 默认值 OUTPUT_TEMPLATE 视频文件命名模板 %(title)s.%(ext)s OUTPUT_TEMPLATE_PLAYLIST 播放列表命名模板 %(playlist_title)s/%(title)s.%(ext)s OUTPUT_TEMPLATE_CHANNEL 频道命名模板 %(channel)s/%(title)s.%(ext)s YTDL_OPTIONS 额外的 yt-dlp 选项(JSON 格式) - YTDL_OPTIONS_FILE yt-dlp 选项 JSON 文件路径 - YTDL_OPTIONS_PRESETS 命名的 yt-dlp 选项预设 - YTDL_OPTIONS_PRESETS_FILE 预设 JSON 文件路径 - ALLOW_YTDL_OPTIONS_OVERRIDES 允许 UI 中自定义 yt-dlp 选项 false 3.4 Web 服务器与 URL 环境变量 说明 默认值 HOST 服务器绑定地址 0.0.0.0 PORT 服务器监听端口 8081 URL_PREFIX 反向代理基础路径 / PUBLIC_HOST_URL 下载链接的基础 URL - HTTPS 启用 HTTPS false CORS_ALLOWED_ORIGINS 允许跨域请求的来源列表 空(拒绝所有) 3.5 基础设置 环境变量 说明 默认值 PUID / PGID 运行用户/组 ID 1000 DEFAULT_THEME UI 主题(light/dark/auto) auto LOGLEVEL 日志级别 INFO 四、yt-dlp 选项配置详解 MeTube 支持三个层级的 yt-dlp 选项配置,从全局到具体依次为: 全局选项 — 适用于所有下载 预设(Presets) — 命名的选项包,用户可在 UI 中按下载选择 单次下载覆盖 — 在 UI 中为单个下载输入的自由格式选项 当下载启动时,这些层级按顺序合并。如果同一选项出现在多个层级中,更具体的层级优先:单次覆盖 > 预设 > 全局选项。 4.1 全局选项 方式一:通过环境变量内联 environment: - 'YTDL_OPTIONS={"writesubtitles": true, "subtitleslangs": ["en", "de"], "updatetime": false, "writethumbnail": true}' 方式二:通过 JSON 文件 volumes: - /path/to/ytdl-options.json:/config/ytdl-options.json environment: - YTDL_OPTIONS_FILE=/config/ytdl-options.json JSON 文件内容示例: { "writesubtitles": true, "subtitleslangs": ["en", "de"], "updatetime": false, "writethumbnail": true } 文件会被自动监控,修改后无需重启容器。如果两种方式同时使用且定义了相同的键,文件优先。 4.2 预设(Presets) 预设文件示例: { "sponsorblock": { "postprocessors": [ { "key": "SponsorBlock", "categories": ["sponsor", "selfpromo", "interaction"] }, { "key": "ModifyChapters", "remove_sponsor_segments": ["sponsor", "selfpromo", "interaction"] } ] }, "embed-subs": { "writesubtitles": true, "writeautomaticsub": true, "subtitleslangs": ["en", "de"], "postprocessors": [{ "key": "FFmpegEmbedSubtitle" }] }, "limit-rate": { "ratelimit": 5000000 } } 以上预设含义: sponsorblock — 去除视频中的赞助商、自我推广和互动片段 embed-subs — 下载英德字幕并嵌入视频文件 limit-rate — 限制下载速度约 5 MB/s 4.3 单次下载覆盖 启用方式: environment: - ALLOW_YTDL_OPTIONS_OVERRIDES=true ️ 安全提示:启用此功能允许任何有 UI 访问权限的人提供任意 yt-dlp API 选项,根据使用的选项,可能允许在容器内执行任意命令。仅在受信任的环境中启用。 五、浏览器 Cookie 使用 如需使用浏览器 Cookie 下载受限或私密视频: 安装浏览器 Cookie 导出扩展: Firefox 扩展 Chrome 扩展 导出 Cookie 为 cookies.txt 文件 在 MeTube 中打开 Advanced Options,点击 Upload Cookies 上传文件 上传后 Cookie 指示器将显示为激活状态 六、浏览器扩展 浏览器扩展支持右键点击视频直接发送到 MeTube。使用扩展时需设置 CORS_ALLOWED_ORIGINS=*。 Chrome:由 Rpsl 贡献,可从 Chrome Web Store 安装 Firefox:由 nanocortex 贡献 七、相关链接 GitHub 仓库:https://github.com/alexta69/metube Docker 镜像:ghcr.io/alexta69/metube yt-dlp 项目:https://github.com/yt-dlp/yt-dlp 配置 Cookbook:MeTube Wiki
  • 0 赞同
    1 帖子
    8 浏览
    L
    Artalk 开源评论系统搭建教程:Go + Vue 轻量级自托管评论系统完整部署指南 一、Artalk 是什么? Artalk 是一款直观且功能丰富的自托管评论系统,可立即部署到任何博客、网站或 Web 应用中。前端使用纯 Vanilla JS 构建(约 40KB),不依赖任何框架;后端使用 Golang 开发,高效轻量且跨平台。支持 Docker 一键部署,开源免费,隐私优先。 项目地址: https://github.com/ArtalkJS/Artalk 官方网站: https://artalk.js.org/ 在线文档: https://artalk.js.org/en/guide/deploy.html 最新版本: v2.9.1 开源协议: MIT License 技术栈: Go 44.7% / TypeScript 38.9% / Vue 7.9% / SCSS 4.7% 二、核心功能特性 2.1 用户与社交 社会登录:支持通过社交账号快速登录 侧边栏管理:快速管理评论,直观浏览 站内通知:红点标记、@提及列表 评论投票:支持对评论点赞或踩 评论排序:多种排序方式,自由选择 评论搜索:快速搜索评论内容 评论置顶:置顶重要消息 仅看作者:只显示作者评论 评论跳转:快速跳转到被引用的评论 自动保存:防止内容丢失 IP 归属地:显示用户 IP 所属地区 多语言:支持多语言切换 夜间模式:一键切换暗色主题 2.2 管理与安全 邮件通知:多种发送方式,支持邮件模板 多样化推送:多种推送方式,通知模板 验证码:多种验证类型,频率限制 评论审核:内容检测,垃圾评论拦截 图片上传:自定义上传,支持图床 管理员:密码验证,徽章标识 多站点:站点隔离,集中管理 页面管理:快速查看,一键标题导航 页面浏览统计:轻松追踪页面浏览量 2.3 内容与展示 Markdown:支持 Markdown 语法渲染 表情包:兼容 OwO 表情,快速集成 层级嵌套:嵌套分页列表,无限滚动 图片灯箱:快速集成图片灯箱效果 图片懒加载:懒加载图片,优化体验 LaTeX:集成 LaTeX 公式解析 扩展插件:支持创建更多可能性 2.4 运维与开发 命令行管理:CLI 命令行操作管理 API 文档:提供 OpenAPI 格式接口文档 程序升级:版本检查,一键升级 数据迁移:免费迁移工具,快速备份 三、快速部署 3.1 Docker 一键部署(推荐) 使用 Docker 一键部署 Artalk 服务端: docker run -d \ --name artalk \ -p 8080:23366 \ -v $(pwd)/data:/data \ -e "TZ=America/New_York" \ -e "ATK_LOCALE=en" \ -e "ATK_SITE_DEFAULT=Artalk Blog" \ -e "ATK_SITE_URL=https://example.com" \ artalk/artalk-go 参数说明: 参数 说明 -p 8080:23366 将容器 23366 端口映射到主机 8080 端口 -v $(pwd)/data:/data 数据持久化存储 TZ 时区设置 ATK_LOCALE 界面语言(en/zh-CN 等) ATK_SITE_DEFAULT 默认站点名称 ATK_SITE_URL 站点 URL 3.2 前端集成 在网页中集成 Artalk 客户端: Artalk.init({ el: '#Comments', site: 'Artalk Blog', server: 'https://artalk.example.com', pageKey: '/2018/10/02/hello-world.html' }) 参数说明: 参数 说明 el 挂载评论组件的 DOM 元素选择器 site 站点名称(需与服务端一致) server Artalk 服务端地址 pageKey 页面唯一标识 3.3 其他安装方式 除 Docker 外,还支持以下安装方式: 二进制文件:从 GitHub Releases 下载预编译版本 go install:通过 Go 包管理器安装 Linux 包管理器:支持各 Linux 发行版的包管理器 四、配置说明 Artalk 启动后会自动生成配置文件 artalk-go.yml,支持丰富的自定义选项: 4.1 基础配置 # 服务端口 port: 23366 # 时区 timezone: Asia/Shanghai # 站点默认名称 site_default: Artalk Blog # 站点 URL site_url: https://example.com 4.2 数据库配置 Artalk 默认使用 SQLite,也可配置 MySQL: db: type: sqlite file: ./data/artalk.db 4.3 邮件通知配置 email: enabled: true send_type: smtp smtp_host: smtp.example.com smtp_port: 465 smtp_user: [email protected] smtp_pass: your_password from: "Artalk <[email protected]>" 4.4 图片上传配置 img_upload: enabled: true path: ./data/uploads/ max_size: 5242880 五、技术架构 5.1 后端(Go) 语言:Go 1.21+ 框架:Gin Web Framework 数据库:SQLite / MySQL 模板引擎:内置模板引擎 命令行:Cobra CLI 5.2 前端(Vue + TypeScript) UI 框架:Vue 3 语言:TypeScript 样式:SCSS 构建工具:Vite 客户端:纯 Vanilla JS(约 40KB),无框架依赖 5.3 项目结构 Artalk/ ├── cmd/ # 命令行入口 ├── conf/ # 配置文件 ├── docs/ # 文档 ├── internal/ # 后端核心逻辑 ├── server/ # 服务端 ├── ui/ # 前端 UI(Vue) ├── public/ # 静态资源 ├── i18n/ # 国际化 ├── scripts/ # 构建脚本 ├── test/ # 测试 ├── main.go # 程序入口 ├── docker-compose.yml ├── Dockerfile └── Makefile 六、数据迁移 Artalk 提供免费的数据迁移工具,支持从其他评论系统导入数据: 支持从 Artalk 旧版本迁移 支持从其他评论系统导入(如 Typecho、WordPress 等) 提供快速备份和恢复功能 七、升级与维护 7.1 一键升级 docker pull artalk/artalk-go docker stop artalk docker rm artalk # 重新运行 docker run 命令 7.2 版本检查 Artalk 支持版本检查和一键升级功能,确保始终运行最新版本。 八、适用场景 个人博客:轻量级评论系统,替代 Disqus、Valine 等 静态网站:完美适配 Hugo、Hexo、Jekyll 等静态站点生成器 技术文档:为文档站点添加评论功能 企业官网:产品页面用户反馈收集 社区论坛:轻量级讨论区域 多站点管理:集中管理多个站点的评论 九、同类产品对比 特性 Artalk Disqus Valine Waline 开源 MIT 自托管 后端语言 Go — Node.js Node.js 前端大小 ~40KB 较大 较大 较大 社会登录 邮件通知 多站点 评论审核 Markdown 图片上传 LaTeX 十、相关资源 资源 链接 官方文档 https://artalk.js.org/ GitHub 仓库 https://github.com/ArtalkJS/Artalk 最新发布 https://github.com/ArtalkJS/Artalk/releases API 文档 https://artalk.js.org/http-api.html 开发指南 https://artalk.js.org/en/develop/ 赞助支持 https://buymeacoffee.com/artalk 十一、贡献指南 欢迎提交 Pull Request! Fork 本项目 创建特性分支 提交更改 推送到分支 创建 Pull Request