<style>
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid black;
padding: 5px;
}
#fixedHeader {
position: sticky;
top: 0;
}
</style>
<table width="100%" border="1" cellspacing="0" cellpadding="2">
<thead id="fixedHeader">
<tr>
<td>标题1</td>
<td>标题2</td>
</tr>
<tr>
<td colspan="2">合并列</td>
</tr>
</thead>
<tbody>
<tr>
<td>内容1</td>
<td>内容2</td>
</tr>
</tbody>
</table>
Warning
本项目为开源项目,使用者必须在遵循 GOOGLE的使用条款以及法律法规的情况下使用,不得用于非法用途。
根据《生成式人工智能服务管理暂行办法》的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。
原文地址:https://github.com/babaohuang/GeminiProChat/blob/main/README_cn.md
Note
关于 API 使用过程中 “User location is not supported for the API use” 的解决方案
如果你遇到了 “User location is not supported for the API use” 的问题,请按照以下步骤进行解决:
- 前往 palm-netlify-proxy 仓库并点击其中的 “Deploy With Netlify。
- 部署完成后,你将收到 Netlify 分配的域名 (例如 https://xxx.netlify.app)。
- 在你的 Gemini Pro Chat 项目中,设置名为 API_BASE_URL 的环境变量,其值为部署 palm-proxy 时获得的域名 (https://xxx.netlify.app)。
- 重新部署你的 Gemini Pro Chat 项目来完成配置。这应该可以解决问题。
感谢 antergone 提供解决方案。
https://ai-20230626.fakeopen.com/auth
欢迎
本服务可帮助 ChatGPT 被拒用户获取 Access Token。
如果你没有ChatGPT账号,本服务对你无用。
获取到的 Access Token 有效期为10天。
支持 Google / Microsoft 等第三方登录。
不接触用户账密信息安全可靠。
请使用Chrome安装插件,再点击登录。
我没有梯子,直接信你,我要直接登录!
国内流氓软件经常为了某些目的无所不用其极,竟然想到通过Shell Extension在“此电脑”里面塞快捷方式,用户无法轻易删除。除了在这些流氓软件本身的设置里取消这个快捷方式,还有没有更优雅的办法?百度给出的答案无一例外都是修改注册表,这对于电脑小白极不友好,又非常危险。万一误删了系统关键条目,麻烦可就大了。
于是,我萌生了开发这个小工具的念头。4天时间,查了大量资料,终于把这个写完了,又弥补了一片空白!
下载的“officedeploymenttool_16731-20398.exe”放桌面
在桌面新建一个文件夹,命名为office
双击第一步中下载的EXE文件,后如下图操作:
语言之后的选项都选默认就可以了
导出XML文件(见下图)
Aqara妙控开关 S1E目前只有零火版的,仅支持零火线供电,需要开关盒里面同时有火线与零线。而很多家庭(尤其是一些精装房和老房子)都是单火线布线,因为之前安装传统机械开关只需要火线和灯线,不需要零线(零线直接与灯连接,没有接入到开关暗盒内)。
在家里开关盒没有零线的情况下,如果要安装Aqara妙控开关 S1E的话通常需要改线(增加零线),比较麻烦。这也是很多伙伴不得不放弃了选购美观漂亮的Aqara妙控开关 S1E的原因。
没有零线怎么办? 笔者尝试过重新拉线,但是没有成功。后来,在朋友的介绍下找到了一款单火转换器(外接式),它可以让零火版的触屏智能开关转换用于单火线路,原位替换原来的开关,不用砸墙、重新布零线,几分钟就能搞定,很简单。
下面笔者来分享一下Aqara 妙控开关S1E在没有零线的条件下的安装方法和过程,希望对大家有所帮助。
单火线转换器(外接式单火线供电套件)由开关导通器XD101(绿色)和负载分流器XD102(红色)组成,安装方法相对简单:开关导通器XD101接于零火智能开关外部端子上(放在开关底盒内),负载分流器XD102并接于灯负载上(放在灯具上)。
1.安装过程中涉及强电,需由专业人员依照电工规范和产品说明书进行安装。
2.安装前务必关闭总闸,禁止带电操作,避免发生危险。
3.不要超出标识的最大功率负载使用。
docker pull pengzhile/pandora
docker run -e PANDORA_CLOUD=cloud -e PANDORA_SERVER=0.0.0.0:8899 -p 8899:8899 -d pengzhile/pandora
https://ai.fakeopen.com/auth
可变 值
ND_LASTFM_ENABLED 设置 false 为完全禁用 Last.fm 集成
ND_LASTFM_APIKEY Last.fm 获取的 API Key
ND_LASTFM_SECRET Last.fm 获取的 Shared Secret
ND_LASTFM_LANGUAGE 用于从 Last.fm 检索的语言的两个字母代码,简体中文为 zh
原文地址 https://zb.v1.mk/
肥羊IPTV源
https://ghproxy.com/https://raw.githubusercontent.com/youshandefeiyang/IPTV/main/main/IPTV.m3u 肥羊4K/8K源
https://ghproxy.com/https://raw.githubusercontent.com/youshandefeiyang/IPTV/main/main/bestv.m3u 肥羊百视通源
https://football.v1.mk 肥羊足球源
YanG
https://ghproxy.com/https://raw.githubusercontent.com/YanG-1989/m3u/main/Gather.m3u️ YanG Gather
https://ghproxy.com/https://raw.githubusercontent.com/YanG-1989/m3u/main/yu.m3u️ YanG 斗鱼
https://ghproxy.com/https://raw.githubusercontent.com/YanG-1989/m3u/main/ya.m3u️ YanG 虎牙
YueChan
https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/IPTV.m3u YueChan IPv6
https://ghproxy.com/https://raw.githubusercontent.com/YueChan/Live/main/Radio.m3u YueChan Radio
APTV
https://ghproxy.com/https://raw.githubusercontent.com/Kimentanm/aptv/master/m3u/iptv.m3u️ APTV IPv6
官网原文1:Docker部署Seafile专业版
官网原文2:将 OnlyOffice 加入到 docker-compose.yml
以下都是基于http的,最终用群晖的反代功能转https
version: '2.0'
services:
db:
image: mariadb:10.5
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=sl2w71201 # Requested, set the root's password of MySQL service.
- MYSQL_LOG_CONSOLE=true
volumes:
- /volume2/docker/seafile/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
elasticsearch:
image: elasticsearch:7.16.2
container_name: seafile-elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
本地下载:rufus-3.21.exe
如果无法进入,尝试微软官方提供的办法:
在系统启动期间调整 UEFI 设置:
关闭 Surface 并等待大约 10 秒以确保其关闭。
长按 "调高音量 "按钮,同时按下并释放 电源按钮。
当 Microsoft 或 Surface 徽标显示在屏幕上时,请继续按住"调高"(音量+键,F6)按钮,直到出现 UEFI 屏幕。
左侧选择Security
选择Change configuration
在windows下把u盘格式化为fat32格式
在官方这里https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/
下载 syslinux-<版本号>.zip 文件 ,可以下载最高版本。
解压后,在win32目录里面使用以下命令来“让u盘可以变成bootable”
在win7系统下,需要用管理员账户执行cmd
命令:syslinux.exe -m -a j: (j:为u盘的盘符)
并在syslinux.cfg里面加入
default vmlinuz
append initrd=initrd.gz
http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/initrd.gz
http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/vmlinuz
lenny 安装镜像: http://debian.cn99.com/debian-cd/debian-500-i386-CD-1.iso
打开“套件中心”-“设置”-“套件来源”-“新增”,名称随意填,位置填入源“http://packages.synocommunity.com/”。
2.2.1 控制面板-点击右上角 "高级模式"
2.2.2 点击右下角的“终端机和SNMP”
2.2.3 打开终端机和SNMP”,勾选“启动SSH功能”
wget https://gitee.com/zgrm/transmission-web-control/raw/master/release/install-tr-control-cn.sh
# TRANSMISSION 4.0 WEB目录由web改为public_html。
root@:/var/packages/transmission/target/share/transmission# ls -lt
total 0
drwx---r-x 1 root root 142 Mar 28 19:35 web
drwxr-xr-x 1 sc-transmission synocommunity 132 Mar 28 10:07 public_html
root@:/var/packages/transmission/target/share/transmission# cd web
root@:/var/packages/transmission/target/share/transmission/web# ls
favicon.ico index.htm
因为需要重装nas,所以对这个leanote做个安装配置记录,以免以后麻烦。
用户名:admin
密码:abc123
主题包-> 点击下载-> Leanote default.zip
server {
listen 44490 ssl;
server_name 13ua.com;
ssl on;
ssl_certificate /usr/share/nginx/html/13.crt;
ssl_certificate_key /usr/share/nginx/html/13.key;
charset UTF-8;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location / {
proxy_http_version 1.1;
proxy_pass http://192.168.2.150:44490;
proxy_set_header Host $host:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 2000m; #这里设置上传文件大小限制
}
}
# 官方服务器(若不稳定,请用备用脚本)
curl -s https://ftp.synology.com/support_web/Tools/script/pgsql_analyzer.sh | sh -s -- -r
# 若官方下载服务器不稳定,作为备用,请执行下面命令
wget https://www.moewah.com/source/pgsql_analyzer.sh && chmod +x pgsql_analyzer.sh && ./pgsql_analyzer.sh -r
自己架设了leanote后,通过admin对系统upload files and sizez做了设置但还是有上传大小限制,百度了N久之后发现问题可能出在了nginx设置上。
关于申请TMDB的API,申请理由。。。emmm对不起我真的是拷贝了很多重复的词(videovideovideovideovideovideo)写进申请理由,然后。。。。然后就过了。。。
13.226.238.76 api.themoviedb.org
13.224.161.90 api.themoviedb.org
13.35.7.102 api.themoviedb.org
13.225.103.26 api.themoviedb.org
13.226.191.85 api.themoviedb.org
13.225.103.110 api.themoviedb.org
52.85.79.89 api.themoviedb.org
13.225.41.40 api.themoviedb.org
13.226.251.88 api.themoviedb.org
13.225.89.239 api.thetvdb.com
13.249.175.212 api.thetvdb.com
13.35.161.120 api.thetvdb.com
我用得axboy\leanote镜像
注意添加smtp相关端口,我用了smtp.163.com,post:25
然后在套件来源里添加第三方的来源,名称随便,位置输入http://packages.synocommunity.com,然后保存一下就可以了。
sudo curl -sSL https://get.docker.com | sh
#下载 Docker 图形化界面 portainer
sudo docker pull portainer/portainer
#创建 portainer 容器
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
sudo docker run --name=filebrowser \
-v /docker/fb:/srv \ #fb自己的主目录
-v /docker/hass:/srv/hass \ #HASS的config目录
-v /docker/nginx:/srv/nginx \ #nginx的conf文件有在目录
-v /docker/ssl:/srv/ssl \ #证书目录及nginx的html目录
-p 8394:80 \
--privileged --restart unless-stopped \
filebrowser/filebrowser
docker run -it -d --name nginx --privileged --net=host
-v /d
(完全解决)Windows如何使用批处理命令进行SSH连接并自动输入密码
新建一个后缀名为.vbs的文件,可以直接用写字板来编辑
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe"
WScript.Sleep 1500
WshShell.SendKeys "ssh -p22 pi@192.168.2.122"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1500
WshShell.SendKeys "这里是ssh密码"
WshShell.SendKeys "{ENTER}"
看效果吧
树莓派上最简洁的blog,就是hexo了
<div class="page-describe">
<%=_p('counter.categories',site.categories.length)%>
</div>
<div class="tags-contain"> <!-- 这里的tags-contain没错的 -->
<%site.categories.data.forEach(function(element) {%>
<div class="mdui-chip tags-chip">
<span class="mdui-chip-icon"><%=element.length%></span>
<a class="mdui-chip-title" href="<%-url_for(element.path)%>"><%=element.name%></a>
</div>
<%})%>
</div>
.
<%# Tab 1 %>
.
.
<a href="<%- url_for(str[0]) %>" <% if ( element=="管理" || __(element)=="管理"){%> target="_blank" <%}%> class="mdui-list-item mdui-ripple">
点击这里看原文:https://x1g.la/wky-armbian.html
在网上用关键字“too many security failures”查找到的解决方法多数都是linux其它发行版的。解决不了我的树莓派的VNC远程问题。
sudo systemctl restart vncserver-x11-serviced.service
1.先在手机商店下载testflight
2.Appletv端也使用同样账号
3.把以下两个网址在手机苹果浏览器打开
https://testflight.apple.com/join/MuM...
在文本录入时,大姆指常常会误触触控板造成光标逃离,这是个很烦人的事。所以想搞个快捷键来打开/关闭触控板。
vic@vic-Surface-Go:~$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Surface Type Cover Consumer Control id=9 [slave pointer (2)]
⎜ ↳ ELAN9038:00 04F3:261A Stylus stylus id=10 [slave pointer (2)]
⎜ ↳ ELAN9038:00 04F3:261A Stylus eraser id=15 [slave pointer (2)]
⎜ ↳ ELAN9038:00 04F3:261A touch id=16 [slave pointer (2)]
⎜ ↳ Microsoft Surface Type Cover Mouse id=17 [slave pointer (2)]
⎜ ↳ BleMouse id=20 [slave pointer (2)]
⎜ ↳ Microsoft Surface Type Cover Touchpad id=18 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus
如果你在linux系统上启动了很多自己的服务,如果直接执行系统的reboot或者shutdown命令,可能会发生一些异常的现象,所以我们在重启和关机前,应该按照我们的意愿去自定义清理一些服务或者资源等。但是网上的方式大多是以Centos6为教程,修改chkconfig和rc0.d,rc6.d的内容。在Centos7中以及不适用了。
本文就介绍一下在Centos7系统中,使用systemctl的方式来自定义关机前执行脚本。
vi /usr/lib/systemd/system/stopSrv.service Centos
创建该文件然后加入下面的内容,需要把ExecStart=/home/my_script这一行换成自己的脚本路径
[Unit]
Description=close services before reboot and shutdown
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
# executed before the target state is entered
# Also consider kexec.target
[Service]
Type=oneshot
ExecStart=/home/my_script #your path and filename
[Install]
WantedBy=halt.target reboot.target shutdown.target
vi /lib/systemd/system-shutdown/stopSrv.service Ubuntu 16.04
[Unit]
Description=Run command at shutdown
# 假设要执行的命令依赖网络
Requires=network.target
DefaultDependencies=no
Before=shutdown.target re
-- Jira数据库中,用户信息都存放在表 cwd_user中
-- 切换到jiar数据库
use jiradb;
-- 更改密码为sphere
update cwd_user
set credential='uQieO/1CGMUIXXftw3ynrsaYLShI+GTcPS4LdUGWbIusFvHPfUzD7CZvms6yMMvA8I7FViHVEqr6Mj4pCLKAFQ=='
where user_name='XXXX'
;
-- 更改密码为123456
update cwd_user
set credential='{PKCS5S2}ms9AdSR9vnOXqnNdEmRG/kxRc22qTnx3Y/nwdyaNEg5/XAANouQ+akxcQbFjJiQ4'
where user_name='XXXX'
;
上述的密码不一定可用,你可以从其它能登记的用户中复制一个密码用来更新。
create table #a (af1 int)
insert into #a select 1
insert into #a select 2
create table #b (bf1 int)
insert into #b select 2
insert into #b select 3
select 'lwft join' x,a.*,b.* from #a a left join #b b on a.af1=b.bf1
select 'right join' x,a.*,b.* from #a a right join #b b on a.af1=b.bf1
select 'inner join' x,a.*,b.* from #a a inner join #b b on a.af1=b.bf1
select 'lwft join b is null' x,a.*,b.* from #a a left join #b b on a.af1=b.bf1 where b.bf1 is null
select 'right join a is null' x,a.*,b.* from #a a right join #b b on a.af1=b.bf1 where a.af1 is null
select 'full outer join' x,a.*,b.* from #a a full outer join #b b on a.af1=b.bf1
select 'full outer join a or b null' x,a.*,b.* from #a a full outer join #b b on a.af1=b.bf1 where a.af1 is null or b.bf1 is null
drop table #a
drop table #b
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"192.168.18.109"
net start w32time
w32tm /config /update
w32tm /resync /rediscover
无论是下载高清电影,还是用手机录制的视频,很多时候文件体积都非常巨大。收藏保存或分享时会比较麻烦,因此常备一款真正好用的免费视频压缩压制/格式转换软件是很有必要的。
网上的视频处理工具非常繁多,收费免费的一大堆,很多人根本不知道怎么选。而在尝试过的软件中,我认为 Handbrake 可能是最好的开源免费跨平台视频压缩和格式转换软件了!作为一款万能视频转码压制工具,它不仅免费,还跨平台支持 Win、Mac、Linux 三大操作系统……
经常碰到这样的场景,规定的演讲报告时间所剩无几,甚至是已经超时,但演讲者并不知情,做为主持人只能从旁边轻轻的善意的提醒,但有时演讲者会没注意到主持人的提醒...
这里要介绍的就是这样一款用于提醒演讲者时间的工具,在演讲过程中,随时可以看到还剩多小时间,进而可以动态调整演讲的进度。
这个工具在Powerpoint处于演示模式下即会自动开始倒计时,可以设定本次演讲的总时长。通过在屏幕一小块地方显示时间的方式,可以达到提醒演讲者时间的功能。
启动命令
启动后状态栏效果
准备解压 SunloginClient-10.0.2.24779_amd64.deb ...
/usr/local/sunlogin/scripts/stop.sh: 第 19 行: [: Mint:需要整数表达式
sunloginclient: 未找到进程
Sunlogin stopped
/var/lib/dpkg/info/sunloginclient.prerm: 第 18 行: [: Mint:需要整数表达式
Removed /etc/systemd/system/multi-user.target.wants/runsunloginclient.service.
正在解压 sunloginclient (10.0.2-24779) 并覆盖 (10.0.2-24779) ...
正在设置 sunloginclient (10.0.2-24779) ...
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
grep: /etc/upstream-release: 是一个目录
Error:unknown OS it not impl
Installation failed
dpkg: 处理软件包 sunloginclient (--install)时出错:
已安装 sunloginclient 软件包 post-installation 脚本 子进程返回错误状态 1
正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
正在
@echo off
FOR /F "usebackq delims==" %%i IN (`dir /s /ad /b`) DO @move "%%i"\*.* .\ && set /a js+=1
echo 共移动了%js%个文件
set /a js=0
pause
wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
root@vic-Surface-Go:~# wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
--2021-11-14 19:17:36-- https://deepin-wine.i-m.dev/setup.sh
Resolving deepin-wine.i-m.dev (deepin-wine.i-m.dev)... 104.198.14.52
Connecting to deepin-wine.i-m.dev (deepin-wine.i-m.dev)|104.198.14.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1978 (1.9K) [application/x-shellscript]
Saving to: ‘STDOUT’
- 100%[===================>] 1.93K 7.00KB/s in 0.3s
2021-11-14 19:17:39 (7.00 KB/s) - written to stdout [1978/1978]
命中:1 http://ftp.sjtu.edu.cn/ubuntu focal InRelease
命中:2 http://ftp.sjtu.edu.cn/ubuntu focal-updates InRelease
命中:3 http://ftp.sjtu.edu.cn/ubuntu focal-backports InRelease
忽略:4 https://mirror.sjtu.edu.cn/linuxmint uma InRelease
命中:5 https://m
apt-get install davfs2
先在 Linux 系统上创建个要挂载的文件目录,文件名自定义,由于缙哥哥为了方便辨认,直接设置了以TeraCLOUD网盘名称的文件名。
mkdir /teracloud
然后挂载TeraCLOUD远端WebDAV至本地的/teracloud目录下。
mount -t davfs https://13ua.com:1608/ /home/vic/NAS-1606-dav/
上面的 WebDAV 地址和文件目录到时候要根据自己的替换下,别照抄我的然后说不能用。回车后输入自己的用户名和密码,回车搞定。
重启后你会发现,通过 WebDAV 挂载的磁盘没有了,也就意味着你每次重启 Linux 系统,都需要重新挂载,那么有没有办法让它跟 Windows 系统一样的自启动呢?其实也不难,缙哥哥教你如何操作。
nano /etc/davfs2/davfs2.conf
nano /etc/davfs2/secrets
https://13ua.com:1608/ user password
sudo nano /etc/fstab
mount -t davfs https://13ua.com:1608/ /home/vic/NAS-1606-dav/
以上镜像安装后都没有什么大的问题,除了Manjaro两个桌面的缩放功能有较大的问题外,就只剩下WiFi驱动异常而已,在下面内容,我会告诉你怎么解决它。
事实上WiFi驱动问题,你只需要去GitHub上下载一个驱动就能解决。
首先,你通过正常渠道获得的Surface-Go一般运行的是S模式下的Win10,那么,你先得把它升级到家庭版,具体操作请自己查找,这里就不细说了。
系统升级到家庭版后,你需要安装EasyUEFI来改些东西,免费版的足够了。安装完打开后,选择“管理EFI启动项”,然后把“Windows Boot Manager”这一项禁用,它影响到我系用Linux镜像盘启动了,然后关机。在此之前你一定要考虑清除,因为你执行完操作关机后它就不能进入系统了。
接下来按住音量“+”键和电源键进入Surface-Go可触控操作的BIOS。然后选择界面左侧“Security”,再将右侧的“Secure Boot”切换为“Disabled”。之后左侧选择“Boot configuration”,再在右侧将“USB Storage”项置顶,顺便检查“Enable Boot from USB devices”项是否为“Enabled”。接下来左侧选择“Exit”,然后右侧选择“Restart now”,此时保存你的设置并退出。
note-red中添加节点node-red-contrib-home-assistant
docker run -it -p 1880:1880 \
-v node_red_data_vol:/data \
-e TZ="Asia/Shanghai" \
--name nodered \
nodered/node-red
对我来说nginx就是两个作用,(1)当个WEB服务器用(2)给其它WEB应用走https
docker pull nginx
docker run -it -d --name mynginx --privileged --net=host nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 443 ssl;
server_name 13ua.com;
ssl on;
ssl_certificate /usr/share/nginx/html/13
sudo apt-get update #时间比较长噢!
sudo apt-get upgrade -y #时间非常非常长噢!
sudo apt-get install python3 python3-venv python3-pip
sudo useradd -rm homeassistant
$ cd /srv
$ sudo mkdir homeassistant
$ sudo chown homeassistant:homeassistant homeassistant
$ sudo su -s /bin/bash homeassistant
$ cd /srv/homeassistant
$ python3 -m venv .
$ source bin/activate
(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant
pip3 install sqlalchemy
hass
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 uninstall homeassistant
注意 这一步操作你首先是重新进入pi账户登录或者root目录的根目录 (退出虚拟空间的命令是 deactivate )
sudo su -s /bi
找了个小容量的SD卡,大小无所谓,128MB、512MB的都可以,因为只会用到 20 MB 左右的容量。所有只要不低于20MB的SD卡都是可以的。
将 .img 文件镜像按照写入SD卡的方法,直接写入U盘!
然后将安装系统的U盘的boot分区的文件复制到SD卡根目录下
(直接将U盘里面在windows系统下能查看到的分区文件全部复制,粘贴在SD卡上就可以了,SD卡分区支持FAT、FAT32格式,不支持NTFS格式。)
Ps:我的SD卡压根儿就没格式化,只是简单的将里面的文件给全删除了,但小派它就是启动成功了……看来SD卡的0扇区没有引导程序,小派每次启动时会自动在SD卡根目录下寻找启动程序
修改SD卡根目录下的一个 cmdline.txt 文件
因为U盘现在有2个分区,一个是boot(/dev/sda1)分区,另一个才是root(/dev/sda2)分区
所以将
root=/dev/mmcblk0p2
修改为
root=/dev/sda2
然后,插好SD卡和U盘 就能直接启动成功了!
该方法,以后安装系统可以不再需要SD卡。当然存在SD卡时,启动时还是优先启动SD卡的系统。
但是需要借助raspbian(2017-04-10及之后的版本)来打开该功能。
Step:
先向sd卡中烧写好镜像,修改/boot/config.txt
添加program_usb_boot_mode=1
开机,此时已经打开usb boot模式
在终端执行sudo vcgencmd otp_dump | grep 17:
若显示17:3020000a表示已经打开
向U盘中烧写入系统,取出sd卡,插上u盘启动即可
google和百度的TTS我都不太好用,因为我的homeassistant是docker版的,无法调用宿主声卡,所以我曲线救国
switch:
- platform: command_line
switches:
egg:
command_on: sed -i 's/stop/on/' /config/egg.txt
command_off: sed -i 's/stop/off/' /config/egg.txt
while [ i==0 ]
do
msg=$(sed -n '1,1p' /data/docker/hass_config/egg.txt)
echo "查看egg.txt: ... ... ... " $msg
if [ $msg = "on" ];then
echo "on"
cvlc --no-interact --play-and-exit file:///opt/say/egg_on.mp3
sleep 7;
sudo sed -i 's/on/stop/' /data/docker/hass_config/egg.txt
elif [ $msg = "off" ];then
echo "off"
cvlc --no-interact --play-and-exit file:///opt/say/egg_off.mp3
sleep 7;
sudo sed -i 's/off/stop/' /data/docker/hass_config/egg.txt
else
echo "stop"
fi
sleep 2;
done
我的是raspberry pi,使用debian系统
sudo apt-get update
sudo apt-get install forked-daapd
sudo cp /etc/forked-daapd.conf /etc/forked-daapd.conf.bak
sudo nano /etc/forked-daapd.conf
将directories = { "/srv/music” } 修改为” /media/nas/cloud/music”
/etc/init.d/forked-daapd restart ##若修改目录后可以通过重启forked-daapd
sudo sync
sudo reboot
docker run -it \
-v /data/docker/lms/data:/config:rw \
-v /data/docker/lms/music:/music:ro \
-v /data/docker/lms/list:/playlist:rw \
-v "/etc/localtime":"/etc/localtime":ro \
-v "/etc/timezone":"/etc/timezone":ro \
-p 9002:9002/tcp \
-p 9090:9090/tcp \
-p 3483:3483/tcp \
-p 3483:3483/udp \
-e HTTP_PORT=9002 \
--restart always \
lmscommunity/logitechmediaserver
docker run -d \
--name=lms \
--network=host \
-v /data/docker/lms/data:/config:rw \
-v /data/docker/lms/music:/music:ro \
-v /data/docker/lms/list:
BabelPod是一款巧妙的工具可将音频输入和蓝牙输入引入HomePod
原文:http://faden.me/2018/03/18/babelpod.html
#先卸载旧版NODE
sudo apt-get remove node
#装新的
$ wget https://nodejs.org/dist/v9.8.0/node-v9.8.0-linux-armv6l.tar.xz
$ sudo mkdir /usr/local/lib/nodejs
$ sudo tar -xJvf node-v9.8.0-linux-armv6l.tar.xz -C /usr/local/lib/nodejs
$ sudo mv /usr/local/lib/nodejs/node-v9.8.0-linux-armv6l/ /usr/local/lib/nodejs/node-v9.8.0
#设置
vim ~/.profile
#把下面这几句加到最后
# Nodejs
export NODEJS_HOME=/usr/local/lib/nodejs/node-v9.8.0
export PATH=$NODEJS_HOME/bin:$PATH
#生效
source ~/.profile
#Install the airtunes Node library (I created a fork to work around a bug):
pi@raspberrypi:~/ $ git clone -b fix_port_0_error https://github.com/afaden/node_airtunes.git
pi@raspberrypi:~/ $ cd node_airtunes
pi@raspberrypi:~/node_airtunes $ npm install
pi@raspberrypi:~/node_airtunes $ cd ..
#Install and start BabelPod:
pi@raspberrypi:~ $ git clone https://github.com/afaden/babelpod.git
pi@raspberry
wget http://simcommander.cn/download/haisantts-py.gz
tar xvfz haisantts-py.gz
cd haisantts-py
python haisantts.py3
#coding=utf-8
import sys
saystr = sys.argv[1]
import ctypes
from ctypes import *
lib = ctypes.cdll.LoadLibrary("./libhaisantts.so")
lib.startHaisanTTS.argtypes=[POINTER(c_char)]
TTS=(c_char * 100)(*bytes((saystr),'utf-8'))
cast(TTS, POINTER(c_char))
lib.startHaisanTTS(TTS)
想弄TTS,不管是百度的还是谷歌的,我都搞不定!
然后想到:不能TTS我就直接播放事先录好的语音提示呗!
当某开关状态从OFF变为ON
延时 N 秒
将某开关状态改为OFF
调用快捷指令“通过SSH运行脚本”
cvlc --play-and-exit file:///home/pi/Music/TTS001.mp3
安装播放软件:
- 安装MPD、MPC
sudo apt-get install mpd mpc
sudo vi /etc/mpd.conf
tts:
- platform: baidu
app_id: 23833493 #app_id,api_key,secret_key从百度云上注册得到
api_key: V7G3BR6WZKYiSu4b4qcbxwNb
secret_key: KHqSMswDgzkXPEqrkmYCk9bdUGUVqPsm
speed: 5 #speed:语速0-9(缺省5)
pitch: 5 #pitch:语调0-9(缺省5)
volume: 15 #volume:音量0-15(缺省5)
person: 0 #person:声音(0:女,1:男,3:百度合成,4:百度合成,缺省0)
media_player:
- platform: mpd
host: 127.0.0.1
ssh-keygen -R “你的远程服务器ip地址”
sudo docker run --name=filebrowser \
-v /data/docker:/srv \
-p 8394:80 \
--privileged --restart unless-stopped \
filebrowser/filebrowser
创建配置数据库:filebrowser -d /database-1.db config init
设置监听地址:filebrowser -d /database-1.db config set --address 0.0.0.0
设置监听端口:filebrowser -d /database-1.db config set --port 80
添加一个用户:filebrowser -d /database-1.db users add root password --perm.admin //其中的root和password分别是用户名和密码,根据自己的需求更改
设置SSL证书: filebrowser -d /database-1.db config set --cert /srv/hass_config/13.crt --key /srv/hass_config/13.key
cp database.db database-1.db
./filebrowser -d /database-1.db config set --cert /srv/ssl/13.crt --key /srv/ssl/13.key
rm -rf database.db
mv database-1.db database.db
完成上述语句后,运行下面的进行替换
重启容器
./filebrowser -d /database.db config cat
插件位置
custom_components/ha_sidebar
代码,修改configuration.yaml
#一般
ha_sidebar:
#完整
ha_sidebar:
name: 侧边栏管理
icon: mdi:view-list-outline
docker run -d \
--name=home_assistant \
-e TZ="Asia/Shanghai" \
-v /data/docker/hass_config:/config \
-v /data/docker/ssl:/ssl \
--net=host \
--privileged \
--restart unless-stopped \
homeassistant/home-assistant:latest
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Text to speech
switch:
- platform: command_line
switches:
egg:
command_on: sed -i 's/stop/on/' /config/egg.txt
command_off: sed -i 's/stop/off/' /config/egg.txt
ha_sidebar:
name: 侧边栏管理
icon: mdi:view-list-outline
http:
ssl_certificate: /ssl/13.crt
ssl_key: /ssl/13.key
sonoff:
username: '+8618017300756'
password: '*********'
scan_interval: 60
grace_period: 600
api_region: 'cn'
entity_prefix: True
debug: False
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
apt-get update
apt-get install mosquitto
apt-get install mosquitto mosquitto-clients
log_type error
log_type warning
log_type notice
log_type information
connection_messages true
log_timestamp true
include_dir /etc/mosquitto/conf.d
root@raspberrypi:~# /etc/init.d/mosquitto start
[ ok ] Starting mosquitto (via systemctl): mosquitto.service.
Open up two more terminal windows.
In Terminal window 1 type:
mosquitto_sub -d -t hello/world
n Terminal window 2 type: mosquitto_pub -d -t hello/world -m "Hello from Terminal window 2!"
请教一下,mosquitto的配置文件怎么设置可以改 端口和IP? 我现在是 如下图的IP,造成用访问主机IP地址无法连接服务器.
netstat -ntulp |grep 1883
我试过在 mosquitto.conf中加入listener 1883 0.0.0.0 没效果啊
listener 1883
allow_anonymous true
/homeassistant/custom_components/sonoff
.
.
.
sonoff:
username: '+86手机号' #易微联APP帐号
password: '密码' #易微联APP密码
scan_interval: 60
grace_period: 600
api_region: 'cn'
entity_prefix: True
debug: False
.
.
.
chromium-browser
chromium-browser "http://######/"
chromium-browser "http://######" -kiosk
cd /home/pi/.config/autostart/ #没有就建一个
[Desktop Entry]
Type = Application
Exec = chromium-browser -kiosk "https://xxxxxx.com"
pip3 install aliyunsdkcore
pip3 install aliyun-python-sdk-alidns
https://github.com/mgsky1/DDNS
{
"AccessKeyId": "Your_AccessKeyId",
"AccessKeySecret": "Your_AccessKeySecret",
"First-level-domain": "Your_First-level-domain", ## 13ua.com
"Second-level-domain": "Your_Second-level-domain" ## @
}
sudo crontab -u root -e
#vim
*/1 * * * * python3 /path/DDNS.py
sudo reboot
启动服务: systemctl start crond.service
停止服务:systemctl stop crond.service
重启服务:systemctl restart crond.service
易微联sonoff改造开关本身支持天猫精灵,小爱同学这些,关键价格还十分亲民。为什么偏偏为了接入HA刷固件,失去保修,失去易微联APP本身的控制,这样真的十分方便吗?
小白一直没有放弃易微联sonoff直接接入HA的想法,易微联API接口都看了好几遍。没功底没看懂。哈哈。
就在昨天,爬谷歌看见老外写了一个插件,马上折腾,心里别提有多高兴了。
目前插件只支持:Sonoff Basic,Sonoff 4CH Pro(R2),sonoff S20, Gang Generic Wall Switch,Gang Generic Wall Switch,WHDTS WiFi Momentary Inching Relay。
一般情况我们都是买Sonoff Basic,或者Sonoff RF。
下载插件,放进custom_components目录
custom_components
├── sonoff.py
└── switch
└── sonoff.py
然后HA配置configuration.yaml:
sonoff:
username:
password: [password]
scan_interval: 60 (optional)
grace_period: 600 (optional)
api_region: 'eu' (optional)
然后重启HA,sonoff里面该插件支持的设备就自动出现了。
websocket error: Connection is already closed
apk add --update python
apk add --update py-pip
pip install websocket-client==0.54.0
chromium-browser
chromium-browser "http://######/"
chromium-browser "http://######" -kiosk
cd /home/pi/.config/autostart/ #没有就建一个
[Desk Entry]
Type = application
Exec = chromium-browser -kiosk "https://xxxxxx.com"
sudo raspi-config
按照下面的顺序选择 Advanced Options > Resolution,最后选择一个更合适的分辨率并确认完成即可。
建议在设置完成后重启树莓派或重新启动 VNC 服务让设置生效。
vncserver -geometry 1024x768
13ua.com:1:5900
sudo curl -sSL https://get.docker.com | sh
#下载 Docker 图形化界面 portainer
sudo docker pull portainer/portainer
#创建 portainer 容器
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
mkdir /opt/portainer/ssl; #将证书文件.key .crt复制到目录中
mkdir /opt/portainer/pub; #将中文压缩包解压到目录中
sudo docker run -d -p 7086:9000 \
--name portainer-ce --restart always \
-v /data/docker/ssl:/certs \
-v /data/docker/portainer/pub:/public \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer \
--ssl --sslcert /certs/13.crt --sslkey /certs/13.key
脚本安装docker,换个源会快很多
sudo curl https://get.docker.com/ > ./docker_install.sh
点击树莓派界面左上角的树莓图标,点Preferences的这个图标,再点击下面倒数第二个树莓图标打开树莓派的设置。
这个简单的文档旨在给出到各种参考文档的链接。建议在开始安装部署前,先阅读我们的 《Seafile 技术白皮书》。
以下方案均可满足 2000 用户使用。超过 2000 用户,请参考集群部署文档。
单台服务器,硬盘做 Raid,内存最少 2GB,建议 4GB,4 核以上 CPU。或者使用虚拟化平台,分配一个独立的虚拟机。
可直接安装 Ubuntu 16.04 或者 CentOS 7 操作系统,并在上面安装 Seafile 服务。
数据可靠性方面,如果使用虚拟化平台,可以备份整个虚拟机;如果使用硬件服务器,可以另外使用一台服务器来做数据备份。
应用服务器,内存最少 2GB,建议 4GB,4 核以上 CPU。NAS 服务器根据您的存储需求来选择。
安装方式同上。
备份方面可以使用 NAS 自带的快照或者备份机制。
应用服务器 内存最少 2GB,建议 4GB,2 核以上 CPU。文件存储在 OSS 中。 OSS 是一个可靠的、三备份的、可无限扩容的存储。最大的好处是免去了硬件维护和备份的管理开销。
直接在 Ubuntu 16.04 或者 CentOS 7 64 位系统上用安装脚本安装
安装文档见 http://manual-cn.seafile.com/deploy_pro/index.html
如果上述地址无法访问,请访问 https://github.com/haiwen/seafile-docs-cn/blob/master/deploy_pro/README.md
安装好之后,把 seafile-license.txt 文件放入 Seafile 安装目录(比如 /opt/seafile)下面,重启服务即可生效。
对于中大型公司来说,使用 AD 来管理账号和组织架构是最标准
最近在玩智能家庭,所以想弄个本人到家就开某通知设备,离家就关。
最后百度了一些方法来实现功能,向下看吧
binary_sensor:
- platform: mqtt
name: "iphone2020_status" #虚拟设备名
state_topic: "vic" #接收MQTT消息的TOPIC名
qos: 0
payload_on: "enter" #改状态开的消息内容
payload_off: "leave" #改状态关的消息内容
device_class: opening
重启hass后,可以【状态】中找到设备
还可以编辑【配置UI】添加一个显示
- 3、安装套件mosquitto (略)
- 4、编辑一个扫描手机蓝牙的脚本chk_vic.sh,如下:
mac="3C:CD:36:1B:2E:02" #手机的蓝牙MAC地址
name="iPhoneSE-2020" #手机名
MQTT_IP="192.168.2.9" #MQTT所在地址
MQTT_SUB="vic" #接收消息的TOPIC名
MQTT_PUBLISH_VALUE1="enter" #真:消息内容
MQTT_PUBLISH_VALUE2="leave" #假:消息内容
while [ i==0 ]
do
result="$(sudo hcitool name ${mac})"
if [ "${result}" == "${name}" ]; then
/var/packages/mosquitto/target/bin/mosquitto_pub -d
youtube-dl https://www.youtube.com/watch?v=cwvYgM9JhuA --proxy 192.168.2.103:10809 -F
youtube-dl https://www.youtube.com/watch?v=cwvYgM9JhuA --proxy 192.168.2.103:10809 -f 137
好多人下单后要问一句,“有安装教程吗?”
好吧你们赢了!!!
写个教程。
cat /etc/redhat-release
yum install wget -y
yum install which -y
yum install jre -y
wget https://n74.top:1607/404/get-pip.py #可以从我的网站下载 or 从网上找也可以
python get-pip.py #运行上步下载的 get-pip.py
yum -y install epel-release
yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel
pip install pillow moviepy #这一步很难产啊,重复N次才全完成了
略
tar -zxvf seafile-pro-server_6.3.5_x86-64-1000.tar.gz
cd seafile-pro-server-6.3.5
./setup-seafile-mysql.sh # mysql的安装我就略过了
TIME_ZONE = 'Asia/Shanghai'
yum install poppler-utils -y
之前突然黑群down机了,怎么也开不了,所以随便买个小主板想换上的,结果新主板来了后,发现老主板又可以用了。懒得退货了。
- 注:找了个旧机箱,插上SW PW线可以开机,但是HDD LED和PW LED线接入后没效果,也不知道是不是这两个灯出问题了。不管了。就这样了。
- 注2:主板BIOS进入按键F9
- 我们SATA是1和2,ESATA是3,所以对应值就应该看倒数第三行上的
esataportcfg:0xFFFFC
internalportcfg:0x3
.
.
esataportcfg="0xFFFFC"
.
.
.
internalportcfg:"0x3"
.
.
先来说说为什么我想用onlyoffice来预览吧,因为seafile预览京东发票PDF时,只有表格和盖章,其它全是空白,现在我用onlyoffice却可以正常了,哈哈开心
感谢zyu318给出的解决方法,见https://bbs.seafile.com/t/topic/11289
vi seahub/seahub/utils/init.py
- 1、找到上图位置
- 2、注释掉PDF行,或修改PDF后缀
- 3、在DOCUMENT行最后添加PDF后缀
一般来说centos主要用于服务器端,所以很少开启图形化界面,但是有时候为了工作方便也会偶尔开启图形界面,下面就让简单谈谈如何开启图形化界面,当然简化安装是没有这个程序的需要自行安装,可以yum安装下.
CentOS 作为服务器的操作系统是很常见的,但是因为需要稳定而没有很时髦的更新,所以很少做为桌面环境。在服务器上通常不需要安装桌面环境,最小化地安装 CentOS(也就是 minimal CentOS) 就可以了。不过在最小化安装的 CentOS 中通过 YUM 来安装桌面环境也是非常方便的。
使用 yum groupinstall 指令很容易就能安装上图形界面的桌面系统
yum 可以以程序组的模式来安装成套的软件包。支持的软件包可以通过,
# yum grouplist
查询到。在 group 软件包中,Desktop、Desktop Platform、KDE Desktop、X Window System 是主要的桌面环境。
软件包列表根据系统使用的语言来显示,支持简体中文文件名。所以安装前最好用上述指令查询一下看看。如果系统使用了简体中文,而安装指令使用英文,可能会导致查询不到软件包这样的错误。下面的安装指令用的都是英语。
要安装 KDE 桌面环境,执行指令,
# yum groupinstall "X Window System" "KDE Desktop" Desktop
即可,同时安装了 3 个软件包。注意,因为 KDE Desktop 和 X Window System 两个软件包名称中间都包含空格,需要用引号引起来才行。
要安装 Gnome 桌面环境,执行指令,
# yum groupinstall "X Window System" "Desktop Platform" Desktop
即可,也是同时安装了 3 个软件包,其中 X Window System 是必须的,不管是 Gnome 还是 KDE。
既然是桌面环
我的群晖导航页做好了,但是我对做图软件不熟悉,所以做不出好看的图标,从网上扒啊,总找不到统一的风格的。后来想到所有图标用黑白不就至少在颜色上统一了吗!
<head>
.
.
.
<style>
html {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
_filter:none;
}
</style>
.
.
.
</head>
【微软售后】尊敬的用户,您好。为您提供重置系统解决方案:开机出现田牌LOGO时强制关机,重复两次,第三次开机会自动进入WinRE,在WinRE里面重置祝您生活愉快!
homeassistant failed: {"message":"cgroups: cannot find cgroup mount destination: unknown"}.
homeassistant failed: {"message":"OCI runtime create failed: container with id exists: 64a896a1ed33c4a925897e7c1c3f0dbcbf9bfa01f3db43fa529fe627d5938e88: unknown"}.
docker import - 000_leanote < 000_leanote.syno.txz
sha256:7ced94f7666933bae89b54b282b0db26952027d31919d4d6c4ed23d5a0e759f1
因为买了个sonoff智能开关(2020-01-18),还有当初玩黑群晖时买的小K智能开关(2018-02),它们各用各的APP感觉好麻烦,所以想到是不是可以集中到苹果手机的homekit中。所以就上网搜索了一把,再折腾了一把。
homekit:
auto_start: true
https://github.com/jedmeng/homeassistant-konke
https://github.com/YinHangCode/homeassistant-ikonke-outlet
https://github.com/YinHangCode/ikonkeIO
#docker版,需要运行以下命令才能正常使用
apk add libc6-compat
#动行以下命令查看小K智能设备信息,192.168.2.255为广播地址
sh ikonkeIO.sh --discover 192.168.2.255
#下图为运行后结果截图
switch:
- platform: homeassistant-ikonke-outlet
ikonkeIO: '/config/custom_components/ikonkeIO/ikon
curl -fsSL https://filebrowser.xyz/get.sh | bash
ps -ef|grep filebrowser
root 20135 13530 2 10:06 pts/30 00:00:00 filebrowser -r /opt -d /opt/filebrowser/filebrowser.db
root 20239 13530 0 10:06 pts/30 00:00:00 grep --color=auto filebrowser
kill 20135
File Browser是一个基于GO的轻量级文件管理系统支持登录系统 角色系统、在线PDF、图片、视频浏览、上传下载、打包下载等功能。总而言之很强大。
curl -fsSL https://filebrowser.xyz/get.sh | bash
docker run -d --name portainer --restart always \
-p 9123:9000 \
-v /opt/seafile/ssl:/certs \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/portainer/pub:/public \
portainer/portainer --ssl --sslcert /certs/13ua.com.crt --sslkey /certs/13ua.com.key
- iSCSI功能的主要优势:
例如企业环境中有十台电脑,如果专门为每台电脑都配备 2TB 的硬盘空间则需要购买十块因此成本相对较高。
同时实际办公需求可能每个人用不到或者暂时用不到 2TB 的空间,这就会造成硬盘空间和配置成本上的浪费。
通过iSCSI 功能则可以为每台电脑配置对应的虚拟硬盘,例如将两块 2TB 配置为iSCSI服务端平分给十台电脑。
后期如果空间不够用的情况下还可以在iSCSI服务端上添加新硬盘为用户扩容,这样不会造成硬盘空间的浪费。
version: '2.0'
services:
db:
image: mariadb:10.1
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=sl2w71201 # Requested, set the root's password of MySQL service.
- MYSQL_LOG_CONSOLE=true
volumes:
- /opt/seafile-mysql:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.5.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
elasticsearch:
image: seafileltd/elasticsearch-with-ik:5.6.16
container_name: seafile-elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 2g
volumes:
- /opt/seafile-elasticsearch:/usr/share/elasticsearch/data # Requested, specifies the p
CSRF_TRUSTED_ORIGINS = ['域名:端口']
docker pull onlyoffice/documentserver:latest
mkdir -pv /opt/onlyoffice/ssl/certs
[root@localhost opt]# ll /opt/onlyoffice/ssl/certs
总用量 8
-rwxr-xr-x. 1 110 114 1980 10月 3 17:30 onlyoffice.crt
-rwxr-xr-x. 1 110 114 1679 10月 3 17:30 onlyoffice.key
[root@localhost opt]#
docker run --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice \
-p 28443:443 \
-v /opt/onlyoffice/ssl:/var/www/onlyoffice/Data \
-e FORCE_SSL=true -e CERT_FOLDER=/certs/ \
onlyoffice/documentserver
# 在浏览器输入:
https://域名:28443/welcome
...
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_read_timeout 310s;
proxy_set_header Host $host;
...
改为
...
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_read_timeout 310s;
proxy_set_header Host $host:18443;
...
docker exec -i seafile nginx -s reload
vi /opt/seafile/seafile-server-latest/seahub/thirdpart/django/middleware/csrf.py
#转到220行
if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'):
#改为
if request.method not in ('GET', 'POST', 'HEAD', 'OPTIONS', 'TRACE'):
vi /opt/seafile/seafile-server-latest/seahub/seahub/settings.py
#转到118行,注释掉这行
'django.middleware.csrf.CsrfViewMiddleware',
改为
#'django.middleware.csrf.CsrfViewMiddleware',
sed -i "220cif request.method not in ('GET', 'POST', 'HEAD', 'OPTIONS', 'TRACE'):" /opt/seafil
#查看docker compose版本
docker-compose version
#查看pip版本
pip -v
#上一条语句没有显示版本信息则运行下面语句安装 python-pip
yum -y install epel-release
yum -y install python-pip
#查看pip版本
pip -v
#pip进行升级
pip install --upgrade pip
#进行安装compose 第一条语句报错执行第二条,执行成功则跳过第二条
pip install docker-compose
pip install docker-compose --ignore-installed requests
docker-compose -version
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
cd /usr/local/bin
rm -rf docker-compose
wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 docker-compose
[root@betty ~]# cd /etc/yum.repos.d/
[root@betty yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@betty yum.repos.d]# yum makecache
[root@betty yum.repos.d]# yum -y update
···
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
···
[root@localhost ~]# yum update
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: mirrors.aliyun.com
* updates: centos.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 bind-libs.x86_64.32.9.9.4-61.el7 将被 升级
---> 软件包 bind-libs.x86_64.32.9.9.4-61.el7_5.1 将被 更新
---> 软件包 bind-libs-lite.x86_64.32.9.9.4-61.el7 将被 升级
---> 软件包 bind-libs-lite.x86_64.32.9.9.4-61.el7_5.1 将被 更新
---> 软件包 bind-license.noarch.32.9.9.4-61.el7 将被 升级
---> 软件包 bind-license.noarch.32.9.9.4-61.el7_5.1 将被 更新
...
...
验证中 : 32:bind-license-9.9.4-61.el7.noarch 8/8
更新完毕:
bind-libs.x86_64 32:9.9.4-61.el7_5.1
bind-libs-lite.x86_64 32:9.9.4-61.el7_5.1
bind-license.noarch 32:9.9.4-61.el7_5.1
bind-utils.x86_64 32:9.9.4-61.el7_5.1
完毕!
[root@localhost ~]#
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hos
yum list installed | grep openssh-server
yum install openssh-server
···
Port 22
···
ListemAddress 0.0.0.0
ListemAddress ::
···
PermitRootLogin yes
···
service sshd start
systemctl enable sshd
ip addr
,查看当前ip地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33
,修改:
BOOTPROTO="static" #修改为静态,默认为dhcp
IPADDR="192.168.2.219" #静态ip地址
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.2.1" #网关地址
DNS1="114.114.114.114" #DNS服务器
Docker的设计理念是在容器里面不运行后台服务,容器本身就是宿主机上的一个独立的主进程,也可以间接的理解为就是容器里运行服务的应用进程。一个容器的生命周期是围绕这个主进程存在的,所以正确的使用容器方法是将里面的服务运行在前台。
再说到systemd,这个套件已经成为主流Linux发行版(比如CentOS7、Ubuntu14+)默认的服务管理,取代了传统的SystemV风格服务管理。systemd维护系统服务程序,它需要特权去会访问Linux内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,也就是没有特权,所以自然就用不了!
因此,请遵守容器设计原则,一个容器里运行一个前台服务!
创建容器:
docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init
进入容器:
docker exec -it centos7 /bin/bash
这样可以使用systemctl启动服务了。