87个版本 (24个破坏性)

0.30.1 2023年3月17日
0.29.4 2023年2月26日
0.25.1 2022年12月14日
0.24.1 2022年11月22日
0.1.8 2020年11月30日

#190 in Web编程

Download history 6/week @ 2024-03-08 2/week @ 2024-03-15 110/week @ 2024-03-29 5/week @ 2024-04-05 1/week @ 2024-05-17

每月404次下载

AGPL-3.0

530KB
3K SLoC

包含 (WOFF字体, 325KB) static/Inter.var.woff2

Libreddit

Reddit的替代私有前端

screenshot


10秒简介: Libreddit是"libre"(意为自由)和"Reddit"的组合。它是一个类似于Invidious的私有前端,但用于Reddit。在不被跟踪的情况下浏览r/unpopularopinion的冷门观点。

  • 🚀 快速:使用Rust编写,速度极快且内存安全
  • ☁️ 轻量:无JavaScript,无广告,无跟踪,无冗余
  • 🕵 私密:所有请求都通过服务器代理,包括媒体
  • 🔒 安全:强大的内容安全策略防止浏览器请求Reddit

我感激任何捐款!您的支持使我能够继续开发Libreddit。

Buy Me A Coffee Donate using Liberapay

比特币: bc1qwyxjnafpu3gypcpgs025cw9wa7ryudtecmwa6y

门罗币: 45FJrEuFPtG2o7QZz2Nps77TbHD4sPqxViwbdyV9A6ktfHiWs47UngG5zXPcLoDXAc8taeuBgeNjfeprwgeXYXhN3C9tVSR


实例

🔗 想要自动将Reddit链接重定向到Libreddit?请使用LibRedirectPrivacy Redirect

点击此链接获取最新的Markdown格式实例表。此列表也可作为可读的JSON

这两个文件都是libreddit-instances存储库的一部分。要将自己的自托管实例贡献到列表中,请参阅libreddit-instances README


关于

在💬 Matrix、🐋 Docker、:octocat: GitHub 和 🦊 GitLab 上找到 Libreddit。

构建工具

信息

Libreddit 希望提供一个更简单的 Reddit 浏览方式,无需广告、追踪器和冗余。Libreddit 受到其他替代流行服务前端如 Invidious(YouTube)、Nitter(Twitter)和 Bibliogram(Instagram)的启发。

Libreddit 目前实现了 Reddit 的(未登录)大部分功能,但仍缺少 一些功能

它与 Teddit 相比如何?

Teddit 是另一个旨在提供 Reddit 替代前端的开源项目。这两个项目之间没有联系,您可以根据个人喜好使用任何一个。竞争促进创新,Teddit 的发布激励我将 Libreddit 打造成一个更加完善的产品。

如果您想进行比较,我注意到最大的不同之处在于

  • Libreddit 以 Reddit 的新版设计为主题,而 Teddit 似乎更接近于 Reddit 的旧版设计。这可能会更适合一些用户,因为设计总是主观的。
  • Libreddit 使用 Rust 编写,以获得速度和内存安全性。它使用 Hyper,这是一个快速且轻量级的 HTTP 服务器/客户端实现。

比较

本节概述了 Libreddit 与 Reddit 的比较。

速度

最后测试日期:2022 年 11 月 11 日。

Google PageSpeed Insights 的结果(Libreddit 报告Reddit 报告)。

Libreddit Reddit
请求 60 83
速度指数 2.0 秒 10.4 秒
交互时间 2.8 秒 12.4 秒

隐私

Reddit

日志记录:根据 Reddit 的 隐私政策,他们“可能会(自动)记录信息”,包括

  • IP 地址
  • 用户代理字符串
  • 浏览器类型
  • 操作系统
  • 引用 URL
  • 设备信息(例如,设备 ID)
  • 设备设置
  • 访问的页面
  • 点击的链接
  • 请求的 URL
  • 搜索词

位置:相同的隐私政策接着描述说,位置数据可能通过以下方式收集

  • GPS(同意的)
  • 蓝牙(同意的)
  • 与位置相关的内容(同意的)
  • 您的 IP 地址

Cookie:Reddit 的 Cookie 通知 记录了 Reddit 使用的 Cookie,包括/关于

  • 身份验证
  • 功能
  • 分析和性能
  • 广告
  • 第三方 Cookie
  • 第三方网站

Libreddit

为了透明度,我希望描述 Libreddit 处理用户隐私的所有方式。

服务器

  • 日志记录:在生产环境中(运行二进制文件、使用 Docker 托管或使用官方实例时),Libreddit 不记录任何信息。在调试过程中(从源代码运行而不使用 --release),Libreddit 记录获取的帖子 ID,以帮助解决问题。

  • Cookie:Libreddit 使用可选的 Cookie 来存储在 设置菜单 中配置的任何设置。这些不是跨站 Cookie,且 Cookie 不包含任何个人数据。

官方实例(libreddit.spike.codes)

官方实例托管在https://libreddit.spike.codes

  • 服务器: 官方实例运行生产二进制文件,因此不记录任何日志。

  • DNS: 官方实例的域名使用Cloudflare作为DNS解析器。然而,此站点未通过Cloudflare代理,因此Cloudflare无法访问用户流量。

  • 托管: 官方实例托管在Replit上,该平台会监控使用情况以防止滥用。我理解这可能会使某些用户的威胁模型无效,因此,欢迎自行托管、使用非官方实例和通过Tor浏览。


安装

1) Cargo

确保安装了Rust稳定版本和Rust的包管理器cargo

cargo install libreddit

2) Docker

部署Libreddit的Docker镜像

docker pull libreddit/libreddit
docker run -d --name libreddit -p 8080:8080 libreddit/libreddit

使用不同的端口部署(在本例中为端口80)。

docker pull libreddit/libreddit
docker run -d --name libreddit -p 80:8080 libreddit/libreddit

要在arm64平台上部署,只需在上面的命令中将libreddit/libreddit替换为libreddit/libreddit:arm

要在armv7平台上部署,只需在上面的命令中将libreddit/libreddit替换为libreddit/libreddit:armv7

3) AUR

对于ArchLinux用户,Libreddit可以从AUR以libreddit-git的形式获取。

yay -S libreddit-git

4) NetBSD/pkgsrc

对于NetBSD用户,Libreddit可以从官方仓库获取。

pkgin install libreddit

或者,如果您更喜欢从源码构建

cd /usr/pkgsrc/libreddit
make install

5) GitHub发布

如果您使用Linux且上述方法都不适用,您可以从最新发布版中获取Linux二进制文件。

6) Replit/Heroku/Glitch

警告 这些是免费托管选项,但它们不是私有的,并且将监控服务器使用情况以防止滥用。如果您需要一个免费且易于设置的方案,此方法可能最适合您。

Run on Repl.it Deploy Remix on Glitch


部署

安装完成后,通过运行以下命令将Libreddit部署到0.0.0.0:8080来部署:

libreddit

实例设置

通过向Libreddit传递环境变量,为每个实例特定的设置分配默认值,格式为LIBREDDIT_{X}。用大写字母替换{X}(请参阅下面的列表)中的设置名称。

名称 可能值 默认值 描述
SFW_ONLY ["", ""] 为实例启用仅SFW模式,即过滤所有NSFW内容。
BANNER 字符串 (空) 允许服务器设置要显示的横幅。目前,这将在实例信息页上显示。

默认用户设置

通过向Libreddit传递环境变量,为每个可由用户修改的设置分配默认值,格式为LIBREDDIT_DEFAULT_{Y}。用大写字母替换{Y}(请参阅下面的列表)中的设置名称。

名称 可能值 默认值
THEME ["系统", "浅色", "深色", "黑色", "Dracula", "Nord", "激光波", "紫色", "金色", "玫瑰盒", "Gruvbox暗色", "Gruvbox浅色"] 系统
封面页 ["默认", "热门", "全部"] 默认
布局 ["卡片", "简洁", "紧凑"] 卡片
["", ""]
排序后 ["热门", "", "顶部", "上升", "争议"] 热门
评论排序 ["信心", "顶部", "", "争议", ""] 信心
显示NSFW ["", ""]
模糊NSFW ["", ""]
使用HLS ["", ""]
隐藏HLS通知 ["", ""]
自动播放视频 ["", ""]
订阅 +分隔的subreddit列表(sub1+sub2+sub3+... (无)
隐藏奖项 ["", ""]
禁用访问Reddit确认 ["", ""]

您还可以使用配置文件配置Libreddit。以下是一个示例libreddit.toml文件:

LIBREDDIT_DEFAULT_WIDE = "on"
LIBREDDIT_DEFAULT_USE_HLS = "on"

示例

LIBREDDIT_DEFAULT_SHOW_NSFW=on libreddit
LIBREDDIT_DEFAULT_WIDE=on LIBREDDIT_DEFAULT_THEME=dark libreddit -r

使用NGINX代理

注意如果您通过NGINX反向代理代理Libreddit(请参阅这里),请在您的NGINX配置文件中proxy_pass行之上添加以下内容:

proxy_http_version 1.1;

到您的NGINX配置文件中。

systemd

您可以使用contrib/libreddit.service中的systemd服务(在/etc/systemd/system/libreddit.service上安装它)。

该服务可以通过在/etc/libreddit.conf中创建文件来通过环境变量进行可选配置。使用contrib/libreddit.conf作为模板。您还可以添加上述解释的LIBREDDIT_DEFAULT__{X}设置。

当“使用NGINX代理”且代理在同一台机器上时,您应该确保nginx等待此服务启动。编辑/etc/systemd/system/libreddit.service.d/reverse-proxy.conf

[Unit]
Before=nginx.service

构建

git clone https://github.com/libreddit/libreddit
cd libreddit
cargo run

依赖关系

~30–43MB
~1M SLoC