如何在Unraid上架设SWAG反向代理

Unraid 因为有了docker, 可以做很多NAS之外的事. 比如可以搭建自己的私有云NextCloud

阿瑟多福:如何在Unraid上用Docker安装NextCloud1 赞同 · 0 评论文章

但是问题来了, 如何设置才能实现从外网访问NextCloud呢?

最简单的方法当然是直接在路由器里设置端口映射,把80和443端口映射到NextCloud的IP地址. 这样做是可以,可是https就只能用自己生成的SSL证书, 而且万一443已经被别的服务占用了, 就只能用不同的端口. 很不方便.

用反向代理就可以完美解决这个问题, http://linuxserver.io把letsencrypt, nginx, fail2ban等集合到一个docker上叫做SWAG. 不费吹灰之力就可以架设一个反向代理服务器. 这样路由器只负责映射80, 443端口去SWAG, 之后的一切任务就可以交给它搞定.

使用这个反向代理,需要满足两个条件:

有一个外网IP地址。这个是必选项,没有外网IP啥也做不成有一个自己的一级域名,这个是可选项,现在有好多免费的DDNS服务都会给你一个二级域名。但是现在域名很便宜,有了自己的域名自由度更高。

安装跟一般docker应用一样,去apps里搜索swag,点安装就可以:

配置也很简单,主要的注意事项是:

要给swag一个固定的IP地址, 这样以后在路由器上设置端口映射的时候就不用改来改去了。如果你有自己的域名, 可以选择用DNS来验证域名所有权,默认支持阿里云, cloudflare, digitalocean这些大的服务商的api key, 可以在dns-conf目录下填上api key, 我用的是cloudflare.填好之后swag就会自动从letsencrypt生成和更新你的ssl证书了,以后你这个域名下的所有服务都可以用https。

3. 如果用的是cloudflare的话, 可以安装一个插件,在DOCKER_MODS参数里面填:

linuxserver/mods:swag-cloudflare-real-ip 这样就可以在服务器段记录访问者的真实IP地址了。

SWAG运行起来之后,就可以设置一下nginx,把它用作nextCloud的反向代理。设置跟普通的nginx设置是一样的,只要在/appdata/swag/nginx/site-confs 里面加上nextcloud的设置文件就行:

server { listen 443 ssl; root /config/www; index index.html index.htm index.php; server_name nextcloud.mydomainname.com; include /config/nginx/ssl.conf; client_max_body_size 0; location / { include /config/nginx/proxy.conf; proxy_max_temp_file_size 2048m; proxy_pass ; } }

这样反向代理就设置好了,下一步要把你域名的dns记录改一下, 让它指向你的公网IP。

最后要在你家里的路由器上设置端口转发, 比如swap的IP地址是192.168.1.200, 那就要在路由器上设置把所有的80 和443的请求都转发到192.168.1.200上。

大功告成! swap会自动获取和更新你的https证书, 你只需要输入你的域名就可以在任何地方访问你自己的私有云了!