派玩python之Jupyter使用远程kernel(3)- WSL环境
Raspberry Pi

派玩python之Jupyter使用远程kernel(3)- WSL环境

经过上一期《派玩python之Jupyter使用远程kernel(2)》的介绍也有一段时间了。 这次继续介绍如何使用WSL环境(运行端)作为主要Python运行环境,满足如机器学习,显卡硬件设备等运行要求,并且连接到远程树莓派部署的Jupyter编辑器(开发端)上开发写代码。 WSL2环境设置 WSL是Microsoft开发的Linux子系统,可以方便地在Windows操作系统上进行类Linux系统开发。本例使用WSL2上安装的Ubuntu子系统进行演示。 WSL安装和SSH安装设置 我们假设你已经安装好了WSL,如果没有,请自行查看WSL安装文档。 安装完成后, 执行wsl -l, 输出类似以下内容,就是安装成功了。 适用于 Linux 的 Windows 子系统分发版: docker-desktop-data (默认) Ubuntu-20.04 docker-desktop 如果有多个WSL子系统,比如我这个是3个,并且默认不是你想要的WSL,那么接下来所有wsl命令都需要指定。 为了不这么麻烦, 务必执行类似以下命令切换默认系统就可以了。我这里默认使用Ubuntu-20.04这个。 wsl -s Ubuntu-20.04 接下来参考网上,进行安装配置SSH相关内容: 在wsl2下重装ssh

小小树莓派干大事-自部署Git库(一)

小小树莓派干大事-自部署Git库(一)

动机 现在免费的git托管库非常流行, 使用起来也非常方便。仿佛没有必要再自建(self-hosted)Git库了。但是最近国际形势突变,许多原本自由的代码也不再自由。这让我们重新考虑,代码作为一个开发者,一个企业最重要的无形资产之一,是否应该考虑一种方式,保证能完全掌握在自己手中。当然了, 也有其他一些动机,我一并列出来。 远程库访问限制,如速度较慢,如某github。或者因为其他zz原因考虑。 信息安全考虑,不希望公开源代码,不信任第三方git托管。 代码同步,镜像等用途。 单纯为了本地版本控制,不需要远程存储服务。 多个设备之间切换同步。 总之,如果有哪一条打动你,可以继续我们的自部署历程。 自部署Git库 市面上开源Git库很多,我们需要进一步选型。因为本文希望使用树莓派部署,选型要满足我自己的几个要求: 支持树莓派的arm架构,最好已提供Docker镜像。 数据安全备份功能,因此库文件不能过于分散。 需支持API调用。 性能需要好,开源并且相对成熟。 我通过网络查询比较,发现Gitea比较符合要求。它基于中国人开发的Gogs项目fork出来,两者使用Go语言开发,足够轻量。Gitea演进的更多,社区更活跃。

小小树莓派干大事-自部署Git库(二)

小小树莓派干大事-自部署Git库(二)

上一篇我们完成了Gitea库的安装。 本篇继续进行使用场景和维护的讨论。 使用场景举例 大功告成后,我分享一下常见的使用场景和方法。 镜像用法-Github加速 Github源站因为某些原因无法访问,或者访问过慢。 可以将Github的库定期做本地镜像。我们打开Gitea私有部署网站,右上角“+”,点击“迁移外部仓库” 从GitHub迁移在页面中粘贴HTTP的GitHub的库URL, 然后勾选仓库是一个镜像即可。(如果这个库是公开的,不需要输入访问令牌。)等待镜像完成后,点击项目的“设置”,可以看到镜像设置一栏已经设置好了同步。可以进一步调整拉取间隔。 镜像设置同步用法-多个Git库间同步 我们有的时候维护多个Git库。比如内部使用自部署的私有库,这样速度比较快,然后定期将其同步到Github上,或者其他带有部署能力的平台来实现CI/CD部署。 如图所示,点击项目的设置,找到镜像设置一栏,然后将相应的链接,用户,密码填写好即可添加完成。 我试了Github,国内的coding.net和阿里云的Codeup都是有效的。 Github:  链接填写HTTPS的, 用户名填写用户名,密码填写“Personal access token”,在Github的https://github.com/settings/tokens

简单好用Mysql图形管理器(类phpMyAdmin)
Docker

简单好用Mysql图形管理器(类phpMyAdmin)

Adminer是一个小巧快速的Mysql管理器UI。Adminer官网是说希望能做phpMyAdmin的替代,功能更强,性能更好。本文无意去做比较,只是选择最合适使用场景。对比较感兴趣可以参考两者对比 我的场景需求很简单,只是希望能做个人系统DB运维: 想在树莓派上也可以用,因此希望尽量小巧快速,要支持armv8架构。 使用频次不高,希望快速安装卸载。因此要求提供原生Docker镜像。 日常搭建保不齐有多种不同数据库,因此希望支持连接Mysql,MariaDB,PG,SQLite等,越多越好。 Adminer正好是满足以上要求的一个选择,使用Docker镜像部署秒开,也不吃亏上当。以下是docker-compose的一个样例: version: '3.1' services: adminer: image: adminer container_name: adminer #restart: always ports: - 3300:8080 networks: - web-net db: image: mariadb:10.5 container_

派玩python之Jupyter使用远程kernel(2)
Docker

派玩python之Jupyter使用远程kernel(2)

书接上文, 《派玩python之自部署JupyterLab》 使用树莓派上搭建的JupyterLab使用体验已经非常好了。可以使用python完成常见的绝大多数工作。但是别忘了,python还有很重要的用武之地,就是大规模计算和算法,还有一大票机器学习框架。受限于树莓派空间性能, 如果要跑非常吃CPU的运算,吃GPU的模型训练,就不太合适了。 解决方案就是, 树莓派上只运行Jupyter的Lab,或者Notebook的UI服务,当作云IDE使用。 真正计算运行,放到远程一台性能强大的机器上,不就好了吗? 本期就介绍这种方式。 Jupyter远程调用Kernel的原理(可跳过) 在Jupyter体系里,其实它只管调用Kernel,而Kernel在哪里不关心。也就是说在架构层面已经做了隔离,这就为远程调用提供了可能性。 具体来说, Jupyter可以说是偏前端的方案名,底层服务是依赖IPython的可交互编程组件来工作。其核心原理图如下,摘自IPython官网文档                                                     图1 Ipython原理 可以看到, 执行器和Kernel之间是靠ZMQ的消息来通信的。 但是, 如果想在两个机器直接直接消息通信不是好主意,数据是明文裸漏的,毫无安全可言。 官方的远程连接文档 是利用ssh 绑定并转发本地的收发消息端口到远端机器的ssh通道实现的,即ssh tunnels。 如果想手动绑定参考这个文档即可,老鸟推荐, 我们本次不使用。 前人栽树,后人乘凉。

派玩python之自部署JupyterLab
Docker

派玩python之自部署JupyterLab

序言 Python语言以敏捷易用著称,可以帮助我们快速完成很多突发工作。此外在统计分析,机器学习使用也非常广泛。可以说就像每个家庭都要备一把瑞士军刀一样, 如果能够有一个开箱即用的Python运行环境能够随时随地使用,就是太好不过了。 对于追求效率选择Python的人来说, 安装Python,调整环境变量的步骤都想免除。 这不, Jupyter的出现很好解决了这个问题。 它提供了免费即用的浏览器就能用执行容器,https://jupyter.org/try 这样就好了? 当然没有, 上面也说了,瑞士军刀要放家里。况且免费容器解一时之急,无法保证长期稳定使用。既然家中有树莓派,当然要自部署(self-hosted)了。 以下自部署使用通用方案,不仅适合树莓派,也适合其他可以运行Docker容器的任何平台,不限NAS,PC等。 正题 安装Docker容器和docker-compose(略) 因为网上资源较多, 这里不赘述。 关于树莓派安装Ubuntu64的可以看之前文章 心急的用户直接 docker run -p 8888:8888 jupyter/scipy-notebook 想使用docker-compose规范化部署的继续往下看。 编辑docker-compose.yml文件

树莓派快速部署《人生重开模拟器》
Docker

树莓派快速部署《人生重开模拟器》

前文章介绍了DuckDNS配合SWAG可以快速建站。本次继续实践如何在SWAG中部署Web服务。最近比较好玩的基于Nodejs开发的简易好玩的《人生重开模拟器》网页游戏很火,我们就来看怎么快速部署这个游戏。 理论上本方法不只适合树莓派,也适合其他平台。精力和设备有限没有在其他平台测试。 玩法1:局域网单独运行《人生重开模拟器》 我已经打好了这个游戏的docker镜像包。适合树莓派,也适合Windows和Linux,因为我amd64和arm的32和64都打包了,可以在Docker Hub上找到。运行起来非常简单,直接在已经安装了docker软件的系统下运行 docker run -p 8080:8080 --name liferestart -d jmujmu/life_restart 如果发现8080占用,灵活更改即可。正常启动后打开http://localhost:8080/view/index.html 即可开玩。 到目前为止不喜欢折腾,满足自己要求直接开玩的同学到这里就可以了。将IP替换成局域网IP,也能在局域网范围内传播游玩,适合学校办公室等场合。 玩法2:公网运行《人生重开模拟器》 这里提供完整的docker-compose.yml文件,

DuckDNS+GoDNS+SWAG最低成本的树莓派建站
Raspberry Pi

DuckDNS+GoDNS+SWAG最低成本的树莓派建站

前文说树莓派非常适合用来长期做服务器。本文就介绍一种快速建设验证用的小型网站服务的最佳(免费)方式。 本文能达到的效果是,利用手头最廉价的设备,快速对外提供Web或者后端服务。 硬件需要你自己备之外,软件都保证成本最低: 免费域名 免费域名动态绑定(DDNS) 免费HTTPS证书 开箱即用的Nginx服务 下面动手开始。 硬件准备: 一块正常运行的树莓派,已经安装好Linux操作系统+Docker环境。如若没有,请参考其他介绍文章。 一个家用路由器(光猫也可),带端口转发功能。 已经正常连接了因特网,并且有公网IP,不要求固定。 注意:如果是在家庭网络下搭建,并且使用了自己买的路由器来拨号的话,一般需要将光猫设置桥接才能正确获得外网IP。不是本文重点不详述) 接下来介绍一种快速的一站式方案DuckDNS+GoDNS+SWAG。实现了DDNS和免费证书功能。 为什么需要DDNS,上面也提到,家庭宽带的外网IP不是固定的,本来你域名配置好 jmu.duckdns.org <-> 123.123.123.123,

把树莓派变成全天候BT下载器
Raspberry Pi

把树莓派变成全天候BT下载器

把树莓派变成BT下载器需要几步? 如果把之前文章提到的服务化做到位,只需要一步就可以完成。 这里推荐qBittorrent,身材轻量功能强大。 1,老规矩,把以下配置保存名为docker-compose.yml的文件,修改端口和volumes部分,然后在同目录下执行docker-compose up -d即可。 2, 用浏览器访问8084端口的Web-UI,默认账密admin/adminadmin。 version: "2" services: qbittorrent: image: linuxserver/qbittorrent container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=Asia/Beijing - WEBUI_PORT=8084 volumes: - /path/to/qb-config:/config

树莓派Seafile社区版最新Docker镜像更新(8.0.7)

Seafile是很符合国人使用习惯的云文档套件。在家庭场景下非常适合部署到树莓派使用。之前的文章介绍了如何在树莓派(Ubuntu arm64环境)下安装打包8.0.3版本, 今天趁着有时间打包了官方释放的最新8.0.7版本。 镜像已经上传到dockerhub,直接使用docker pull jmujmu/seafile-pi:8.0.7即可。但需要注意以下2点: 仅仅适合Arm64架构,在Ubuntu 20.04.2 LTS测试有效。Respdian32位不支持。 仅支持MariaDB, 这个镜像只负责把官方的Release打包成docker镜像,没有修改官方安装包的任何东西,只负责下载它和打到镜像里。所以和常规下载安装是一样的,只不过DockerCompose使用更方便。 8.0.x之间升级不需要什么操作,直接重新部署即可。其他版本可以参考官方升级指引。 详细使用方法可以参考我之前8.0.3版本文章,8.0.7的变化参见官方ReleaseNote。

Raspberry Pi

自部署私人密码箱bitwarden

一个人一生中总要记住几个密码。 我们生活在被数字包围的世界里。为了证明你是你,你对某个资源拥有所有权。那么就需要密码。最常用的各种网站,还别说银行密码信用卡等等。市面上虽然有1Password等优秀商业方案,但是要付费。主流浏览器Chrome,Firefox等也提供原生的密码保存方案。 但是, 密码毕竟是个人数据, 自部署(self-hosted)是最佳方案。 树莓派小巧,省电,适合长时间做服务使用。本文介绍使用树莓派为例搭建开源自部署密码管理工具bitwarden。不过,本文也适合所有arm架构的服务器。对于x86服务器搭建bitwarden更为简单,就不赘述,直接参考官方文档即可。 准备docker和dockercompose 仅以树莓派为例, 可参考前文。或者自行Google其他文章和查看Docker官网 Install Docker Engine Install Docker Compose 使用vaultwarden替代bitwarden-server bitwarden官方不对arm的镜像提供支持,而且bitwarden-server的架构选型占用资源过多,不适合树莓派此类性能有限的平台,目前比较好的方案是是使用vaultwarden作为替代服务端。vaultwarden轻量化设计,实现了bitwarden的大部分API,支持bitwarden的客户端。使用sqlite作为服务端存储,并且提供了arm64的docker镜像,可以直接使用。 一个典型的dockercompose文件示例如下: version: '3.3'

树莓派seafile社区版最新Docker镜像(8.0.3)

Seafile是非常优秀的国产云盘, 有成熟的自部署能力. 而且官方提供了支持arm64架构的[安装包], (https://github.com/haiwen/seafile-rpi/releases) 显然作为懒癌和完美主义患者, 是根本不可能去手动安装包括seafile, mariadb, nginx, memcached等繁琐麻烦的步骤的. 我们的目标只有一个--无脑! 解决方案就是docker镜像, 无脑秒启动, 不需要任何安装步骤. All in one, 相关数据库配置和web代理服务器直接启动. 可惜官方和社区都没有非常合适的镜像包,或者可以马上用的Dockfile也没有. 我这里提供一个最新版本的Dockfile, 懒得自己打包的直接使用即可. 此Dockfile直接在官方分支基础上进行轻微修改, 且直接是下载并将seafile官方树莓派版本安装包打入镜像, 因此可以保证和手动安装没有区别. 我已经在树莓派4B上长期使用, 并能跟踪打包更新. 直接使用我已经打好的docker镜像 直接 docker pull jmujmu/seafile-pi:8.0.3 即可 更多信息在我的dockerhub查看 如果选择使用已打好镜像, 编译步骤可跳过. 此镜像使用mariadb, 如果需要mysqldb, 请走下面手动编译镜像步骤. 编译seafile镜像(可选)

Raspberry Pi

使用树莓派做服务器最佳实践

虽然树莓派不是为服务器为生,但是凭借其自身不高的价格和相对完整的硬件配置,也广泛应用在服务器领域。究其优势,有几个: 树莓派相对较小的体积,容纳了相对全面的硬件模块, 比如cpu,集显,Wi-Fi等模块 低发热低能耗适合长期运行, 适合小型服务器 基于较通用的ARM64架构,相对较全面的软件生态和社区 我的个人实践而言,有几条个人认为的最佳实践: 树莓派选择 一般对应服务器而言,要同时运行许多服务,因此越大内存越好。个人服务器选择硬件接口比较全面的树莓派4 Model B(简称4B)。大规模并联再考虑工厂CM版本。 详细参数比较。当前4B提供2G/4G/8G版本,尽量选择4G/8G版本。 使用Ubuntu Server 64位版本 初次使用树莓派的小伙伴往往会选择官方提供的Raspberry Pi OS(旧称Raspbian),官方OS提供了专有优化和套件支持,非常适合起步。 可惜对于服务器应用方向,不一定是最合适的。 一个是此OS的只提供32位版本,64位仍在beta中,另一个是和Ubuntu比,服务器生态便弱(即使都基于Debian)。服务器版本的OS是不需要安装图形桌面等套件等, 树莓派OS官方提供Raspberry Pi

Raspberry Pi

裸树莓派4B(无屏无线无配件)安装Ubuntu Server和连接WIFI

本文重点介绍无配件安装Ubuntu Server并且能正常使用树莓派联网的方法.这里说的无配件的情况是, 手上只有树莓派4B本体, 但是没有其他配件, 甚至没有网线, 也没有显示器. 这符合普通家庭或者办公场景, 目前大家都是笔记本办公学习居多,很有可能连网线都没有. 如果你也是这样, 并且不准备安装带图形界面的系统, 那么这篇文章很合适. 至于为什么选择UbuntuServer本文暂时不做讨论.(主要是因为无图形界面的64位服务器) 必要硬件: 一个树莓派4B,内存无所谓, 一根树莓派的电源线(带22V插头那种), 或者Type-C充电线(能插USB等其他地方供电) 一个microSD卡(用于插入树莓派安装系统够用就行, 最好16G以上) 一台能上网的PC, 能读取microSD卡(或者读卡器) 一个wifi网络,知道SSID和密码 必要软件: SD卡系统写入软件.这里使用树莓派Imager 操作系统的ISO镜像, 推荐使用LTS.这里使用.UbuntuServer 20.04版本 以上软件网上都容易下载到. 接下来要干的事情简要解释一下 1)用SD系统写入软件, 把ISO镜像写入. 这里和直接把ISO拷贝到SD是有区别的, 因为除了解包ISO文件外,还写入了系统引导, 告诉树莓派使用SD卡进行系统引导和安装系统. 2)修改SD中已经写入的系统中的配置文件,

RAID

闲置老硬盘利用,打造低成本NAS存储

从小到大, 买过大大小小的电脑和配件, 回头一看,总有那么几个积累的老硬盘,有3.5寸的大硬盘,也有2.5寸从笔记本上拆下来的。 往往这些硬盘规格都不大, 200G,320G,500G。真是食之无味,弃之可惜。手上只有单个盘其实没什么大用,不如直接买大容量新盘更直接省心。 但是有多个盘就不一样了, 何况能用则用,能省则省不是美德么(还不是qiong)。下面提供一种旧物利用的使用方式。 花最少的钱组RAID和现在的SSD固态硬盘相比,性能差不说,因为还说机械旋转磁头原理,经不起折腾容易坏。 所以有必要组建RAID阵列。对于老硬盘,RAID1是最佳选择, 虽然空间减半,但是重在双份数据的可靠性。RAID0虽然相当于同时写盘加快速度,其实和现代硬盘比,也还是慢很多。如果有特殊要求的可以玩玩RAID0。我选择的是市面上比较便宜的,叫双硬盘RAID硬盘盒。 RAID双盘硬盘盒这种硬盘盒一般可以插两个2.5大小的SATA硬盘, 稍微高级的硬盘也支持M.2等硬盘。我们这里没必要, 只需要支持2.5/3.5大小的支持机械硬盘SATA的RAID硬盘盒即可。 上面是品牌还可以的,价位一般在150到300之间。 我省钱优先,选择了国产小品牌,功能一致,