跳转至内容
  • 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 帖子
    1 浏览
    L
    JuHost香港便宜VPS促销:$75.35/3年 一、商家简介 JuHost 于2023年在中国香港成立,目前推出长期7折优惠活动,最高可享3年付折扣。机房位于香港新界,提供 500Mbps BGP 带宽(包含内地方向)。 官网地址:https://juhost.com/ 二、优惠码信息 项目 内容 优惠码 3years 折扣力度 7折(减免30%) 折扣限量 无限量 折扣时间 长期有效 三、香港新界 VPS 套餐 3.1 Level 1 套餐(入门款) 配置项 参数 CPU 1 核 内存 1G RAM 硬盘 20GB SSD 带宽 500Mbps 共享端口 流量 500GB/月 IP 1×IPv4 + 1×IPv6 原价 $2.99/月 折扣价 $2.09/月 3年付 $75.35/3年 购买链接:点击购买 3.2 Level S2 套餐(进阶款) 配置项 参数 CPU 2 核 内存 2G RAM 硬盘 30GB SSD 带宽 200Mbps 流量 每日前 35GB 全速 IP 1×IPv4 + 1×IPv6 原价 $5.99/月 折扣价 $4.19/月 3年付 $150.95/3年 购买链接:点击购买 四、网络测试 4.1 测试信息 机房位置:香港新界 Speedtest:https://hknt.speedtest.juhost.com/ Looking Glass:https://hknt.lg.juhost.com/ 五、购买建议 适合场景 个人博客/小型网站 轻量级应用部署 测试开发环境 需要香港节点的业务 注意事项 套餐为共享带宽,适合轻量使用 3年付性价比最高 建议先进行网络测试确认延迟
  • 0 赞同
    1 帖子
    1 浏览
    L
    一、商家简介 ZgoVPS 在洛杉矶推出 AMD Optimised VPS 套餐补货,上游为 netlab,提供三网优化线路:CN2 GIA / 9929 / CMIN2。 核心配置 CPU:AMD EPYC 7002 系列 内存:DDR4 存储:NVMe SSD RAID10 阵列 带宽:200Mbps IP:原生美国 IP,解锁流媒体效果不错 官网地址:https://www.zgovps.com/ 二、洛杉矶 AMD Optimised VPS 套餐 网络配置:默认 200Mbps 带宽,自带 1 个美国原生 IPv4,上游 netlab,三网 CN2 GIA / 9929 / CMIN2 注意:红色字体为特价款(年付更优惠) CPU 内存 NVMe 带宽/流量 价格 购买链接 1核 1G 10G 200Mbps/500G/月 $45/年 购买 2核 2G 20G 200Mbps/1T/月 $88/年 购买 1核 1G 10G 200Mbps/500G/月 $58/年 购买 2核 2G 20G 200Mbps/1T/月 $106/年 购买 3核 3G 30G 200Mbps/1.5T/月 $156/年 购买 4核 4G 50G 200Mbps/2T/月 $198/年 购买 三、三网回程路由测试 3.1 北京电信 → CN2 GIA 地理路径:美国 -> 上海 -> 北京 自治系统路径:AS16509 -> AS4809 -> AS4847 3 0.51ms 10.52.*.* * RFC1918 5 0.88ms 100.48.*.* AS16509 美国 弗吉尼亚州 阿什本 amazon.com 9-11 124.67ms 59.43.*.* AS4809 [CN2-BackBone] * 中国 上海 电信 12 126.51ms 59.43.*.* AS4809 [CN2-Global] * 中国 上海 电信 14-16 149.82ms 219.141.*.* AS4847 中国 北京 电信 17 151.80ms 106.37.*.* AS4847 中国 北京 电信 3.2 北京联通 → 9929 地理路径:美国 -> 上海 -> 北京 自治系统路径:AS10099 -> AS9929 -> AS4808 3 0.58ms 10.52.*.* * RFC1918 5 1.24ms 162.219.*.* AS10099 美国 洛杉矶 联通 6 134.44ms 162.219.*.* AS10099 中国 上海 联通 7 128.92ms 218.105.*.* AS9929 [CNC-BACKBONE] 中国 上海 联通 8 154.97ms 218.105.*.* AS9929 中国 北京 联通 12 150.22ms 124.65.*.* AS4808 [UNICOM-BJ] 中国 北京 联通 3.3 北京移动 → CMIN2 地理路径:美国 -> 上海 -> 北京 自治系统路径:AS58807 -> AS9808 -> AS56048 3 0.80ms 10.52.*.* * RFC1918 5 0.90ms 100.58.*.* * 美国 12 199.65ms 223.120.*.* AS58807 [CMIN2-NET] 中国 上海 移动 13-16 134.11ms 221.183.*.* AS9808 [CMNET] 中国 上海 移动 17 154.82ms 111.24.*.* AS9808 [CMNET] 中国 北京 移动 24 159.17ms 211.136.*.* AS56048 [CMNET] 中国 北京 移动 3.4 上海电信 → CN2 GIA 地理路径:美国 -> 上海 自治系统路径:AS16509 -> AS4809 -> AS4812 3 3.00ms 10.52.*.* * RFC1918 5 1.10ms 100.48.*.* AS16509 美国 amazon.com 10-15 132.26ms 59.43.*.* AS4809 [CN2-BackBone] 中国 上海 电信 18 130.52ms 101.226.*.* AS4812 [CHINANET-SH] 中国 上海 电信 3.5 上海联通 → 9929 地理路径:美国 -> 上海 自治系统路径:AS10099 -> AS9929 -> AS4837 -> AS140979 3 0.58ms 10.52.*.* * RFC1918 5 1.01ms 162.219.*.* AS10099 美国 洛杉矶 联通 6 122.38ms 162.219.*.* AS10099 中国 上海 联通 8 135.95ms 218.105.*.* AS9929 [CNC-BACKBONE] 中国 上海 联通 17 139.14ms 58.246.*.* AS140979 中国 上海 联通 3.6 上海移动 → CMIN2 地理路径:美国 -> 上海 自治系统路径:AS58807 -> AS9808 -> AS24400 -> AS9808 3 0.62ms 10.52.*.* * RFC1918 5 2.40ms 100.58.*.* * 美国 12 208.30ms 223.120.*.* AS58807 [CMIN2-NET] 美国 洛杉矶 移动 13 200.66ms 223.120.*.* AS58807 [CMIN2-NET] 中国 上海 移动 14-16 128.28ms 221.183.*.* AS9808 [CMNET] 中国 上海 移动 3.7 广东电信 → CN2 GIA 地理路径:美国 -> 广东 自治系统路径:AS16509 -> AS4809 -> AS4134 3 29.90ms 10.52.*.* * RFC1918 5 1.01ms 100.48.*.* AS16509 美国 amazon.com 10-11 156.54ms 59.43.*.* AS4809 [CN2-BackBone] 中国 广东 电信 12 162.37ms 113.96.*.* AS4134 [CHINANET-GD] 中国 广东 电信 18 169.51ms 183.47.*.* AS4134 中国 广东 电信 3.8 广东联通 → 9929 地理路径:美国 -> 上海 -> 广东 自治系统路径:AS10099 -> AS9929 -> AS4837 -> AS17816 -> AS136958 3 0.66ms 10.52.*.* * RFC1918 5 1.64ms 162.219.*.* AS10099 美国 洛杉矶 联通 6 122.54ms 162.219.*.* AS10099 中国 上海 联通 8 160.97ms 218.105.*.* AS9929 [CNC-BACKBONE] 中国 广东 联通 18 165.50ms 157.148.*.* AS136958 [UNICOM-GD] 中国 广东 联通 3.9 广东移动 → CMIN2 地理路径:美国 -> 上海 -> 广东 自治系统路径:AS58807 -> AS9808 -> AS56040 3 0.76ms 10.52.*.* * RFC1918 5 0.99ms 100.58.*.* * 美国 12 209.45ms 223.120.*.* AS58807 [CMIN2-NET] 美国 洛杉矶 移动 13-15 133.94ms 221.183.*.* AS9808 [CMNET] 中国 上海 移动 16-17 154.72ms 111.24.*.* AS9808 [CMNET] 中国 广东 移动 20-21 173.69ms 120.198.*.* AS56040 [CMNET] 中国 广东 移动 四、线路优势总结 运营商 回程线路 特点 电信 CN2 GIA 高品质专线,延迟低,稳定性好 联通 AS9929 联通精品网,速度稳定 移动 CMIN2 移动国际精品线路,带宽充足 五、购买建议 适合场景 外贸建站 流媒体解锁(Netflix、Disney+等) AI 服务访问(ChatGPT、Claude等) 需要低延迟优化的业务 注意事项 特价款年付性价比更高 原生 IP 适合需要解锁流媒体的用户 三网优化线路适合国内访问需求
  • 0 赞同
    1 帖子
    1 浏览
    L
    一、商家简介 SpinServers 是一家美国老牌 IDC 商家,目前推出 5 款特价服务器促销活动,机房位于美国西海岸圣何塞和中部达拉斯数据中心。 核心优势 A+B 冗余电力,保障供电稳定性 2×10Gbps 带宽,单机确保 10Gbps 速率 每月 30T 流量,自带 1 个 IPv4 预部署形式,下单完成后 30 分钟内自动交付 自助管理:用户可在后台自行安装系统、重装、重启等操作 官网地址:https://www.spinservers.com 二、达拉斯服务器套餐 网络配置:2×10Gbps 带宽,确保 10Gbps 速率,每月 30T 流量,自带 1 个 IPv4;配置可升级。 CPU 内存 硬盘 优惠码 价格 购买链接 2×Gold 5118 64G 960G SSD Spin5118$99 $99/月 购买 2×Gold 6148 256G 2×1.92T SSD Spin6148$210 $210/月 购买 2×Platinum 8173M 512G 4×1.92T SSD Spin8173$350 $350/月 购买 三、圣何塞/硅谷服务器套餐 网络配置:2×10Gbps 带宽,确保 10Gbps 速率,每月 30T 流量,自带 1 个 IPv4;配置可升级。 CPU 内存 硬盘 优惠码 价格 购买链接 2×E5-2630LV3 256G 2×1.6T SSD Spin2630$105SJ $105/月 购买 2×E5-26683v4 512G 2×3.84T SSD Spin2683$225SJ $225/月 购买 四、网络测试 4.1 达拉斯机房 测试 IPv4:104.37.173.20 下载测试:http://dal-lg.spinservers.com/100MB.test Looking Glass:http://dal-lg.spinservers.com/ 4.2 圣何塞机房 测试 IPv4:192.30.242.74 下载测试:http://sjc-lg.spinservers.com/10000MB.test Looking Glass:http://sjc-lg.spinservers.com/ 五、购买建议 适合场景 大流量网站/应用托管 流媒体/下载站 游戏服务器 大数据处理 需要高带宽的企业级应用 注意事项 优惠码需在购买时正确填写 配置可根据需求升级 建议先进行网络测试,确认延迟和路由质量
  • 0 赞同
    1 帖子
    3 浏览
    L
    一、2026年的数据库选择 到了2026年,如果你需要一个关系型数据库,选择取决于两个因素: 1.1 第一类:追求最佳免费数据库 即基于功能和成本做选择。在这种情况下,答案毫无疑问是 PostgreSQL,几乎没有争议。 1.2 第二类:受技术栈限制 即"我的生态系统只支持某些数据库,所以我只能从中选择"。这在行业应用中非常常见,供应商可能会说"只能在 Oracle 上运行"或"需要 SQL Server"。除非你的应用处于性能需求的前1%,或有非常特定的需求只有商业数据库才能满足,否则这是选择这些系统的唯一理由。 如果你是一个数据库平台的支持者,你肯定希望它属于第一类而非第二类。 二、MySQL/MariaDB 的处境 MySQL/MariaDB 属于第二类。 在2026年,MySQL/MariaDB 已经是"行尸走肉"。人们选择 MySQL/MariaDB 的唯一原因是他们的应用强制要求使用它。没有任何技术理由主动选择 MySQL,人们只在别无选择时才部署它。 三、WordPress:MySQL 的最后堡垒 3.1 WordPress 为什么依赖 MySQL? 答案:历史遗留。 WordPress 的 wpdb 类号称是一个数据库抽象层,但由于它只抽象了 MySQL 且不承诺抽象其他数据库,所以它实际上就是一个 MySQL 数据库抽象层。再加上无数插件假定使用的是 MySQL 并硬编码了大量 MySQL 特有语法,WordPress 在短期内不可能切换。 3.2 其他平台 除了 WordPress,还有几个主要平台依赖 MySQL—— notably WHMCS 和 Magento。但 MySQL 在此时已经沦为遗留软件。 没有人在 MySQL 上构建下一代伟大应用 MySQL,被 PostgreSQL 逐步蚕食 四、Oracle 的投入大幅缩减 4.1 MySQL 提交量断崖式下跌 Oracle 在收购 Sun 时获得了 MySQL。虽然他们确实在一段时间内继续投资 MySQL,但这种投入已经大幅缩减。以下是 mysql/mysql-server 仓库的统计数据: 时间 提交数量 2010年 约 22,360 次 2024年 约 4,730 次 2025年9月至今 超过三个月零提交 4.2 大规模裁员 去年,Oracle 裁掉了约三分之二的 MySQL 开发团队。MySQL 已经没有太多利润可言,网络效应也在消退,很难说服 Oracle 领导层继续开发。 4.3 MariaDB 的困境 MariaDB 的 IPO 以失败告终,一年后被私有化收购,短期内也不太可能征服世界。 五、作者观点:MySQL 的设计哲学问题 作者回忆起 MySQL 3 时代,当时 MySQL 声称你"不需要"外键和引用完整性,那时就意识到这个产品有问题。 5.1 两种截然不同的设计哲学 数据库 设计理念 MySQL "我们要做一个快速的数据库,正确的事情以后再说" PostgreSQL "我们要从一开始就把事情做对,然后我们再想办法变快" 后者显然是一个工程上更优秀的产品。 六、未来展望 MySQL 将作为"僵尸"继续存在很多年,但作者庆幸它最终没有赢得数据库战争。 对主机行业的影响 WordPress 站点:短期内仍需 MySQL,迁移成本高 新项目:建议直接选择 PostgreSQL 现有 MySQL 部署:评估迁移可行性和长期维护成本 主机商:应同时提供 PostgreSQL 支持,满足日益增长的需求
  • 0 赞同
    1 帖子
    1 浏览
    L
    一、事件概述 如果你是 cPanel 或 WHMCS 的许可证持有者,你可能已经收到了来自 WebPros(这两款产品的母公司)的邮件,宣布他们将开始与你争夺客户。 这是一个相当令人震惊的举动——WebPros 将开始提供共享主机、WordPress 主机、邮件主机以及其他云服务。这意味着,如果你是一家使用 cPanel 或 WHMCS 的主机公司,这些产品的制造商现在正在与你直接竞争。 二、矛盾的核心 2.1 既当裁判又当运动员 WebPros 的这一决策将他们置于与自身客户直接竞争的位置: 你每月向 WebPros 支付许可证费用 WebPros 同时利用这些资金来提供与你相同的服务 WebPros 拥有天然的价格优势——他们不需要支付 cPanel 或 WHMCS 的许可费用 2.2 更令人担忧的许可条款 经过查阅 cPanel 许可协议,发现了一个更为棘手的条款:如果你是使用 cPanel 的主机提供商,你已明确授予 cPanel 在取消或过期你的许可证时联系你所有客户的权利。 协议原文关键内容: "cPanel 保留向受终止或过期影响的任何第三方用户或最终用户提供产品和服务的权利,包括但不限于软件本身(或将此类第三方推荐给其他 cPanel 被许可人或关联公司)。" 换句话说:如果你决定从 cPanel 切换到其他面板并让许可证过期,WebPros 有权联系你的所有客户,引诱他们迁移到 WebPros 自己的主机服务。 三、WebPros Cloud 产品线 根据 WebPros 发送给合作伙伴的邮件,其云服务产品组合包括: Managed Cloud for WordPress — 全托管、高性能 WordPress 主机 WebPros Nova — AI 驱动的网站和应用构建解决方案 WHMCS Cloud — 无需基础设施的 WHMCS SaaS 体验 Business Email — 专为可靠性和持续收入设计的专业邮件平台 Premium Shared Hosting — 专为性能和可靠性构建的高级共享主机 WebPros 将其描述为"完全托管的、合作伙伴优先的生态系统",声称旨在帮助合作伙伴在自有品牌下推出和扩展服务。 四、对主机行业的影响 4.1 对中小主机商的冲击 信任危机:合作伙伴可能重新评估是否继续使用 cPanel/WHMCS 成本矛盾:向竞争对手支付许可费用的商业逻辑变得难以成立 客户流失风险:许可协议中的条款为 WebPros 提供了直接接触终端用户的通道 4.2 行业格局变化 这一事件反映了主机行业更深层的趋势: 垂直整合:控制面板提供商正在向下游扩展,直接提供终端服务 平台锁定风险:依赖单一供应商生态系统的主机商面临更大的风险 替代方案需求:可能加速市场对开源面板(如 CyberPanel、aaPanel、HestiaCP 等)的需求 五、WebPros 邮件原文(关键部分) "我们很高兴地通知您,WebPros Cloud 及其云交付服务组合现已面向 WebPros 合作伙伴开放,提供扩展服务、加速增长和交付现代解决方案的新机遇,而无需管理底层基础设施的复杂性。" "这些解决方案旨在帮助合作伙伴实现产品多元化、创造新的收入来源,并更快地将云服务推向市场。" 六、总结与建议 对于使用 cPanel/WHMCS 的主机商而言,这一发展值得高度关注: 审视许可协议:仔细阅读当前协议中关于客户联系权的条款 制定应急方案:评估替代控制面板的可行性和迁移成本 强化客户关系:通过服务质量和差异化竞争降低客户被挖走的风险 分散依赖:避免将核心业务完全绑定在可能成为竞争对手的供应商生态上
  • 0 赞同
    1 帖子
    2 浏览
    L
    一、事件概述 荷兰金融犯罪调查机构(FIOD)在一次重大执法行动中查封了超过 800 台服务器,此次行动与 Stark Industries Solutions 相关。该公司被欧洲当局指控为俄罗斯相关的网络攻击、干预行动和虚假信息活动提供托管支持。 该事件在 LowEndTalk 社区引发了广泛讨论,成员们热议受影响的托管商、上游网络、THE.Hosting、Mirhosting 以及对整个主机行业的深远影响。 [image: 1780175990676-cve-2026-48172-v4.jpg] 二、执法行动详情 2.1 逮捕与搜查 根据荷兰财政信息与调查服务局(FIOD)的声明: 2026年5月18日,调查人员逮捕了两名嫌疑人: 一名来自阿姆斯特丹的 57岁男子 一名来自海牙的 39岁男子 两人被指控违反荷兰制裁法,直接或间接向受欧盟制裁的实体提供经济资源 2.2 搜查范围 执法行动包括: 对恩斯赫德(Enschede)和阿尔梅勒(Almere)的 三处商业场所 进行搜查 对德龙滕(Dronten)和斯希普霍尔赖克(Schiphol-Rijk)的 两个数据中心 进行突击检查 查扣行政记录、笔记本电脑、手机以及 超过800台服务器 三、Stark Industries 的背景 3.1 公司起源 调查的核心是一家于 2022年2月10日 成立的 Web 托管公司——恰好在俄罗斯入侵乌克兰约两周前。当局表示
  • 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

  • 全球主机活动推送,便宜云主机,服务器活动,等内容。


  • 一些简单而有用的代码碎片记录!


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


  • 海内外网络环境与时态讯息区!