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编程
每月404次下载
530KB
3K SLoC
包含 (WOFF字体, 325KB) static/Inter.var.woff2
Libreddit
Reddit的替代私有前端
10秒简介: Libreddit是"libre"(意为自由)和"Reddit"的组合。它是一个类似于Invidious的私有前端,但用于Reddit。在不被跟踪的情况下浏览r/unpopularopinion的冷门观点。
- 🚀 快速:使用Rust编写,速度极快且内存安全
- ☁️ 轻量:无JavaScript,无广告,无跟踪,无冗余
- 🕵 私密:所有请求都通过服务器代理,包括媒体
- 🔒 安全:强大的内容安全策略防止浏览器请求Reddit
我感激任何捐款!您的支持使我能够继续开发Libreddit。
比特币: bc1qwyxjnafpu3gypcpgs025cw9wa7ryudtecmwa6y
门罗币: 45FJrEuFPtG2o7QZz2Nps77TbHD4sPqxViwbdyV9A6ktfHiWs47UngG5zXPcLoDXAc8taeuBgeNjfeprwgeXYXhN3C9tVSR
实例
🔗 想要自动将Reddit链接重定向到Libreddit?请使用LibRedirect或Privacy 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 | ||
---|---|---|
请求 | 60 | 83 |
速度指数 | 2.0 秒 | 10.4 秒 |
交互时间 | 2.8 秒 | 12.4 秒 |
隐私
日志记录:根据 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
警告 这些是免费托管选项,但它们不是私有的,并且将监控服务器使用情况以防止滥用。如果您需要一个免费且易于设置的方案,此方法可能最适合您。
部署
安装完成后,通过运行以下命令将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