继续折腾nanopc-t4之私有云部署(代码片段)

bywayboy bywayboy     2022-12-06     219

关键词:

前言

自从360 等各大云盘开始收费, 莆田系各种恶心限速以来,一直想搭建一个自己的私有云服务器。以满足手机/PC等个机器之间的文件同步(中间用GIT替代过一段时间). 虽然强大 但各种不方便。在尝试了 seafile、owncloud等后,发现这些东东都不能满足在树莓派嵌入式单板机器上的使用要求。于是转而寻求一个适合嵌入式机器使用的私有云软件。syncthing 出现了。

经过一段时间的折腾测试。目前已经成功部署且工作良好。

syncthing 总共分为三个组件。

  1. syncthing 同步软件 用于文件夹变动监视、同步。
  2. stdiscosrv 发现服务器 用户各机器之间发现对方。
  3. strelaysrv 中转服务器 针对一些特殊网络环境无公网IP的宽带。或者路由器不止UPNP映射的环境通过 relay服务器中转同步

接下来一步步部署这三个软件

部署

还是直接整理成安装脚本吧. 方便大家直接使用

#!/bin/bash
arch=$(dpkg --print-architecture)

########################## 安装发现服务器 ################################
wget https://github.com/syncthing/discosrv/releases/download/v1.0.1/stdiscosrv-linux-$arch-v1.0.1.tar.gz
tar -xvf stdiscosrv-linux-$arch-v1.0.1.tar.gz -C /usr/local
mv /usr/local/stdiscosrv-linux-$arch-v1.0.1 /usr/local/stdiscosrv
groupadd syncthing
useradd -M  -s /usr/sbin/nologin -G syncthing stdiscosrv
chown -R stdiscosrv:syncthing /usr/local/stdiscosrv

cat > /lib/systemd/system/stdiscosrv.service << EOF
[Unit]
Description=Syncthing Discovery server
After=network.target

[Service]
User=stdiscosrv
Group=syncthing
ExecStart=/usr/local/stdiscosrv/stdiscosrv -cert "/usr/local/stdiscosrv/cert.pem" -key "/usr/local/stdiscosrv/privkey.pem" -db-dir "/usr/local/stdiscosrv/discovery.db" -listen "0.0.0.0:8443" 1
Restart=on-failure
WorkingDirectory=/usr/local/syncthing
Nice=15

PrivateTmp=yes
ReadOnlyPaths=/
ReadWritePaths=/usr/local/syncthing/
NoNewPrivileges=true


# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable stdiscosrv.service
systemctl start stdiscosrv.service

########################## 安装中转服务器 ################################
wget https://github.com/syncthing/relaysrv/releases/download/v1.0.1/strelaysrv-linux-$arch-v1.0.1.tar.gz
tar -xvf strelaysrv-linux-$arch-v1.0.1.tar.gz -C /usr/local
mv /usr/local/strelaysrv-linux-$arch-v1.0.1 /usr/local/strelaysrv

useradd -M  -s /usr/sbin/nologin -G syncthing relaysrv
chown -R stdiscosrv:syncthing /usr/local/stdiscosrv

cat > /lib/systemd/system/strelaysrv.service  << EOF
[Unit]
Description=Syncthing relay server
After=network.target

[Service]
User=strelaysrv
Group=syncthing
ExecStart=/usr/local/strelaysrv/strelaysrv -listen=":22067" -pools="" -protocol="tcp4"
Restart=on-failure
WorkingDirectory=/usr/local/strelaysrv
Nice=15

PrivateTmp=yes
ReadOnlyPaths=/
ReadWritePaths=/usr/local/strelaysrv
NoNewPrivileges=true

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable strelaysrv.service
systemctl start strelaysrv.service

########################## 安装同步软件 ################################
wget https://github.com/syncthing/syncthing/releases/download/v1.1.3/syncthing-linux-$arch-v1.1.3.tar.gz
tar -xvf syncthing-linux-$arch-v1.1.3.tar.gz -C /usr/local
mv /usr/local/syncthing-linux-$arch-v1.1.3 /usr/local/syncthing
useradd -M  -s /usr/sbin/nologin -G syncthing syncthing
chown -R syncthing:syncthing /usr/local/syncthing

cat > /lib/systemd/system/syncthing.service << EOF
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)

[Service]
User=syncthing
Group=syncthing
ExecStart=/usr/local/syncthing/syncthing -allow-newer-config -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

EOF

systemctl enabled syncthing.service 
systemctl start synctihg.syncthing

云原生之docker实战使用docker部署kodbox私有云

【云原生之Docker实战】使用docker部署kodbox私有云一、kodbox介绍1.kodbox简介2.kodbox功能与特点二、检查本地docker状态1.检查docker版本2.检查docker状态三、安装kodbox1.创建安装目录2.编辑docker-compose.yaml脚本3.创建相关容器4.查看容器状态... 查看详情

django之部署(代码片段)

...uwsgi、nginx、静态文件三个方面处理服务器介绍服务器:私有服务器、公有服务器私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问公有服务器:集成好运营环境,销售空间或主机,供其布署... 查看详情

如何优雅部署openstack私有云ii--异常处理记录(代码片段)

来了,老弟,紧接着上一篇 树哥带你继续玩转openstack涤生树哥,公众号:涤生大数据如何优雅部署OpenStack私有云I--Kolla       涤生大数据在职运维群,各大厂在职大数据运维小伙伴,也期待各位在职的... 查看详情

如何优雅部署openstack私有云ii--异常处理记录(代码片段)

来了,老弟,紧接着上一篇 树哥带你继续玩转openstack涤生树哥,公众号:涤生大数据如何优雅部署OpenStack私有云I--Kolla       涤生大数据在职运维群,各大厂在职大数据运维小伙伴,也期待各位在职的... 查看详情

nanopc-t4上实现pwm风扇自动调速(代码片段)

   友善之臂推出的NanoPC-T4是一款采用瑞芯微 RK3399方案的嵌入式开发板,性能强大。发热量也杠杠的。其板载PWM调速风扇接口采用GH1.25插头,支持PWM调速。但查看了下dts并没有配置自动根据温度调节的选项。(注:pwm-fan,th... 查看详情

nanopc-t4上实现pwm风扇自动调速(代码片段)

   友善之臂推出的NanoPC-T4是一款采用瑞芯微 RK3399方案的嵌入式开发板,性能强大。发热量也杠杠的。其板载PWM调速风扇接口采用GH1.25插头,支持PWM调速。但查看了下dts并没有配置自动根据温度调节的选项。(注:pwm-fan,th... 查看详情

利用阿里云ecs部署自己的私有harbor镜像仓库(代码片段)

文章目录利用阿里云ECS部署自己的私有harbor镜像仓库harbor简介harbor的部署安装依赖安装docker安装docker-compose安装harborharbor的一些镜像浏览器访问向harbor推送nginx镜像利用阿里云ECS部署自己的私有harbor镜像仓库harbor简介虽然Docker官... 查看详情

利用阿里云ecs部署自己的私有harbor镜像仓库(代码片段)

文章目录利用阿里云ECS部署自己的私有harbor镜像仓库harbor简介harbor的部署安装依赖安装docker安装docker-compose安装harborharbor的一些镜像浏览器访问向harbor推送nginx镜像利用阿里云ECS部署自己的私有harbor镜像仓库harbor简介虽然Docker官... 查看详情

云原生之使用docker部署pesmcsticket工单系统(代码片段)

云原生之使用Docker部署PESMCSTicket工单系统一、PESMCSTicket介绍二、检查本地系统环境1.检查系统版本2.检查docker状态三、创建mariadb容器1.创建network2.创建数据目录3.创建mariadb容器4.查看mariadb容器状态四、创建PESMCSTicket容器1.创建PESMCS... 查看详情

利用k8s技术栈打造个人私有云(连载之:k8s环境理解和练手)(代码片段)

【利用K8S技术栈打造个人私有云系列文章目录】利用K8S技术栈打造个人私有云(连载之:初章)利用K8S技术栈打造个人私有云(连载之:K8S集群搭建)利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)利用K8S技术栈打... 查看详情

云原生之使用docker部署mysql数据库(代码片段)

云原生之使用Docker部署mysql数据库一、检查系统版本二、检查docker状态1.检查docker版本2.检查docker状态三、在dockerhub搜索mysql四、下载mysql镜像五、创建mysql容器1.创建数据目录2.运行mysql容器3.查看mysql容器状态4.查看mysql容器运行日... 查看详情

云原生之使用docker部署mongodb数据库(代码片段)

云原生之使用docker部署mongodb数据库一、检查系统版本二、检查docker状态三、检查docker版本四、下载mongodb镜像五、创建mongodb容器1.创建数据目录2.创建mongodb容器3.查看mongodb容器状态4.查看容器运行日志六、设置用户和密码1.进入容... 查看详情

云原生之使用docker部署docker-compose-ui工具(代码片段)

云原生之使用Docker部署docker-compose-ui工具一、DockerComposeUI介绍二、检查本地docker环境1.检查系统版本2.检查docker状态三、下载DockerComposeUI镜像四、部署DockerComposeUI服务1.新建安装目录2.创建DockerComposeUI容器3.检查DockerComposeUI容器状态... 查看详情

云原生之使用docker部署redis数据库(代码片段)

云原生之使用Docker部署Redis数据库一、检查系统版本二、检查docker状态三、检查docker版本四、搜索redis镜像五、下载redis镜像六、创建redis容器1.创建数据目录2.运行redis容器3.检查redis容器状态4.查看redis容器运行日志七、连接redis数... 查看详情

云原生之使用docker部署centos系统测试环境(代码片段)

云原生之使用docker部署centos系统测试环境一、检查本地服务器系统版本二、检查docker版本三、检查docker状态四、下载centos镜像五、创建centos容器1.运行cnentos容器2.进入容器内六、centos容器内部测试1.安装ifconfig命令的软件包2.查看... 查看详情

云原生之docker实战使用docker部署showdoc文档工具(代码片段)

【云原生之Docker实战】使用Docker部署ShowDoc文档工具一、ShowDoc介绍1.ShowDoc简介2.ShowDoc功能二、检查docker版本三、检查docker状态四、下载ShowDoc镜像五、创建ShowDoc容器1.创建数据目录2目录授权3.运行ShowDoc容器4.查看ShowDoc容器状态5.查... 查看详情

云原生之docker实战使用docker部署filemanager文件管理系统(代码片段)

【云原生之Docker实战】使用Docker部署FileManager文件管理系统一、FileManager简介1.FileManager简介2.FileManager特点二、检查宿主机系统版本三、检查本地docker环境1.检查docker服务状态2.检查docker配置信息3.开启IPv4forwarding4.检查Docker版本四... 查看详情

openstack私有网络的部署(代码片段)

OpenStack私有网络OpenStack网络服务简介部署环境私有网络部署控制端部署计算节点部署图形化部署创建私有网络创建路由通过路由将私网和公网连接起来创建私网的云主机让外部网络可以访问内部网络OpenStack网络服务简介OpenStackNet... 查看详情