告别,为了新的开始:记一次迂回的返乡行

起因 我不知道此时的我正带着怎样的心情写这篇游记,因为它本来算不上游记——返回自己的家乡怎么能算旅行呢?但当我终于站在凌晨一点的芜湖站东广场时,我才明确意识到:终于回家了。 一切开始于一周前。在一个阴郁的下午,我独自走在成都大熊猫基地的竹荫路上,漫无目的地思考着——关于工作、关于婚姻,甚至关于一些无关紧要的东西。大熊猫并没有太吸引我,毕竟都是长相相似的生物,看一会、拍几张照就会觉得无聊。所以这时就非常适合将脑子装满,不管装的是什么。 这场思考的结果,就是决定辞职。虽然单就职业发展前景来说,目前的这份工作非常不错。但其较低的起薪,以及长期出差的性质使得我不得不面对“工作与家庭平衡”的问题。如果我选择回到老家附近的省会城市,将会有一份起薪较高、无需出差的工作等着我。于是在经过激烈的思想斗争以后,我得出结论:所谓的“发展前景”都是相对的,即使回到老家,也不意味着完全没有发展前景,但与生活本身相比,目前这份工作的“前景”不值得我继续追求。如果努力赚钱的最终目的是为了生活得更好,那当自己完全另有选择余地的情况下,不应该为了挣钱而放弃生活本身,这是本末倒置的做法。 因此我决定,4月15日从重庆返回深圳,办完最后的工作交接手续后,再经珠海飞回老家安徽。至于为什么要途径珠海,完全是因为最后返程的机票无法报销。为了节省费用,我购买了相对较为便宜的珠海飞合肥的航班。而在此前的绝大多数时候(公司报销机票的时候),我都是直接从深圳飞往南京,而后者才是最快捷的路线。 启程 说做就做。平日里养成的“极简生活“的习惯此时显出了它的威力——我在重庆和深圳两个住所的所有个人物品加起来,也不过一个20寸旅行箱外加一个双肩背包的体量。因此我得以在短短一天半的时间里,清空两个住所,跨越三千多公里的路程返回故乡。 办好该办的手续,已经是上午十点。我背着包走出公司大楼,打了辆车回公寓。上车前,我给身后的公司大楼拍了可能是最后一张照片。 我们的公寓是公司为实习生免费提供的四人间宿舍,距公司约半小时车程(坐公交要一小时才能到达)。到公寓后,我火速上楼取下旅行箱,并在前台办理了退押金手续(入住宿舍时缴了一百元押金)。然后步行至临近的地铁站,经一次换成后,抵达“蛇口港”站。 出站后步行了大约二十分钟,终于抵达此次返乡行的第一站——蛇口邮轮中心。这是个内外装修都很别致的码头,内部构造与高铁站或机场非常相似:一楼是进站口,二楼以上是餐饮或休息区。取票方式也很简单,将购票时登记的身份证号码对应的身份证放在进站口附近的自助机器上即可。 我所乘坐的航班是从蛇口港往横琴港的客轮——迅隆号。仓位分普通仓和头等舱两种,价格只相差三十元。头等舱不仅客人较少,而且座位更舒适、视野也更好。上船后我发现了一个很有趣的标牌,上面写着“招商局,创办于1872年”的字样,瞬间给我一种梦回大清的感觉。 航程经过了港珠澳大桥和澳门友谊大桥,并从珠海与澳门间的狭窄航路穿过。期间手机信号一度飘到澳门,还收到了海关发送的警示短信。虽然短短几分钟的时间不足以使我的行程码变红,但这短暂的“出境”仍使我感慨万千。经过一个多小时的航行后,客轮在珠海横琴港稳稳靠岸。很久之前就听人说起珠海环境之优美、空气之纯净,这回我总算亲身感受到了这点。 曲折 但就在我带着愉悦的心情走出美丽的横琴码头时,收到了航班延迟三小时的短信。今年一月的时候,海航正式传出破产重组的消息,当时我还产生了“眼看他起高楼,眼看他楼塌了”的感慨。但这航班一口气延迟三小时,并且航空公司又刚好是海航的时候,我便又有了“时代的尘埃落在个人头上”时的无措感。 由于时间瞬间变得无比宽裕,因此我也放慢了赶路的脚步,一边欣赏珠海沿途的风景,一边坐公交往机场大巴站去。离横琴港最近的机场大巴车站位于横琴假日酒店。这是一座外观装修得很像童话城堡的酒店,虽然我没有入住过这家酒店,但单看外部环境感觉很适合度假时居住。 在酒店一楼等了近四十分钟,终于等来了机场大巴。在去机场的途中,大巴会在澳门大学横琴校区短暂停留。这所大学与澳门隔海相望,虽然地址位于珠海,但行政上归澳门管辖。无论从哪一方面来说,这也都算“一国两制”的典范了吧。于是在去机场路程的后半段,我便与一群澳门大学的学生同行。这些人虽然还是学生,但已经沾染上“在大巴车上外放看视频”的社会恶习。 到达珠海金湾机场后,我又无所事事地分别在肯德基和候机厅等待了两个多小时。期间广播曾略带歉意地表示,要为所有被延误了的海航乘客发放晚餐。但当我看到候机厅邻座的中年男人手拿一盒热腾腾的盒饭套餐悻悻然归来时,便放弃了这“免费的晚餐”。相比而言,还是飞机上的“海南特色鸡肉粉”更吸引我。 等到晚上七点半,广播里终于通知我们准备登机。我于是重新拖起行李箱,排进长长的队伍里,等待登上这趟原本应在三小时前起飞的航班。 尾声 除了上海虹桥机场以外,几乎所有我去过的城市的机场都位于偏僻的郊外。这或许符合某些经济学原理,但实在与乘机人的便利性背道而驰。可能也是因为考虑到了便利性这个问题,合肥新桥机场设置了专门的城市班车,定时将旅客送往火车站等市内地址。晚上九点半,飞机缓缓着陆以后,我便跟着人群,火速前往机场到达大厅外的城市班车上车点。花十五块钱买了张去合肥火车站的票。班车等到十点才“准时”出发,晃晃悠悠到十一点零八分才到达距离合肥火车站还有两百多米的地方。 是的,你没有听错。目的地为合肥火车站的班车居然没有真正进入合肥火车站,而是在离火车站老远的地方把我们放了下来。当天晚上最后一班火车的发车时间是十一点二十一分,这也就意味着,我要在十三分钟内,拖着箱子和背包,跑过两百多米的距离,过安检,上楼,再找到正确的站台后挤进火车。虽然以上过程非常艰难且疲惫,但我好歹在火车车门关上的前一秒成功上了车。 由于时间过晚,我只能坐绿皮车回家。因此我在满是难闻气味的绿皮车车厢里又待了一个半小时。最终,我终于在凌晨一点回到了芜湖。

2021-04-16 · Mason

Openwrt Luci Openvpn 服务器多设备同时接入

我们日常使用的 Openwrt 软路由系统几乎都集成了 Luci 界面,它不仅可以为用户提供便利的可视化后台管理界面,还在各路大神的贡献下,适配了众多简单易用的图形化 App。Luci-app-openvpn-server 就是众多 Luci 应用中最常用的 VPN 服务器之一。 简单来说,luci-app-openvpn-server 就是 Openvpn 服务器端的 Luci 界面版本。有了它,你就可以告别难搞的命令行,通过图形化的网页直接配置你的 Openvpn 服务器端。结合各主流平台的 Openvpn 客户端软件,你可以随时随地接入自己家里的局域网,实现内网访问或文件传输等功能。 正常情况下,只要按照 Luci 界面的提示填写相应的配置信息,即可成功运行 Openvpn 的服务器端。此时只要点击“一键下载.Ovpn 文件”按钮,再将下载下来的配置文件直接导入 Openvpn 客户端软件即可开始使用。但 luci-app-openvpn-server 的默认配置支支持同时登陆一个客户端,当有第二个客户端尝试接入时,先前接入的第一个客户端就会被强制断线。然而在日常使用的过程中,多设备同时接入的情况是十分常见的,那么怎样才能使 luci-app-openvpn-server 可以同时接入多个设备呢? 其实,Openvpn 的服务端是支持多设备同时接入的。根据 Github 上这个 Issue 中的介绍,我们能够得知,只要在 Openvpn 的配置文件中加入一行代码,即可开启 Openvpn 的多设备同时接入功能: 具体如何操作呢?首先,用 ssh 工具登陆你的 Openwrt 软路由。具体的工具及方法可自行搜索,我日常使用的是微软官方发布的 Windows Terminal 终端工具。成功登陆 ssh 后,输入以下命令开始编辑 Openvpn 的配置文件: vim /etc/config/openvpn 如果没能成功打开配置文件的编辑界面,很可能是因为你的 Openwrt 系统没有安装 vim (一款命令行文本编辑器)。至于 vim 的安装方法,还请自行搜索,本文不再赘述。 进入配置文件的编辑界面后,按键盘上的 I 健进入文本编辑模式,将光标移到配置文件末尾,将以下代码复制粘贴到配置文件最后一行。 option duplicate_cn '1' 编辑完成后,按键盘上的 ESC 健,再依次输入以下命令保存并退出编辑器: ...

2021-04-13 · Mason

利用 Docker 搭建 Trilium Notes 服务器

由于平时需要处理大量结构复杂的内容,并且各内容板块间还存在相互交叉的引用关系,因此长久以来我一直在寻找一款既能满足需求,又简洁易用的内容管理工具。印象笔记或 OneNote 等笔记类服务似乎最为常见,但一来,将所有的私人内容存储在商业公司的服务器上总会让我缺乏安全感;二来这些软件要么不够轻便,要么对重要功能额外收费,因此一直都无法让我十分满意。 两年前,我接触到一款叫做 Notion 的跨平台软件,无论是功能还是界面都令我十分满意,但它的价格并不便宜,我毕竟不是靠内容吃饭的职业创作者,无论如何也不愿为一款笔记软件搞月付。另外,Notion 仍然无法实现在牢牢掌控内容数据的同时实现便捷的多端同步,这也是一个不大不小的遗憾。 直到今天,偶然在少数派这篇文章的介绍下了解到一个叫 Trilium 的 Github 开源项目,几乎完美地满足我的所有需求。首先,它是一个开源项目,支持自建笔记服务器,可以让我在牢牢掌控笔记控制权的同时实现多端同步;其次,它界面简洁,非常轻量,甚至可以丢掉客户端,完全实现网页端访问;最后,它完全免费,这点非常重要。 自从买了威联通 NAS 后,我越来越倾向于将自己的各种数据保存在 NAS 上,再通过各类开源软件实现多端同步。这样既能保证数据安全和个人隐私,又能方便地管理自己的文件和数据。用几千元的成本和少许的电费换得对个人数据的完全掌控,我认为是值得的。因此,在意识到 Trilium 提供开源的服务端软件后,我立刻开始本地服务器的搭建工作。 Trilium 的官方文档中提供了通过 Docker 安装 Trilium Server 的具体方式。但由于文档为全英文,且只提供了 SSH 命令安装的方式,一些新手阅读起来可能有些困难,因此本文将以图形化的方式简单陈述 Trilium Server 的安装方式。 首先,在你的 NAS 上安装 Docker 套件(在威联通的 QTS 中叫做 Container Station)并打开它。 进入“创建”,并在搜索框中搜索 Trilium,找到 zadam/trilium,点击右侧的“安装”。 在弹出的创建窗口中,点选“高级设置”,首先在“网络”选项卡中设置 Trilium 的端口转发,trilium 的默认 web 界面默认端口是 8080,因此 Container 的端口必须写 8080,而映射出的主机端口则可以根据自身需求填写。为了记忆方便,我倾向于内外端口一致的设置,即主机端口同样设置成 8080,但如果你的 NAS 的 8080 端口已被其他程序占用,请填写其他端口。 接着,在“共享文件夹”选项卡中,将一个共享文件夹挂在到 Trilium 的容器中。容器中的挂载路径必须写 /trilium-data,而本机共享文件夹则可根据自身需求进行选择,注意挂载共享文件夹的权限必须为读取和写入均有。 上述设置完成后,点击“创建”按钮,系统会自动下载镜像文件并根据你的配置安装容器。容器安装完成后,便可通过在浏览器中输入 NAS IP/端口的方式访问 Trilium 的 web 界面。初次使用 Trilium 时要进行一些简单的初始化设置,例如创建用户名和密码等。虽然界面只有英文,但非常简单,这里不做赘述。 ...

2021-03-20 · Mason

身后,岸边,安徽全椒县

此刻的我,正坐在巴南工业区的某间宿舍里,对着充满指纹的笔记本电脑,回想着在这艰难的一年里,任何能够使我留恋的事物。 按照惯例,我在写狗屁不通的所谓年终总结时,会戴着耳机,单曲循环一首多少能够令我或感慨、或亢奋的音乐。而今年,我一直在听的,还是李志在2018年跨年演唱会上的那首不插电版的《热河》。说来吊诡,这首歌明明叫“热河”,写的确是南京。就像我在上海时每天都会经过顺义路,却一次也没去过北京。 不知从什么时候起,南京已经成了“家乡”的代名词。这或许是因为每次放假回家,我都会先飞到南京禄口机场,再坐动车回芜湖;或许是因为每次跟人介绍自己家乡时,都会不自觉地和对方说 “我老家,安徽芜湖,就在南京旁边”;又或许是因为每次提起“中国”时,我都会想起南京。 不是与我同年毕业的人根本不会知道,新冠疫情之后,在中国找工作有多难。尽管我一度非常想在上海定居,但无比艰辛的求职历程使我伤心透顶,以至于在我登上去深圳的飞机时,没有一丝留恋,连头也没回一下。当然我对大众刻板印象中的“上海人”没有任何看法,也不觉得上海是一座多么难以融入的城市。我只是单纯地觉得,或许只有像深圳这样缺乏传统的地方,才更加适合我生存。毕竟我不喜欢历史,也讨厌传统。 国浩是家好律所,因为它在我最无助的时候收留了我,并为我提供了一个足以磨练技艺的好平台。虽然一心想做诉讼的我,已经阴差阳错地踏入了非诉律师的道路,但如果放弃扶贫济困的理想,一心只想着过上体面生活的话,律师不过是门谋生的手艺而已。所以我早就放弃幻想了。自从我背着书包、拖着箱子来到南方的这片文化沙漠上的那一刻起,青春就已经随风而去了。 一年前的今天,我正发着40度的高烧,在谢春花的演唱会上瑟瑟发抖。而就在同时,李文亮发出了那条足以载入人类史册的微信消息。之后,哨声响起,整个世界都变了。我依稀记得,谢春花那场演唱会的主题是“2020,请对我好一点”。好吧,它确实对我挺好,至少在它最后的两个月里,我的人生多少出现了一丝转机。 夜深人静时,我时常在心里咒骂那些给我们这代人留下一片狼藉的父辈们。这个国家已经在她的“接班人”身上压了太多重担,以至于完全不需要人流和结扎,新生儿的数量也在逐年下降。这或许会挫败杜蕾斯的股价。不过也好,我向来不喜欢垄断资本,如果杜蕾斯具有垄断型的话。但往后又该怎么办呢?至少我想不到出路。可能对于个人来说,逃离索多玛才是上策。奈何这时又来了新冠肺炎,使得国与国之间那条最后的虚伪的友好纽带,也被拦腰截断。 明天,我将从巴南出发,坐上两个小时的轻轨,去渝北坐飞机回家。当然,芜湖没有机场,我的目的地仍然是南京。但对南京来说,我的老家在身后,在岸边,在安徽全椒县。 2020年12月31日于重庆巴南

2020-12-31 · Mason

通过群晖与 Openwrt 软路由实现自动端口映射

要在家庭或公司的局域网以外(俗称外网)访问家中或公司内网的设备(例如 NAS),通常有两种方式。第一种方式是在局域网的路由器上架设一个 VPN 服务器,再将外网的终端设备作为 VPN 客户端接入内网。在这种情况下,VPN(虚拟专有网络)充当了网线的角色,即接入 VPN 的外网设备,就相当于拉了一根通往内网的网线。因此在 VPN 网络中,即使这根网线是虚拟的,也能实现如同身处局域网内一般的访问体验。 第二种方法则更为简单直接,即通过动态 DNS 服务将一个域名绑定到局域网服务器的外网 ip,再议端口映射的方式将内网设备暴露在公网中,以供外网设备连接。由于众所周知的原因,我国境内的 VPN 连接并不稳定,因此大多数人都会选择第二种方式进行内网穿透。 在路由器上进行端口映射的操作非常简单。这里以 Openwrt 系统为例,仅需在网络 - 防火墙 - 端口转发中新建转发规则,将相应内网设备的端口映射为外网端口即可。 然而,由于内网设备的内部 ip 地址会随着 DHCP 租约的更新而不断变化,尽管我们可以通过 IP/MAC 绑定的方式人为地固定内网设备的 ip 地址,但实践证明这种方式并不稳定。因此,我们经常需要手动修改端口映射规则,这就使得相关的维护工作变得非常繁琐。如果我们长期在外,无法接入内网环境,上述规则修改的工作就很难进行。这时,我们就需要用到 UPnP(通用即插即用)服务。顾名思义,它是一种自动配置端口映射的工具。只要服务器和内网其他设备同时开启 UPnP 服务并稍加简单的配置,即可一劳永逸地解决端口映射的问题。 以群晖和 Openwrt 系统为例,我们首先需要在 Openwrt 路由器上安装并开启 UPnP 服务。 然后,登陆群晖的管理后台,在控制面板 - 外部访问 - 路由器配置选项卡中,选择“设置路由器”。此时系统会自动检测网络环境以及路由器型号与配置,不出意外的话,整个过程能够由系统自动完成,无须人工配置。之后,点击“新增”按钮,并根据自己的需求选择要转发的应用和端口,再点击“保存”即可。 最后,我们可以回到路由器后台的 UPnP 页面,查看已经被系统自动添加好的端口映射规则。值得注意的是,国内的网络运营商一般会禁用个人和家庭宽带的 443 和 445 端口(前者是 https 的默认端口,后者是 smb 服务的默认端口),因此,即使我们在 UPnP 服务中添加了上述两个端口的自动映射,也无法实现 443 和 445 端口的外网访问。此时,就需要我们在防火墙的端口映射中手动进行端口映射,即将 443 和 445 两个内网端口映射到外网的非 443 或 445 端口(如 444 和 446,全凭个人喜好)。这样,我们才能绕过运营商的封锁,成功进行上述两个端口的外部访问。 ...

2020-09-14 · Mason