anchr
anchr是用于Internet上常见任务的小工具箱,包括书签,链接缩短和图像上传。
特征
- Link Shortener
- 可搜索的书签集
- 加密图像上传,使用cryptojs
- 恶意链接检查,使用安全浏览API
- 自托管和开源
- 在anchr .io托管,符合GDPR的服务
- 官方Android应用
- 铬和Firefox浏览器扩展
- 普罗米修斯指标
- 与Sharex集成
- OAuth 2身份验证(Google,Facebook,…)
- 电报机器人(@ anchr bot)
如果您喜欢这个项目,请考虑赞助它!
?描述
有一天,我认为有一个想法的想法是有用的,它可以从任何地方访问任何网络链接或书签(例如您在Chrome或Firefox中的书签),而无需同步您的浏览器配置文件。就像您在另一台PC上的某个地方一样,在Internet上找到一篇有用的文章,并希望快速保存它以备以后在家中。这就是anchr的集合功能所做的。它保存了链接 – 具有可选的描述,可更轻松地搜索并分为类别 /集合。
第二个功能是上传图像。您可以轻松地从计算机或移动设备上传一张或多张照片,并将其发送给朋友,或将其包括在论坛帖子等中。与anchr的图像托管有关的特殊之处是,用户有机会使用密码加密映像。结果,没有密码的人都不会看到他们的照片的内容。
最后一个功能是短链接– 实际上与您从goo.gl或bit.ly中知道的那些没有什么不同。如果您有一个很长的网络链接,其中包括许多查询参数,访问令牌,会话ID,特殊字符等,并且想共享它们,则很有用。通常,特殊字符打破链接或您的聊天应用程序的超链接最大长度。或者,您只想在文档或电子邮件中保持清晰度。在这种情况下,尽可能短的链接可能会非常有帮助。此外,还针对Google安全浏览API检查了短链接,以防止您的网站参考网站钓鱼网站之类的。
anchr的重点是轻松和快速使用 – 短加载时间,平面菜单层次结构等。还有一个Chrome扩展名,您可以直接从网站上保存或缩短链接。
?如何运行?
先决条件
为了自己托管anchr ,您需要一些东西。
- node.js> = 21.x
- mongodb> = 6.x
- 替代性1:Mongo Atlas(托管云Mongodb)
- 替代2:ferretdb(带有邮政或sqlite)
数据库设置
anchr \’ as your database
$ > db.createUser({user: \’ anchr \’, pwd: passwordPrompt(), roles: [{ role: \’dbOwner\’, db: \’ anchr \’ }]}); // create user \’ anchr \’
$ > exit\”>
$ mongosh $ > use anchr ; // choose \' anchr \' as your database $ > db.createUser({user: \' anchr \' , pwd: passwordPrompt (), roles: [{ role: \' dbOwner \' , db: \' anchr \' }]}); // create user \' anchr \' $ > exit
配置
$ git clone https://gith*u*b.c*om/muety/anchr- 将
.env.example复制到.env并编辑内容以设置环境变量:-
PORT:启动服务器的TCP端口(默认:3000) -
LISTEN_ADDR:IPv4地址,使服务器在聆听(默认值:127.0.0.1)上 -
anchr _PUBLIC_URL:托管实例的公共基础URL(无尾斜线)(默认:http://localhos*t**:3000) -
anchr _DB_USER:mongodb用户名(默认:anchr) -
anchr _DB_PASSWORD:mongoDB密码(必需) -
anchr _DB_HOST:mongodb主机名(默认:localhost) -
anchr _DB_PORT:MONGODB端口(默认:27017) -
anchr _DB_NAME:mongoDB数据库名称(默认:anchr) -
anchr _UPLOAD_DIR:通往文件系统目录的绝对路径(必须存在!),以将图像上传到(默认值:/var/data/ anchr) -
anchr _SECRET:a(最好是长),随机字符序列,用于JSON Web令牌(默认:shhh) -
anchr _LOG_PATH:访问日志的绝对文件路径(必须存在目录!)(默认值:/var/log/ anchr /access.log) -
anchr _ERROR_LOG_PATH:错误日志的绝对文件路径(必须存在目录!)(默认:/var/log/ anchr /error.log) -
anchr _GOOGLE_API_KEY:Google API的API键(安全浏览检查输入短链接需要),您可以从开发人员控制台中获得(默认值:\'\',留空白以禁用安全浏览检查) -
anchr _FB_CLIENT_IDandanchr _FB_SECRET:Facebook登录的oauth凭据(默认值:\'\',留空白以禁用Facebook登录) -
anchr _GOOGLE_CLIENT_IDandanchr _GOOGLE_SECRET:Google登录的oauth凭据(默认值:\'\',留空白以禁用Google登录) -
anchr _ALLOW_SIGNUP:是否允许注册新用户(默认:true) -
anchr _VERIFY_USERS:是否要求新用户使用电子邮件链接激活其帐户(需要邮件)(默认:true) -
anchr _BASIC_AUTH:是否允许使用HTTP BASIC AUTH(默认值:true)进行身份验证 -
anchr _EXPOSE_METRICS:是否在公共/api/metrics端点下公开Prometheus指标(默认值:false) -
anchr _MAIL_SENDER: anchr .IO的邮件中的发件人地址(默认:anchr .io <noreply@ anchr .io>) -
anchr _SMTP_HOST:用于发送邮件的SMTP服务器主机(留空邮件) -
anchr _SMTP_PORT:SMTP服务器端口(默认:587) -
anchr _SMTP_TLS:是否要与SMTP服务器建立TLS连接(不要与StartTL相混淆)(默认:false) -
anchr _SMTP_USER:SMTP服务器登录用户名 -
anchr _SMTP_PASS:SMTP服务器登录密码 -
anchr _MAILWHALE_URL:将其用于邮件而不是smtp的邮件实例的公共URL(默认:https://mai*lwha*le.*dev://mailwhale.dev) -
anchr _MAILWHALE_CLIENT_ID:身份验证的mailwhale客户端ID -
anchr _MAILWHALE_CLIENT_SECRET:邮件客户端秘密验证 -
anchr _TELEGRAM_BOT_TOKEN:电报机器人令牌(来自@botfather)。空白以禁用电报集成。 -
anchr _TELEGRAM_URL_SECRET:用于安全目的的秘密将电信网hook路径附加到telegram webgram路径。可以是任何随机字符串。
-
跑步
设置
$ source env.sh-
$ corepack enable -
$ yarn -
$ cd public && ../node_modules/.bin/bower install && cd ..
选项1:本地运行
用于发展
- 运行后端
$ yarn start - 运行前端
$ yarn start:frontend - 访问http:// localhost:9000,享受现场重新加载
在生产中
-
$ yarn run build(构建前端) -
$ yarn run production
选项2:与Docker一起运行
source env.sh-
docker-compose up
?电报机器人设置
- 使用@botfather创建一个新机器人
- configure
anchr _TELEGRAM_BOT_TOKEN和anchr _TELEGRAM_URL_SECRET变量 - 配置Webhook:
curl https://api.te*legr**am.org/bot < BOT_TOKEN > /setWebhook ? url=https:// < anchr_URL > /api/telegram/updates/ < URL_SECRET >
?工具
Sharex(仅Windows)
您可以将anchr与Windows上的sharex集成在一起,并将其用作图像上传和短链接的自定义目标。
- 生成http Basic auth hash base64 hash of
youremail@example.org:yourpassword-
选项1(linux):
echo \"youremail@example.org:yourpassword\" | base64 - 选项2:使用在线工具
-
选项1(linux):
- 将您新生成的哈希插入
-
sharex-images.json和 sharex-shortlinks.json
-
- 将两个文件作为Sharex中的自定义上传器导入
?项目历史
该项目的起源在2014年,当时平均堆栈是Sh*t。这是作者的第一个真正的网络项目,也是一个很好的学习机会。但是,从那时起,该项目就一直被视为主要完整的。依赖偶尔会更新。由于该项目始于几年前,因此有些部分仍基于老式的JavaScript ES5语法,以及grunt和Bower等老式工具。当然,这不再是Web开发人员的最新技术。但是,为了与现有代码保持一致,原始代码样式仍应在新的贡献中遵循。更新:就在最近,所有后端侧代码均已重构为现代JavaScript语法以简化开发。
?开发人员注意
API测试
npm install -g newman
anchr.postman_collection.json\” \\
-e \” anchr Environment.postman_environment.json\” \\
–env-var \”test_password=ssshhhh\”\”>
newman run \" anchr .postman_collection.json \" \\ -e \" anchr Environment.postman_environment.json \" \\ --env-var \" test_password=ssshhhh \"
升级包装
# Backend $ yarn plugin import interactive-tools $ yarn upgrade-interactive # Frontend $ cat bower.json | jq \' .dependencies | keys[] \' -r | xargs npx bower update
?许可证
GNU通用公共许可证V3(GPL-3) @FerdinandMütsch
