分类
教程

独角数卡 – 云尚发卡作者的又一开源发卡项目

PHP环境要求星号(*)为必须执行的要求,其他为建议内容*安装fileinfo扩展*安装redis扩展*终端需支持php-cli,测试php -v(版本必须一致)*需要开启的函数:putenv,proc_open,pcntl_signal,pcntl_alarm安装opcache扩展基本环境要求(PHP + PHPCLI) version >= 7.0Nginx version >= 1.16MYSQL version >= 5.6Redis (高性能缓存服务)Supervisor (一个python编写的进程管理服务)Composer (PHP包管理器)Linux/Win (Win下未测试,建议直接Linux)已集成的支付接口支付宝当面付支付宝PC支付支付宝手机支付payjs微信扫码Paysapi(支付宝/微信)码支付(QQ/支付宝/微信)微信企业扫码支付全网易支付通杀(针对彩虹版)界面展示丑陋的后台自动订单邮件通知开源地址国外:https://github.com/assimon/dujiaoka国内:https://gitee.com/assimon/dujiaoka其他问题项目所有第三发包和代码全部使用composer自动加载引入,所有内容可以进行网上溯源,防止被“加料”。本项目目前处于Beta版本状态,可以尝鲜使用,作者声称会长期更新,同时后期会更新模板功能,敬请期待。感谢ashang大佬的开源。

分类
教程

iOS 版微信更新:深色模式终于来了,还有这些新变化

转自 https://sspai.com/post/59609自从微信团队在 3 月 9 日公布了支持深色模式的计划以来,大家一直在调侃的「微信支持深色模式了吗?」似乎也不再是「有生之年」的事情。今天,在毫无前兆的情况下,微信发布了 7.0.12 版本更新,上线了大家期待已久的深色模式。微信的深色模式体验如何虽然微信从宣布支持深色模式到实际上线只用了不到半个月的时间,但在实际体验过后,不难看出微信团队对于深色模式还是下了不少功夫的。微信的深色模式并不是单纯「换个黑色主题」这么简单,从背景到文字的颜色都不是纯黑(#000000)或纯白(#FFFFFF)。默认的聊天背景在深色模式下为深灰色(#181818),如果你使用的是自定义聊天背景,那么微信也会调暗背景,让整体观感更加舒适。不仅如此,微信也对聊天气泡和文字颜色做了修改。自己发出的绿色气泡颜色会更加暗淡一些,文字的亮度也稍微降低了一些。对方的气泡则变成了灰底  白字(#D4D4D4)的搭配。在视觉观感上,这样这样的设计相比于纯黑背景   纯白字的对比度要更低。这样的设计,既能够保证文本的可读性,也能减轻用户的视觉疲劳,看起来会更加舒服。除了聊天界面外,在其他界面里的深色也各不相同。为了更好地实现内容的区分,在顶栏、背景这一类不可交互的位置,使用了与背景相同的深灰色,而可触摸交互的聊天信息、菜单按钮则是稍浅一些。微信此次更新对于深色模式的适配还算比较完整,基本上常用的界面都得到了很好的适配。不过在「微信」界面(即聊天列表)右上角的弹出菜单和下拉进入的小程序菜单则与浅色模式一样,在深色模式下稍有割裂感,希望微信能在以后的版本中为这些界面提供适配。其他更新除了上线深色模式以外,微信 7.0.12 版本还包含了另外一些功能更新。除了通过群公告 @ 全部成员,在新版中,转发消息到微信群中,可以同时给消息设置为群待办,这条消息则会通知全部成员。同时,如果在群内分享过相应小程序,该小程序则会被收藏到「群工具」当中。点击「管理」,群主或群管理员可以选择将群工具中的小程序进行置顶,最多可置顶 8 个小程序,方便群组成员之后在群组中快速选择和使用常用的小程序。小程序方面,分享菜单内新增了「重新载入小程序」选项,点击按钮之后小程序会重新进行加载;与刷新网页不同的是,「重新载入小程序」功能会将小程序页面重新定位至首页,而不是之前停留的位置。新版本还修改了发送语音的界面,将取消发送和转文字两个选项放在屏幕下方,滑动触发起来更加直观方便。此外,语音转文字还支持了实时预览,UI 也变得更加美观,不再是一个灰色方块。表情包界面也有微调。在自定义表情表情包界面,长按表情会出现新的选项菜单,我们可以快速调整表情到第一位,或者直接删除表情。对于从商店中添加的表情包,表情包的名字和作者会被显示置顶显示。在新版本中,微信还在朋友圈界面加入了跳转功能,你可以通过点击「跳到还没看的位置」来快速找到朋友圈的新动态。如果你还发现了微信新版本中的更新,不妨在评论区与我们一同分享。 微信深色模式黑暗模式

分类
教程

分享一个不到3KB的阿里图床源码

源码地址:https://github.com/iAJue/Alibaba_pic
二开修改版,简化:
源码 index.html
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″>
<title>阿里图床</title>
<link rel=”stylesheet” class=”external” rel=”nofollow” target=”_blank” href=”https://www.mjjloc.com/go/?url=aHR0cHM6Ly93d3cubGF5dWljZG4uY29tL2xheXVpLXYyLjUuNi9jc3MvbGF5dWkuY3Nz”>
<style type=”text/css”>
body { margin: auto; max-width: 720px; word-wrap:break-word; }
</style>
</head>
<body>

<fieldset class=”layui-elem-field layui-field-title” style=”margin-top: 30px;”>
<legend>拖拽上传</legend>
</fieldset>

<div class=”layui-upload-drag” id=”upload”>
<i class=”layui-icon”></i>
<p>点击上传,或将文件拖拽到此处</p>
</div>

<div class=”layui-hide” id=”uploadDemoView”>
<fieldset class=”layui-elem-field layui-field-title” style=”margin-top: 30px;”>
<legend>文件信息</legend>
</fieldset>
<img src=”” alt=”上传成功后渲染” style=”max-width: 300px”><hr>
<span id=”url”></span>
</div>

<script src=”https://www.layuicdn.com/layui-v2.5.6/layui.js”></script>
<script>
layui.use([‘layer’, ‘form’, ‘upload’], function(){
var layer = layui.layer
,$ = layui.jquery
,form = layui.form
,upload = layui.upload;

upload.render({
elem: ‘#upload’
,url: ‘upload.php’ //改成您自己的上传接口
,done: function(res){
layer.msg(‘上传成功’);
layui.$(‘#uploadDemoView’).removeClass(‘layui-hide’).find(‘img’).attr(‘src’,res.url);
layui.$(‘#url’).html(res.url);
console.log(res)
}
});
});
</script>
</body>
</html>

upload.php
<?php

$file = $_FILES[‘file’];
if (is_uploaded_file($file[‘tmp_name’]))
{
$extension = pathinfo($file[‘name’])[‘extension’];
$imgname = time().rand(100,1000).’.’.$extension;
if (move_uploaded_file($file[‘tmp_name’], $imgname))
{
$data = array
(
‘scene’ => ‘aeMessageCenterV2ImageRule’,
‘name’ =>$imgname,
‘file’ => new \CURLFile(realpath($imgname))
);
$res = json_decode(icurl(‘https://kfupload.alibaba.com/mupload’,$data));
@unlink($imgname);
if ($res->msg == 0)
{
echo json_encode($res);
}
}
}

function icurl($url, $data){
$ch = curl_init();
curl_setopt($ch,CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}

分类
教程

Docker:一键部署Cloudreve网盘到你的服务器上

Cloudreve-Docker简介
项目地址:https://github.com/littleplus/Cloudreve-Docker
容器地址:https://hub.docker.com/r/littleplus/cloudreve-3.0.0-rc-1
本Docker容器基于redis:5-alpine基础镜像制作,在保证程序运行稳定的前提下,实现最小空间占用以及资源消耗
本Docker容器的Cloudreve版本为Cloudreve-3.0.0-RC-1,大概率镜像及Dockerfile将不会再更新
容器特点

镜像大小仅70M左右,资源消耗极低
外挂程序运行目录,可以自行更新Cloudreve版本,修改配置文件
在初次使用时,会在/etc/cloudreve目录生成cloudreve二进制文件以及配置文件
在/etc/cloudreve/cloudreve.db不存在时,由cloudreve自行生成sqlite数据库,密码可以在docker logs里面看到

快速开始
默认前提:已经安装好docker并使docker服务正常运行中

git clone本项目或下载项目压缩包
运行scripts/下的start.sh脚本,保存管理员用户名及密码信息(仅在初次创建数据库时显示)
默认会将cloudreve本体、配置文件、数据库存放到/etc/cloudreve,将宿主机/data/cloudreve绑定到容器/data
在cloudreve内修改默认存储策略中的存储路径为

/data/uploads/{uid}/{path}
QA

忘记保存初始密码了怎么办

删除/etc/cloudreve/cloudreve.db文件(会丢失原有文件记录),运行scripts/的start.sh,会重新生成密码
2. 如何升级Cloudreve
备份/etc/cloudreve文件夹,将新版Cloudreve二进制程序替换/etc/cloudreve的cloudreve文件,运行
docker restart cloudreve
重启容器生效

如何修改Cloudreve基础配置

修改/etc/cloudreve/cloudreve.conf,运行
docker restart cloudreve
重启容器生效

如何修改Cloudreve主机监听端口

修改scripts/start.sh,将左边的端口号替换为需要要监听的端口,运行scripts/start.sh生效
 
然后修改存储策略即可。
 
转自 https://www.xjh.me/4364.html
CloudreveDocker

分类
教程

布丁网络加速 限时5折优惠码 布丁机场最新优惠 更新测速图

布丁4月19日公告1. 承诺不再开启五折优惠2. 增加季付套餐,38月一季,每月128G流量。优惠码 50off优惠码4月17日23点失效机场地址:点击直达我自己用的就是这个,不好用也不会来推荐。布丁机场有1元体验套餐,可以先试用下,测试速度不错再购买。点此查看1元体验套餐点击查看布丁机场介绍及使用教程布丁机场 4月16日18点测速图:  布丁 如何使用布丁怎么用布丁机场布丁机场怎么用布丁网络加速布丁网络加速器

分类
教程

PayPal 香港地区免费赠送 HK$80,快来领吧!

PayPal 香港地区免费赠送 HK$80 PayPal 优惠券/ HK$80 PayPal Voucher!领取地址领取地址:点击领取条款和细则1.此优惠为合资格的PayPal帐户持有人使用PayPal付款的合资格购物交易提供HK$80折扣。2.此优惠的有效期为2020年3月13日至3月31日,包括首尾两天(下称「优惠期」)。3.这项优惠只适用于指定香港PayPal帐户持有人,名额有限,先到先得。4.此优惠无法转帐,或交换现金或其他折扣/产品/服务。5.每名符合资格的PayPal帐户持有人可以在不限次数的购物交易中兑换此优惠券优惠券,直至价值用尽或优惠期结束。6.若要兑换优惠,必须在结帐时透过PayPal付款。7.此优惠只适用于合资格的交易,并以港币付款。8.特定商家的网站可能不符合资格享用优惠,受例外条款约束。9.优惠无法累积或与任何其他优惠券或优惠同时使用。10.优惠一经使用无法退款。即指如果购物(以支付此项优惠)不论原因获退款,优惠金额不会存入到PayPal帐户。11.不论本文的任何规定,PayPal和其附属公司在任何时间无须就优惠的任何欠妥之处或问题及/或任何人士使用任何优惠或有关事宜而蒙受或招致的任何损失、受伤、损害或伤害负责或负上法律责任。12. PayPal须全权酌情决定哪些PayPal帐户持有人符合资格兑换此优惠。13. PayPal保留全权及绝对酌情权利取消任何人士兑换优惠的资格。14. PayPal保留权利随时在并无事先通知的情况下取消优惠及/或修改优惠的任何部分或优惠条款和细则。15. PayPal对于有关优惠及这些条款和细则的所有事宜的决定将属最终并具约束力。16. PayPal用户同意书下的所有条款继续适用。17.优惠一经兑换,即表示你同意这些条款和细则。 PayPalPayPal 优惠券

分类
教程

罗永浩第二次直播卖货:表现更好了,观众更少了

罗永浩直播卖货首秀,22 款产品最终成交额 1.1 亿,破了抖音带货的最高纪录。无论在流量还是销量上,这场直播都十分成功。但罗永浩给自己打的分是不及格。那场直播原本的预期是,对得起消费者,对得起观众。但实际结果是,对得起消费者,对不起观众。匆忙、慌乱、掉节奏、临阵磨枪,大多数「第一次」都是这样。作为彻头彻尾的新人,我们认为我们有一万个地方做得不够好,第二场应该会改掉 8000 个左右的问题。罗永浩说道。今晚,第二次直播卖货来了。第二次直播,变更好了吗?「老罗我又来了」「祝老罗重振雄风」「老罗我依然爱你」……八点还没到,弹幕已经显露出观众对这次直播的期待,期待着上次的质疑嘲讽已成过往,期待新的直播间氛围来个翻盘逆转。罗永浩一上场,就直截了当介绍了整场的「高潮」产品:第一个是一分钱五斤的橙子。另一个是半价优惠的汽车。接下来每介绍几个产品,罗永浩就会提一嘴后面还有「橙子和汽车」,拉回观众的耳朵。屏幕里介绍产品也不再是高举传统纸牌,而是直接在屏幕上方大字显示名称、价格、赠品,拉回观众的视线:稍后有一分钱五斤的橙子,半价的哈弗 F7 SUV,不要走开!终于有卖货内味了。随后,罗永浩开始介绍这次的湖北援助计划,表示上一期里和这一期的所有打赏,全都会用来补贴湖北当地的果农。在武汉刚开城两天的当下,直播间里也增加了一丝额外的暖意。他也开始积极和观众互动了。中途罗永浩顺口向助手说了句:有人打赏大礼时,你得提醒我说谢谢,表达一下我的礼貌。准备就绪,第一款产品「良品铺子大礼包」以 AR 形式上场,罗永浩的「吃播」又开始了。他们一边拿上礼包一边吃,一边直接上架,红色优惠价格大字就在屏幕上方闪现,用户可以一边开抢一边看他们吃。产品卖得很快,中途助手提醒,现货已经卖完,开启 7 天预售。速度和节奏比起上次明显轻快很多,五分钟后就开始下一款产品——89 元的除菌除螨洗衣液。听起来优惠力度不大。但实际上,这是他们埋的一个伏笔:说实话,我建议各位先抢。因为我还没算赠品——买它还送一大桶活力 28 消毒液、免洗洗手液、消毒喷雾。五瓶,一共一起 89 元。单赠品,就已经达到 157 元。在大家忙着买的间隙,罗永浩趁此介绍活力 28 消毒液的历史,比起第一次直播也不会再卡顿,显得娴熟不少,从产品年份到公司运作,一分钟就讲完。过程中还不断给观众洗脑:就交个朋友,真的是「交个朋友」的价格。第三款产品后,罗永浩暂停了一下卖货,开始专程感谢打赏,并说要关注一下打赏最高的那位朋友,希望观众向他学习。罗永浩的直播卖货,吃吃喝喝不能停。上次喝奈雪的茶,接下来喝元气森林的燃茶,并首发了首发草莓茉莉的新口味。老罗熟练地介绍起来燃茶使用的代糖,比起捧着奶茶,喝着铁观音的罗永浩似乎更符合这个中年男人的形象。接着出场的是柚家,又是一家米家生态链企业,据称去年卖出了 1 亿包纸巾。为什么是「又」,反正你如果看了上一场直播,可能也会像我一样,怀疑看的不是带货直播,而是老罗亲自主持了小米新品发布会。中途,罗永浩团队也开始学着插一些小惊喜。比如卖完行车记录仪后,突然助手提醒,厂商要给音浪打赏前五位每人送一台行车记录仪,卖完坚果棒后,助手也突然提醒厂家送礼:我们抽取 1 人,送他一年 365 根棒棒。一路顺畅地卖着卖着,罗永浩越来越发挥自如,当轮到一分钱五斤的秭归伦晚春橙时,直接开始双手竖起:所有男生女生准备好——上架!一旁的朱萧木准备详细介绍橙子,罗永浩直接抢了一步:我来说,我快点说,它果肉嫩、无渣、所有平台用户购买的满意度都很高……上一场直播中,罗永浩不小心把极米说成「坚果」,在镜头前鞠躬道歉,露出了依稀可见的头皮。有人说,罗永浩以后可能接不到洗发水广告了,这个担心显然是多余的。这次罗永浩就卖起植观的洗发水,号称可以「肉眼可见显发量」。不知道下次直播,罗永浩的发量会不会「Duang」一声多起来。科技产品也不少。360 智能可视门铃、Amazfit GTR 智能手表、小米走步机、小米 Air2S 真无线蓝牙耳机……大部分产品老罗都谈着亲身体验,比如强调 Amazfit GTR 智能手表的续航。比如在介绍跑步机的时候,230 多斤的罗永浩直接上跑步机开启走路模式,看着老罗一边喘气一边卖货的样子,不少网友在弹幕中直呼「太卖力了!」。但有些产品比如小米的无线耳机 Air 2s,罗永浩也比较良心地强调了它中低端,罗永浩不讲自己的使用体验,这或许是正确的,要知道老罗曾是这样推荐自己喜欢的耳机:从工业设计的角度来看,它不是丑,是丑出翔。作为用户我觉得很有意思,但商家的笑容可能就逐渐消失了。直播一小时后,罗永浩已经介绍 12 个商品,可部分网友已经有点不耐烦了,在评论区喊起了「快上车」。虽然这次直播老罗准备更加充足,节奏明显加快,但平铺直叙的介绍还是略显沉闷,直播一个小时后,直播间的在线人数已经跌破了 50 万。而在第一场直播, 直播开始 6 分钟观看人数就达到 200 万,峰值人数更是超过 290 万。最后一个压轴的,就是哈弗 F7。罗永浩介绍哈弗 F7 销量突破 300 万部时有点激动,调侃道「很多公司连手机都卖不到 300 万部。」这显然是在自嘲曾经的锤子手机,网友们也纷纷对老罗表示「心疼」和「扎心」,直播间人数也很快从 37 万涨到了 45 万。最后罗永浩还请来了长城汽车销售公司副总经理文飞到直播间互动,文飞自称是罗永浩的粉丝,在随后的产品介绍中,就蹦出了「工匠精神」、「偏执」等词汇。上一场直播中,罗永浩就请了小米、搜狗和极米的三位高管到现场「直播喊麦」,这说不定会成为罗永浩直播卖货的一个「保留节目」。22:30 分,直播接近尾声,还有 48.2 万网友在直播间观看。不知道下一次的直播,还有多少人会守候在罗永浩的直播间。带货一哥,不是罗永浩的最终目的罗永浩第一次直播的最后,为了验证吉列剃须刀的锋利,岁月蹒跚的脸怼在镜头前,亲手刮去了自己标志性的山羊胡。网上一片感慨和同情之声,很多「罗粉」纷纷表示看得心酸、不是滋味,罗永浩随后发布微博,长文之上第一句就是:毕竟过些天胡子就长出来了。并不是什么了不起的事情。对罗永浩来说,这只是特定时期的最优选择。虽然没有第一天那么猛,但是有人计算,再来 9 场直播就够了,假以时日还清 3 亿欠款,问题不大。被大家称为「抖音带货一哥」,从第一场直播起,罗永浩就一直被拿来和李佳琦、薇娅比较。他在接受界面采访中说道:在电商直播早期,难免被归类到一起比较,就像国外唱片店把左小诅咒和京剧摆在一起一样。不过李佳琦和薇娅主打美妆和服装领域,罗永浩扎根的依然是科技、生活、文化产品,而且着重对品牌的宣传,在后续直播电商越来越常规化后,差异性就会十分明显了。无论从个人影响力还是平台流量的支持下,电商直播中,罗永浩都有足够实力在自己的品类销售里一直占据着领先的风头。但第一次的失误不可避免要面对用户流失,这次的稳扎稳打,也正在慢慢重新建立起粉丝的好感和信任,不过第二次直播人数的暴跌,以后还能不能摆脱「出道即巅峰」的尴尬,就很难说了。但对于罗永浩来说,直播电商未来只会是他们自有品牌的一个重要销售渠道,可以以此打开商业上的更多可能性,它不会是业务的全部。「转型直播卖货」这件事,在观众眼中看得很重,但对于他本人来说,其实算不上是多大的改变。罗永浩对于事业最大的热情,依然在产品身上。只是罗永浩表示自己不会再做手机,他关注的是手机的下一代计算平台。手机时代已经快过去了。直播,则是通往罗永浩梦想的金币池。接下来,直播依然会每周持续开下去。尽管不知道哪天会戛然终止,哪天罗永浩就会被他的助手顶替掉主播位置,但无论当下的选择是对现实妥协还是另辟蹊径,结果都显而易见:直播电商,至少能让罗永浩尽快还债,之后才有可能让他实现关于产品的理想。在他创立锤子科技做手机失败后,发布沟通软件子弹短信失败后,打造 TNT 工作站系统失败后,投入小野电子烟失败后,成为鲨纹科技「首席忽悠官」失败后…… 失败,似乎永远萦绕在这条不断破局的路上,理想大厦在现实面前轰然倒塌,散落一地的都是制造热闹的看官和迫不得已的窘境。不过罗永浩说:我今年四十八岁,时间上,事业的可操作性上,应该还能承受五六次的失败都没问题。至于心理上,我可以承受无数次的失败。他依然是理想主义的代言人。此文由吴志奇和李超凡共同完成。原文地址:https://www.ifanr.com/1325918

分类
教程

自建免费开源Bitwarden_rs密码管理系统 安装,使用和备份

1Password是去年搞活动入手的,之前一直在用KeePass,但是KeePass在浏览器和安卓手机上使用体验不是很好,用过了1Password之后发现密码管理服务做得真的是非常好了。不过有一个不好的地方就是1Password太贵了,一年至少需要35美元。
而且1Password还只能使用信用卡付款,像Paypal也不支持,这让很多想尝试1Password的朋友“望而却步”了。这篇文章主要分享一下在功能上和使用体验上媲美1Password的免费开源密码管理系统Bitwarden,自建Bitwarden,再也不用担心1Password删库“跑路”了。

一、bitwarden_rs安装教程
网站:

官网:https://bitwarden.com/
第三方项目:https://github.com/dani-garcia/bitwarden_rs

Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。而是bitwarden_rs是第三方开发的Bitwarden安装镜像。

bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。512MB内存机子也能完美运行bitwarden_rs。
1.1 安装前准备
一台VPS主机。bitwarden_rs使用Docker镜像来安装,需要使用一台VPS主机,配置不用太高,我自己用512MB内存也能跑起来,而且非常地流畅。

一个域名。虽然有市面上有少的免费域名,但是建议还是使用付费的域名,密码这个东西比较重要,一旦确定要自建密码管理系统的话就要保证可以长期使用。

1.2 安装好Docker
你需要先安培安装 Docker CE (社区版)和Docker Compose,以下命令是基于Debian系统的演示,如果你是CentOS、Ubuntu,请参考官网:
安装 Docker CE (社区版):https://docs.docker.com/install/linux/docker-ce/ubuntu/
安装 Docker Compose:https://docs.docker.com/compose/install/#install-compose
Debian系统安装Docker CE 和Docker Compose如下:

#卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
#SET UP THE REPOSITORY
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
#检测是否安装成功
sudo apt-key fingerprint 0EBFCD88
#有以下输出就表示成功添加Docker’s official GPG key:
[email protected]:~# sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <[email protected]>
sub rsa4096 2017-02-22 [S]
#添加stable repository
sudo add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable”
#开始安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
#验证 Docker Engine – Community是否安装正确
sudo docker run hello-world
#有以下输出就表示正确安装
[email protected]:~# sudo docker run hello-world
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/

#安装 Docker Compose
sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#检测是否安装成功
docker-compose –version
#有输出即表示成功
docker-compose version 1.24.1, build 4667896b
#如果提示命令不存在,可以手动创建链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

1.3 安装好Nginx
bitwarden_rs官方可以选择使用Caddy来搭建Web服务,但是这里使用Nginx来搭建Web。主要原因有:一你的VPS可以用来建站,bitwarden与你的网站不会相冲突;二Nginx安装和备份的教程多,使用起来简单。推荐使用Oneinstack或者LNMP一键脚本,当然你也可以使用VPS主机面板。

1.4 bitwarden_rs安装
bitwarden_rs安装只需要一句代码就可以搞定:

docker pull bitwardenrs/server:latest

二、bitwarden_rs配置方法
挖站否用的启用命令如下(相关的解释如下):

docker run -d –name bitwarden \
-e SIGNUPS_ALLOWED=true \
-e WEBSOCKET_ENABLED=true \
-e LOG_FILE=/data/bitwarden.log \
-p 8880:80 \
-p 3012:3012 \
-v /bw-data/:/data/ \
bitwardenrs/server:latest

2.1 启动bitwarden
启动bitwarden也很简单,我们只需要执行以下代码即可:

docker run -d –name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
#或者直接使用80端口,不过这样的话你原来建有网站的话80端口就被占用了。
docker run -d –name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest

2.2 设置Nginx
配置Nginx反向代理目的是为了可以使用域名来访问bitwarden,首先我们用Oneinstack安装好了Nginx并且配置好了域名、SSL等,现在打开Nginx域名配置文件,参考下方的内容直接替换即可:

server {
listen 80;
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/mima.wzfou.net.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/mima.wzfou.net.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name mima.wzfou.net;
if ($ssl_protocol = “”) { return 301 https://$host$request_uri; }

client_max_body_size 128M;
location / {
proxy_set_header Host ‘mima.wzfou.net’;
proxy_pass http://127.0.0.1:8880;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}

location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:8880;
}

}

重启Nginx,刷新一下浏览器,你可以看到bitwarden已经可以正常访问了。

2.3 禁止注册
为了保证bitwarden服务器的稳定,你可以禁止bitwarden注册新用户(这一项可以放在最后,否则你自己都无法注册了)。禁止新用户注册:
docker run -d –name bitwarden \
-e SIGNUPS_ALLOWED=false \
-v /bw-data/:/data/ \
-p 80:80 \
bitwardenrs/server:latest
2.4 关闭重启
启动和关闭:
stopped by docker stop bitwarden, a reboot or any other reason you can just start it up again by using

docker start bitwarden

2.5 升级
you just need to pull the latest image, stop and rm the current container and then start a new one the same way as before:
# Pull the latest version
docker pull bitwardenrs/server:latest

# Stop and remove the old container
docker stop bitwarden
docker rm bitwarden

# Start new container with the data mounted
docker run -d –name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
#或者是
docker run -d –name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
2.6 其它设置
启用日志记录:

-e LOG_FILE=/data/bitwarden.log

启用WebSocket notifications:

-e WEBSOCKET_ENABLED=true

三、Docker Compose配置
这一步可选。使用Docker Compose配置可以方便你管理Docker,不用也可以。 在bitwarden目录创建docker-compose.yml文件

vim docker-compose.yml

在docker-compose.yml写入一下配置,参考官方wiki(https://github.com/dani-garcia/bitwarden_rs/wiki/Using-Docker-Compose)

version: “3”

services:
bitwarden:
image: bitwardenrs/server
container_name: bitwardenrs
restart: always
ports:
– “127.0.0.1:8880:80” #将8880端口映射到镜像80端口
– “127.0.0.1:3012:3012”
volumes:
– ./bw-data:/data
environment:
WEBSOCKET_ENABLED: “true” #开启WebSocket
SIGNUPS_ALLOWED: “true” #开启注册,自己注册后改成fale
WEB_VAULT_ENABLED: “true” #web客户端

运行服务

docker-compose up -d #运行服务
docker-compose down #关闭服务
docker-compose restart #重启服务

四、bitwarden管理密码
4.1 网页版bitwarden
网页版的bitwarden管理密码也是非常地方便。以下是bitwarden的界面,有中文:(点击放大)

这是bitwarden的设置页面。

可以自己设置两步验证,加强安全性。

4.2 浏览器bitwarden
bitwarden提供了Chrome、Firefox等浏览器插件,直接安装就可以启用。

在插件设置中填入你自己的bitwarden地址(否则是进入到官方的地址)

bitwarden的Chrome浏览器插件界面如下:(点击放大)

bitwarden浏览器设置页面。

bitwarden浏览器插件支持手动添加登录。

同时,bitwarden浏览器插件也会提示保存密码。如下图:

bitwarden浏览器插件还有一个非常好用的功能就是自动加载密码。

4.3 bitwarden电脑客户端
bitwarden有电脑客户端,操作类似于网页版。

bitwarden用起来和1Password一样,如果你是1Password重度用户不会陌生的。

4.4 bitwarden手机客户端
bitwarden手机APP用户起来非常地方便,如下图:

bitwarden支持指纹解锁,以及自动填充密码等。

五、bitwarden导入1Password
bitwarden支持市面上绝大多数的密码管理器的数据导入,例如KeePass、Enpass、Avast Passwords、LastPass、Chrome、SafeInCloud、Zoho Vault等:

https://help.bitwarden.com/article/import-data/

如果是导入1Password,先打开你的1Password电脑桌面客户端,选择导出。

格式选择CSV,打开你的bitwarden网页版,点击工具下的数据导入。

选择1Password类型,点击导入即可。

六、bitwarden备份与恢复
6.1 手动备份
bitwarden备份最关键的就是sqlite3数据库文件了,你可以直接进入到bw-data目录下,将sqlite3数据库保存下来。当然你也可以将bw-data目录下所有的包括附件文件夹、图标缓存文件夹、密钥等文件备份下来。

6.2 自动备份
利用定时任务执行bitwarden备份,首先新建一个文件夹:mkdir /bw-data/db-backup,然后执行数据库备份任务。代码如下:

sqlite3 /bw-data/db.sqlite3 “.backup ‘/bw-data/db-backup/backup.sqlite3′”

6.3 恢复备份
bitwarden要恢复备份的话也很简单,直接将sqlite3数据库重写替换就可以了,其它的几个文件夹可以覆盖,也可以保留新的,不影响。如果你的数据库路径与原来的不一致,可以手动指定,代码示例:

docker run -d –name bitwarden \
-e DATABASE_URL=/database/bitwarden.sqlite3 \
-v /bw-data/:/data/ \
-v /bw-database/:/database/ \
-p 80:80 \
bitwardenrs/server:latest

七、总结
bitwarden作为一款开源的密码管理器,其本身支持平台之多,功能之全面,是替代1Password的理想品。bitwarden安装简单,采用Docker镜像,特别适合已经有了VPS建站的朋友,在不影响建站的情况下正常使用bitwarden。
bitwarden可以支持多用户注册使用,如果想要让bitwarden发送邮件的话,可以使用SMTP发邮件,参考代码如下:

docker run -d –name bitwarden \
-e SMTP_HOST=<smtp.domain.tld> \
-e SMTP_FROM=<[email protected]> \
-e SMTP_PORT=587 \
-e SMTP_SSL=true \
-e SMTP_USERNAME=<username> \
-e SMTP_PASSWORD=<password> \
-v /bw-data/:/data/ \
-p 80:80 \
bitwardenrs/server:latest

 
文章出自:挖站否 https://wzfou.com/bitwarden-rs/,版权所有。部分内容参考自:bitwarden_rs Wiki。
bitwardenbitwarden-rs密码管理密码管理器

分类
教程

免费好用的订阅管理工具,高效帮助你管理互联网数字账单

本文转自有数鸟的开发者 @Bourne,原标题:《【自荐】免费好用的订阅管理工具,高效帮助你管理互联网数字账单》。大家好,我是有数鸟的独立开发者,今天想向大家介绍一下我们的产品:有数鸟。有数鸟产品初心大的来说,我们在帮助用户管理互联网数字账单。小的来说,做了一款我们需要的工具来管理订阅。有数鸟故事背景如今,订阅会员越来越普遍,不知不觉间,订阅服务已经满足了不少生活需求。很有可能此时站在你面前的这个人,就是一位滴滴白金会员、腾讯视频 VIP、QQ 音乐绿钻持有者、网易云音乐黑胶用户、知乎盐选成员、斗鱼伯爵贵族——王铁柱。在我们的数据库里已经记录了1479种不同的互联网订阅服务,每天还在不断新增。有数鸟产品功能<订阅管理:用户可以通过官方推荐和自定义会员的方式添加各种会员。到期管理:我们目前通过微信服务号的方式来推送到期提醒,当然前提是需要关注一下服务号,不定期我们也会在服务号里面给大家同步一下产品进度,包括一些会员技巧和优惠信息。数据统计:不算不知道,一算吓一跳,这是大部分用户使用我们产品后的感受,原来我一年花了这么多钱。优惠续费:我们也在商业方面做了一些小尝试,打通了会员官方直充通道,用老罗的话来说:基本不赚钱,一个优惠的价格让大家可以进行会员续费,我们也希望在商业和体验层面能找到一个更好的平衡点,让我们可以持续迭代。订阅广场:如果你关闭了隐私开关,那么在会员详情里面,有个小入口可以看到有相同的会员的人,你也可以看看她还订阅了什么,当然可以主动关闭这个入口,别人也看不到你的订阅,这算是一个小小的彩蛋。在这方面我们做的比较克制,希望有个地方用户之间有一点互动的小窗口又不希望打扰彼此,后续能够听取大家的建议。有数鸟未来计划数据:目前小程序已经累计了上万用户,大部分都是用户之间的口碑传播,我们还没有做过商业推广。版本:目前小程序的版本已经趋近稳定,除了日常迭代优化外,我们准备启动 APP 开发的计划,iOS 和 Android 大概会在5月份上线,用 Flutter 开发一鸡双吃,有兴趣参与内测版本的小伙伴可以找我提前体验。团队:作为 Side Project,我们有一支全栈技术小队,人少话少搭配默契,团队是远程工作模式,利用业余时间在推进项目,大家都感兴趣和看好这件事情,觉得很有意思。组队:看到用户反馈很不错,我们也在找「用户运营」和「营销推广」方面有兴趣的小伙伴参与进来,希望有一天我们也可以枝繁叶茂,葱郁参天。最后,感谢,我们希望做得更好,为喜欢付费,为正版买单,希望每一分钱都值得。扫码小程序二维码体验,当然你也可以通过微信公众号找到我,富贵让我们相遇。 有数鸟

分类
教程

AWS GCP AZURE 等各种云账号虚拟卡

小馒头AWS AWS GCP AZURE 等各种云账号虚拟卡 AWS GCP AZURE 等各种云账号虚拟卡优惠专卖   点击直达AWS实体卡全区号150.00元1个AWS全区号39.00元1个谷歌云GCP350.00元1个微软云Azure150.00元1个4284日本VISA9.90元1个5329香港Mastercard96.00元1个4288美国VISA880.00元1个5224美国MasterCard210.00元1个 AWSAZUREGCP