自建Synology NAS可用的个人s3云

本教程使用minio开源软件以及caddy前端进行s3搭建,该云可用于synology中cloudsync的同步任务以及hyperbackup的备份任务。
系统使用的是Centos8

以下是minio的官方配置指南:
https://docs.min.io/cn/minio-server-configuration-guide.html

安装及配置caddy

这边配置将caddy运行在80和443端口,并生成对应域名证书以供minio使用。
并将指定域名发送的流量转发到minio的工作端口(26900)。
有关于详细的caddy配置教程请网上自行搜索。

下载caddy

这边提供的是caddy v1.0.3

wget http://m2.zhugh.com:26512/test/caddy103.tar.gz

mkdir /usr/local/caddy /etc/caddy

tar -zxvf caddy103.tar.gz -C /usr/local/caddy/

配置caddy服务

vi /etc/systemd/system/caddy.service

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network.target

[Service]
User=caddy
Group=caddy
Environment=CADDYPATH=/var/lib/caddy
EnvironmentFile=-/etc/caddy/caddy.conf
ExecStartPre=/usr/local/caddy/caddy -conf /etc/caddy/caddy.conf -validate
ExecStart=/usr/local/caddy/caddy -conf /etc/caddy/caddy.conf -root /tmp -agree
ExecReload=/usr/bin/kill -USR1 $MAINPID
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

systemctl daemon-reload

mkdir -p /var/lib/caddy/acme /var/lib/caddy/locks /var/lib/caddy/ocsp

useradd -r -d /var/lib/caddy -s /sbin/nologin caddy

chown -R caddy:caddy /var/lib/caddy /var/lib/caddy/*

vi /etc/caddy/caddy.conf

其中s3.zhugh.com backup.s3.zhugh.com sync.s3.zhugh.com
分别为minio的工作域名、容器backup的工作域名、容器sync的工作域名

s3.zhugh.com backup.s3.zhugh.com sync.s3.zhugh.com {
 proxy / https://localhost:26900 {
    tls test@testmail.com
    insecure_skip_verify
    header_upstream X-Forwarded-Proto "https"
    header_upstream X-Forwarded-Host {host}
    header_upstream Host {host}
  }
}

启动caddy服务

service caddy start

配置caddy开机自启

systemctl enable caddy

安装及配置minio

这边配置minio使用s3.zhugh.com访问,服务工作在26900端口,并配置使用容器backup和sync。

下载minio

wget http://m2.zhugh.com:26512/test/minio

chmod 755 minio

配置minio服务

mv minio /usr/local/bin/

vi /etc/default/minio

配置文件中的MINIO_VOLUMES是S3所用的存储路径
配置文件中的MINIO_OPTS是minio服务运行的端口
配置中的MINIO_ACCESS_KEY是登录minio使用的ACCESS_KEY
配置中的MINIO_SECRET_KEY是登录minio使用的SECRET_KEY
配置中的MINIO_DOMAIN是minio服务的外网域名地址

# Volume to be used for MinIO server.
MINIO_VOLUMES="/data"
# Use if you want to run MinIO on a custom port.
MINIO_OPTS="--address :26900"
# Access Key of the server.
MINIO_ACCESS_KEY="test"
# Secret key of the server.
MINIO_SECRET_KEY="12345678"
# Virtual Host
MINIO_DOMAIN=s3.zhugh.com

vi /etc/systemd/system/minio.service

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=root
Group=root

EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

systemctl daemon-reload

cd .minio/certs/

这边crt和key的软连接地址需要按实际使用域名来修改:

ln -s /var/lib/caddy/acme/acme-v02.api.letsencrypt.org/sites/s3.zhugh.com/s3.zhugh.com.crt public.crt

ln -s /var/lib/caddy/acme/acme-v02.api.letsencrypt.org/sites/s3.zhugh.com/s3.zhugh.com.key private.key

启动minio服务

service minio start

配置minio开机自启

systemctl enable minio

外网域名配置

需要将外网域名s3.zhugh.com backup.s3.zhugh.com sync.s3.zhugh.com全部指向配置的这台设备的公网ip。

如果配置正常,访问caddy的配置域名可以看到以下界面:

建立对应的backup和sync容器后就可以使用cloudsync或者hyperbackup链接使用了:

注意事项

1.如果后期需要添加其他名称的容器,需要在caddy的转发域名配置文件以及外网域名解析中额外增加对应的记录,例如增加test容器,以s3.zhugh.com为例就需要在caddy的转发域名配置文件以及外网域名解析中额外test.s3.zhugh.com的解析。

2.如果需要将文件同步到容器的子文件夹中,需要先在ssh底层建立一个文件夹并且通过minio网页端上传一个文件到此子文件夹中,否则cloudsync会提示云端文件夹不存在。