星际蜗牛组 ITX 黑苹果+内网穿透+NextCloud

很久之前,就准备装一个小机箱,刚好最近流行星际蜗牛,于是入了一个机箱。

然后自己用H310 ITXG5400组了一台。

这里主要配置远程桌面和 NextCloud。

机箱升级方案

① 机箱做工非常不好,会割手,装机的时候最好带上手套。

② 对硬盘插拔没有硬性要求,可以考虑使用乔思伯 C2 或者 C3 机箱。

可以参考以下两篇文章。

  1. 强迫症患者给乔思伯C2塞进去四块3.5寸硬盘当NAS
  2. 终于中秋完成 乔思伯C2机箱+模组电源=绝配^_^能装下很多

③ 当然预算够的话,可以直接上 NAS 机箱。

硬件配置

产品名称 型号 价格
机箱 星际蜗牛 C 款 60 元
电源 台达 DPS-400AB 173 元
机箱风扇 Arctic F12 PWM 38 元
主板 昂达 H310SD3-ITX 399 元
CPU G5400 散片 400 元
CPU 散热 大镰刀 S950M 39 元
内存 x 2 集邦 8G DDR3 专用条 88 x 2 = 176 元
Sata 3.0 硬盘线 x 3 绿联 12.9 x 3 = 38.7 元
硬盘电源线一分二 绿联 15.9 元
螺丝 硬盘螺丝 + 主板螺丝 8 元
固态硬盘 西数 M.2 SATA 120G 137 元
机械硬盘 东芝 DT01ABA300V 529 元
HDMI 假负载 虚拟显示器EDID 12 元
合计   2025.6 元

配置 TeamViewer 作为远程桌面

HDMI 假负载的作用:远程桌面不接显示器,任然能够显示最高分辨率。

① 根据这篇文章 Mac 下使用 FRP 实现内网穿透 搭建好 FRP。

② 下载并安装 TeamViewer,这个作为预备方案,FRP 不工作的时候能够备用。

③ 配置TeamViewer开机自启。

配置 NoMachine 作为远程桌面

① 使用 NoMachine 作为另一个预备方案。

1
2
3
4
5
6
7
8
9
# 安装 NoMachine 之后,获取本机 ip 地址
ifconfig 
# 得到本机 ip 为 192.168.2.117
# 然后配置 frpc.ini, 增加这个配置
[remote_nomachine]
type = tcp
local_ip = 192.168.2.117
local_port = 4000
remote_port = 6400

② 使用NoMachine连接远程桌面,可以按照以下设置。

配置 Mac 自带屏幕共享

① 打开远程管理

② 然后配置好 frpc.ini 客户端配置文件。

1
2
3
4
5
6
# 配置 frpc.ini
[screen_sharing]
type = tcp
local_ip = 192.168.2.117
local_port = 5900
remote_port = 6900

③ 然后使用 Mac 自带的Screen Sharing即可访问屏幕共享。

配置 SSH 远程访问

① 首先开启远程登录。

② 然后配置好 frp 客户端。

1
2
3
4
5
6
# 配置 frpc.ini
[ssh_hackintosh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6022

③ 使用以下命令就可以远程 SSH 访问。

1
ssh -p 6022 username@frp_server_ip

配置 SMB 文件共享

1
2
3
4
5
[samba_hackintosh]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 6445 

搭建 gitlab

① 按照 使用 Docker 搭建 Gitlab 搭建好 Gitlab。

② 配置 frp 服务端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[common]
bind_port = 7000
auto_token=12345678

dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

# 配置穿透内网中的网站,必须设置,才能使用 http 和 htpps
# 这里避免端口冲突,可以设置为其他的端口
vhost_http_port = 18080
vhost_https_port = 18443

# 设置二级域名,在服务端配置 subdomain 即可
subdomain_host = streamelody.io

③ 配置 frp 客户端。

1
2
3
4
5
6
7
8
[gitlab]
type = http
local_ip = 192.168.2.117
local_port = 18080
use_encryption = true
use_compression = true
# 配置 subdomain 之后,可以使用 gitlab.streamelody.io 直接访问
subdomain = gitlab

搭建 NextCloud

① 使用 Docker 搭建 NextCloud。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 这里使用 MariaDB 作为 NextCloud 的数据库
docker pull nextcloud
docker pull mariadb

# 创建文件夹
mkdir -p ~/.docker/nextcloud/nextcloud
mkdir -p ~/.docker/nextcloud/apps
mkdir -p ~/.docker/nextcloud/config
mkdir -p ~/.docker/nextcloud/data
mkdir -p ~/.docker/nextcloud/theme
mkdir -p ~/.docker/nextcloud/db

# 启动 nextcloud 容器,--volume 可以配置一下需要挂载的本地磁盘
# 因为用 Docker 搭建的 nextcloud,需要对磁盘进行映射,后面才能访问到
# --volume /Volumes/SharedDisk/:/home \ 
# /Volumes/SharedDisk/ 为本地磁盘路径
# /home 为 nextcloud 容器中的文件夹路径
docker run --name='nextcloud' -d \
       --publish 28080:80 \
       --restart always \
       --volume ~/.docker/nextcloud/nextcloud:/var/www/html \
       --volume ~/.docker/nextcloud/apps:/var/www/html/custom_apps \
       --volume ~/.docker/nextcloud/config:/var/www/html/config \
       --volume ~/.docker/nextcloud/data:/var/www/html/data \
       --volume ~/.docker/nextcloud/theme:/var/www/html/themes \
       --volume /Volumes/SharedDisk/:/home \
       --volume /Volumes/Downloads/:/media \
       nextcloud:latest
# 启动 mariadb 数据库容器
docker run --name='mariadb' -d \
       --publish 3306:3306 \
       --restart always \
       -e MYSQL_ROOT_PASSWORD=root \
       --volume ~/.docker/nextcloud/db:/var/lib/mysql \
       mariadb:latest
       
# 进入 mariadb 容器中的命令行
docker exec -it mariadb bash
mysql -uroot -proot
# 创建 nextcloud 数据库
CREATE DATABASE nextcloud CHARACTER SET = utf8 COLLATE = utf8_general_ci;

# 配置 redis 缓存
# 使用 docker 搭建 redis 
docker pull redis 
mkdir -p ~/.docker/redis/data
docker run --name='redis' -p 6379:6379 --restart always -v ~/.docker/redis/data:/data -d redis:latest redis-server --appendonly yes

# 修改 配置文件
vim ~/.docker/nextcloud/config/config.php
# 在 config.php 中 ); 里添加下面的语句 
  'memcache.local' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'filelocking.enabled' => 'true',
  'redis' => array(
   'host' => '本地 ip',
   'port' => 6379,
),

② 通过 本机 ip:28080 访问 NextCloud,数据库密码root,数据库地址本机 ip:3306

③ 挂载本地磁盘,能够在 nextcloud 里显示。

启用External storage support

配置外部存储

然后主页就会显示本地磁盘了。

④ 配置 frp 客户端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 这里是 frp 客户端的配置
[nextcloud]
type = http
local_ip = 192.168.2.117
local_port = 28080
use_encryption = true
use_compression = true
subdomain = nextcloud

# nextcloud 需要配置信任的域名
vim ~/.docker/nextcloud/config/config.php
# 以下是示例
'trusted_domains' =>
  array (
   0 => 'localhost',
   1 => 'server1.example.com',
   2 => '192.168.1.50',
   3 => '[fe80::1:50]',
),

参考文章

  1. [家用数据中心]黑苹果+黑群晖+owncloud云同步一体整合
  2. 昂达H310SD3-ITX+i3 8100 Clover分享一下
  3. Mac 下使用 FRP 实现内网穿透
  4. [frp] 内网穿透神器搭建 萌新也看得懂的教程系列
  5. 搭建 docker 环境并用 docker 部署 nextcloud 网盘
  6. Nextcloud个人云存储绝佳选择:一键自动安装方法和云盘使用体验
  7. Docker Official Images
  8. Nextcloud15 优化心得