树莓派安装Gitea以及路由器端口映射的种种

树莓派安装Gitea以及路由器端口映射的种种
Oct 4th 2018

@([Coding]Essential&Tricks)[RapberryPo,Git,Gitea,Linux]

0x00 起源

事情的起源很随意,就是小程序第一版终于抄的功能完整了。于是想放到Github上面做一下代码管理。但是考虑到水平有限,有很多AppSecret之类的是直接写到代码里的,分离开又没那个水平(也懒)。于是就想干脆直接搭个私有Git服务器好了。

于是就此拉开了为期一天半各种折腾的序幕。

0x01 问题1:端口映射失灵

之前曾经跟联通客服要过公网IP,也设置过端口映射。这次拿出来,突然就不灵了。之前的网络结构是:

1
2
3
4
5
6
a[公网]---b[宽带光猫]
b[宽带光猫]--22端口映射---c[Netgear R7000]
c[Netgear R7000]--Merlin固件ss翻墙--22端口映射---d[内网需翻墙终端]
d[内网需翻墙终端]---f[Amazon Echo]
d[内网需翻墙终端]---g[Raspberry Pi]
b[宽带光猫]--自带wifi---e[内网不需翻墙终端]

鉴于Hexo的Mermaid流程图插件死活不能用,只能截图先放在这了。
enter image description here

联通送的光猫的Wi-Fi,老实说还是可以用的。R7000由于刷了梅林固件,有的时候访问国内网址会报错。

但是突然之间,之前明明可以外网访问的树莓派连不上了。用内网地址还是可以正常SSH连接上。

首先,内网能连接,排除是树莓派以及SSH服务的问题。用树莓派直连光猫,问题依旧,之后把光猫改成桥接模式,树莓派直连R7000,问题还在。感觉就算端口转发有问题,也不可能两层同时出问题。
于是把方向转到网络上,tracert一下百度,妹妹的怎么在路由器之外,还有一层172.XX.XX.1。难道联通又把我搞回了内网?
于是,保修,联系师傅,师傅转客服,客服MM很爽快,电话都没挂,你再试试。。
So,问题解决。联通的锅。

但是这么一搞,光猫的直连Wifi没了。就算少了一层NAT,但是所有无线连接都得经过R7000上面的SS规则判断。直观上感觉满了一点。考虑后期再接上小米的那个路由器,维持一个直连的通道。

1
2
3
4
5
6
7
a[公网]---b[宽带光猫]
b[宽带光猫]---c[Netgear R7000]
c[Netgear R7000]--Merlin固件ss翻墙/端口映射---d[内网需翻墙终端]
c[Netgear R7000]---h[小米路由器]
d[内网需翻墙终端]---f[Amazon Echo]
d[内网需翻墙终端]---g[Raspberry Pi]
h[小米路由器]---i[内网不需翻墙终端]

鉴于Hexo的Mermaid流程图插件死活不能用,只能截图先放在这了。
enter image description here

0x02 问题2:树莓派的日常大坑

总算能够远程访问树莓派了,这下应该可以开始正题了。

由于要弄个私有Git服务器,首先就考虑Gitlab,这个应该是不要钱的里面做的最像GitHub 的。。

But。。

这东西貌似要求最好有4G运行内存,看网上其他人的日志也说树莓派的1G内存装上去会很卡,就算用那脆弱的SD卡弄2个G的虚拟内存上去也是卡卡的。

最逗的是一个大哥写了整套安装教程,最后来了一句,装上感觉卡,我又给卸了。

于是开始搜轻量的方案,首先搜到的是Gogs,貌似还是个国产的项目。查了查就发现了Gitea。Gitea是从Gogs项目Fork出来的,据说是不能忍受Gogs 的更新速度。网评似乎更新快了很多而且支持的Feature也多一些。

So,就这么愉快的决定了,就在树莓派上装Gitea好了。

然后就是三个小时大坑的开始。

主要按照这个链接一步一步来,先装Git和Mysql。

设置好树莓派上的Git专用账户,建立新的数据库,然后下载了Gitea的代码本体,建立服务,运行服务。用localhost:3000准备网页安装。。一切都很顺利。。

填进去数据库、账号密码等信息,install。

But。。

报错,“Specified key was too long; max key length is 767 bytes”。。

查了一下,貌似是数据库默认设置的字段是有767bytes长度限制的。而且只是MariaDB 10.1 版本会有的问题。之后的版本都更改了默认设置,限制3072bytes。

既然是版本问题,那第一反应是,我更新好了。。只需要MariaDB>10.2或者Mysql>5.7就好了。

But。。

树莓派源里的MariaDB是10.1版本是有原因的,因为他喵的MariaDB 10.2及以上就没提供树莓派Arm7的包,只有源码。

那么问题来了,树莓派Arm7的CPU,如果真的编译这么个东西,需要多长时间?

查了下,貌似十小时以上。。。

mmp。。哦不。是大写的MMP。。

那怎么办。。这装了一半难道放弃,让树莓派继续吃灰?

于是继续研究前人是如何跳坑的。

有人提供了个解决办法,其实安装是卡在数据表建立的,只需要把已经建立的表的属性改一下就可以了。

1
ALTER TABLE access CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

嗯,只需要把每次报错之后新增加出来的表都用这个命令改几个回合,就OK了

呵呵,最后我才改了十几个回合,每次还需要用Excel拼接一下SQL命令(论Excel的重要性)把不同的表名套进去,然后一次性运行。release这个表和其它的还不一样,需要引起来`release` ,数据库才能认。

于是,问题解决。Gitea在开始安装的四个小时后,成功安装了。

虽然痛苦,但是我得承认,这个过程并非没有收获。

1.了解到为啥树莓派会内置MariaDB而非Mysql。
2.MariaDB进去以后用use DATABASE_NAME 可以进入数据库,之后就可以用SQL语句查询、修改了
3.听电报群友说,可以用Docker来安装。于是去查了一下何谓Docker,嗯,果真高大上,是个虚拟的环境,想用什么就load什么。可是,问题来了,树莓派的这点硬件资源真的能很好的运行这个Docker么。。存疑,将来先在VPS上试一下再说。
4.自己还没从源码安装过任何Linux程序呢,改天需要试试。Apt/Pip/Yum instll不能总用,还是要深入的。

0x03 后记

装上Gitea之后就比较好过了。先是把小程序整个文件夹一股脑扔到了树莓派里。
然后想起,之前的黑莓Passport因为安全认证原因不能再Push到Github里了。这个Gitea或许可以?

试了一下,真的可以!

这下又可以在地铁上翻译英国的养猫百科了。翻完随时Push。爽!

不过Hexo不能用Mermaid画流程图这个事还是遗憾。

刚才又试过更新Material这个Hexo主题,失败了。。回头再说吧。

0x04 参考

1.Raspberry Pi Gitea – Installing Gitea on the Pi
2.Ref 1-Github Issue
3.Ref 2-Github Issue